SiXSS


SiXSS (англ. Sql Injection Сross Site Scripting — «Межсайтовый скриптинг при наличии SQL-инъекции») — тип атаки на уязвимые интерактивные информационные системы в вебе; внедрение выполняемых на клиентском компьютере вредоносных скриптов в выдаваемую системой страницу посредством внедрения кода в SQL-инъекцию. Как правило, данная уязвимость возникает на стороне клиента, при наличии вывода принтабельных полей посредством выполнения SQL-инъекции.

Атака представляет собой межсайтовый скриптинг (XSS), совершённый через «отравленный» запрос. Ущерб от неё как от обычного XSS: может украсть куки пользователя, в том числе идентификатор сессии и другую уязвимую информацию, сохранённую на клиенте, выполнять команды от имени пользователя.

Как и любой XSS, SiXSS может быть отражённым (вредоносный скрипт хранится в запросе) и хранимым (вредоносный скрипт хранится в БД).

Как видно, результаты запроса к MySQL должны будут передаваться пользователю. Можем просмотреть данную html-страницу, но на ней мы не увидим ничего особенного. Зайдя на страничку и кликнув по ссылке, пользователь получит приглашение на авторизацию.

Проблема появляется в случае, когда некоторый текст из БД поступает сразу в HTML страницу. Если мы попытаемся использовать классическую атаку SQL-Injection, мы получим некоторую информацию о SQL-сервере и ничего больше. Но появляется уязвимость на стороне клиента. Используя UNION SELECT злоумышленник сможет внедрить произвольный текст.

Для того, чтобы обойти включенные gpc_magic_quotes, используем "0xXX" HEX вместо текста: mysql] select HEX('[ script]alert(“SiXSS”);[/script]');