RedirectPage - Cross Site Scripting во всех версиях

Автор Gnostis, 05 декабря 2013, 14:49:01

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Gnostis

XSS (англ. Сross Site Sсriрting — «межсайтовый скриптинг») — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. Является разновидностью атаки «внедрение кода».
Wikidepia

При аудите безопасности сайта (кто проводил, не скажу, что бы не заниматься рекламой, если интересно в личку), в одном из скриптов была обнаружена подтвержденная уязвимость Сross Site Sсriрting.
Для владельцев форумов это ни чем не грозит, в отличии от их пользователей.

Причина: Недостаточная обработка параметров.

Пример эксплуатации уязвимости
http://www.simplemachines.ru/go.php?url=<script>alert('ru_javascript');</script>
Аналогично работает при включенном шифровании, дополнительно шифрование base64 упрощает эксплуатацию уязвимости, так как скрываются передаваемые параметры
/go.php?url=PHNjcmlwdD5hbGVydCgncnVfamF2YXNjcmlwdCcpOzwvc2NyaXB0Pg==

Защита:
в файле go.php после строки
if($modSettings['RedirectPage_encode']) $link = html_entity_decode(base64_decode($link));
вставить строку
$link = htmlspecialchars($link);

Возможно что данную уязвимость уже давно используют, читаем логи своих серверов.

digger®

Цитата: Gnostis от 05 декабря 2013, 14:49:01Пример эксплуатации уязвимости
http://www.simplemachines.ru/go.php?url=<script>alert('ru_javascript');</script>
Аналогично работает при включенном шифровании, дополнительно шифрование base64 упрощает эксплуатацию уязвимости, так как скрываются передаваемые параметры
/go.php?url=PHNjcmlwdD5hbGVydCgncnVfamF2YXNjcmlwdCcpOzwvc2NyaXB0Pg==
Хоть кому-то удалось воспроизвести?

iaroslav

Мне удалось.
Реальне окошко с надписью ru_javascript всплывает.
При подсказанной правке - перестаёт.
Кстати, а вот так не правильнее?

if($modSettings['RedirectPage_encode'])
{
$link = html_entity_decode(base64_decode($link));
$link = htmlspecialchars($link);
}


iaroslav


Gnostis

#5
Извините что долго не отвечал, времени не было.
Цитата: digger® от 13 декабря 2013, 16:36:31
Хоть кому-то удалось воспроизвести?
Ошибка воспроизводилась что у меня на форуме, что на http://www.simplemachines.ru, но как я понимаю администрация оперативно внесла исправления, так как тема некоторое время висела на модерации, этого времени хватило.

Вот пример действующей уязвимости:
http://2netlodge.com/go.php?url=PHNjcmlwdD5hbGVydCgncnVfamF2YXNjcmlwdCcpOzwvc2NyaXB0Pg==
http://samand.org/go.php?url=PHNjcmlwdD5hbGVydCgncnVfamF2YXNjcmlwdCcpOzwvc2NyaXB0Pg==
http://www.shatki.ru/smf/go.php?url=PHNjcmlwdD5hbGVydCgncnVfamF2YXNjcmlwdCcpOzwvc2NyaXB0Pg==
...
ну и так далее, просто смотрим кто отписывался в этой теме и проходим по ссылкам:
http://www.simplemachines.ru/index.php?topic=10393.0


Mavn

Цитата: digger® от 13 декабря 2013, 16:36:31Хоть кому-то удалось воспроизвести?
Олег, я сразу все пофиксил поэтому здесь не воспроизводится
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Сапожник

что-то я у себя и так и сяк... не воспроизводится :)
Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/


Сапожник

Цитата: digger® от 16 декабря 2013, 23:41:31Должна обязательно быть включена задержка редиректа, при немедленной не получится.
Спасибо :) А то я уж испугался, почему у всех работает, у меня нет :D
Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/

digger®

Цитата: Gnostis от 05 декабря 2013, 14:49:01
Защита:
в файле go.php после строки
if($modSettings['RedirectPage_encode']) $link = html_entity_decode(base64_decode($link));
вставить строку
$link = htmlspecialchars($link);
Такое решение ломает ссылки в которых передаются параметры через &