В шаблоне OpenStore нашел файл catalog/view/theme/openstore/stylesheet/styles/style-switcher.php с содержимым: PHP: <?php $templatestyle = $_GET['templatestyle']; setcookie("templatestyle", $templatestyle, time()+604800,"/"); if(isset($_GET['js'])) { echo $templatestyle; } else { header("Location: ".$_SERVER['HTTP_REFERER']); }?> Перехожу по ссылке catalog/view/theme/openstore/stylesheet/styles/style-switcher.php?templatestyle=../../../../../../../index.php? В cookies переменная, принимает следующий вид templatestyle="..%2F..%2F..%2F..%2F..%2F..%2F..%2Findex.php%3F" В файле header.tpl темы код PHP: <?php if(!empty($_COOKIE['templatestyle'])) $templatestyle = $_COOKIE['templatestyle']; else $templatestyle = $this->config->get('icetheme_openstore_style'); ?><link id="stylesheet" rel="stylesheet" type="text/css" href="catalog/view/theme/openstore/stylesheet/styles/<?php echo $templatestyle; ?> .css" /> И наконец перейдя на главную страницу вижу Код: <link id="stylesheet" rel="stylesheet" type="text/css" href="catalog/view/theme/openstore/stylesheet/styles/../../../../../../../index.php? .css" /> но все символы преобразуются в html сущности Код: <link id="stylesheet" rel="stylesheet" type="text/css" href="catalog/view/theme/openstore/stylesheet/styles/"/><script>alert('xss')</script><" .css" /> Можно ли как-нибудь обойти или обмануть преобразование в сущности? Или здесь xss даже не пахнет? --- Добавлено, 1 окт 2013 --- Нашел уязвимость в одном из модулей сжатия стилей. Перед выводом страницы модуль ищет в коде стили сжимает компрессором и объединяет их. Потом заменяет их ссылкой на упакованный файл. Строка "templatestyle=../../../../../../../config.php?" сработала как надо, файл config.php был сжат вместе со стилями и я сразу получил все свои пароли в сжатом файле)) Только вот модуль оказался мой)) Я так думаю, что обход htmlspecialchars не представляется возможным. По крайней мере в моей реализации. Ссылка снизу как раз на эту тему, очень помогла, очень много полезного.