SQL-инъекция в DDOS-боте Illusion

Обнаружением данной уязвимости я обязан Ragnar’у, собственно по его просьбе сейчас и пишу этот пост с целью объяснения сути самой баги. Однажды он постучал мне в асю и попросил поковыряться в web-админке DDOS-бота Illusion – видимо хотел угнать чей-то ботнет =) Предложение я принял и через некоторое время нашел уязвимость, а именно SQL-инъекцию. Так как основной функционал админки был недоступен для неавторизованных пользователей (а пароль хранился прямо в исходнике =\), то свои надежды я возложил на интерфейс для ботов, что и принесло мне успех. Итак, рассмотрим, какие значения параметров скрипт ожидает от ботов и в чем заключается уязвимость.

Javascript Hijacking

Авторы: Brian Chess, Yekaterina Tsipenyuk O’Neil, Jacob West ({brian, katrina, jacob}@fortifysoftware.com)
Дата: 12 марта 2007 года
Перевод: Raz0r
Оригинальная статья: _http://www.fortifysoftware.com/servlet/downloads/public/JavaScript_Hijacking.pdf

Возрастающее количество современных Веб-приложений, часто называемых AJAX-приложениями, используют JavaScript как средство передачи информации. Данная статья описывает уязвимость, которую мы называем JavaScript Hijacking (hijacking – нападение, ограбление), позволяющую злоумышленникам получать доступ к конфиденциальной информации, содержащуюся в JS-сообщениях. Атака проводится благодаря тэгу <script>, с помощью которого возможен обход Same Origin Policy. Традиционные веб-приложения неуязвимы к описываемой атаке, так как не используют JS как метод передачи информации.
Мы исследовали 12 популярных AJAX-фреймворков , включая 4 серверных набора утилит – Direct Web Remoting (DWR), Microsoft ASP.NET Ajax (aka Atlas), xajax и Google Web Toolkit (GWT) – и 8 исключительно клиентских библиотек – Prototype, Script.aculo.us, Dojo, Moo.fx, jQuery,Yahoo! UI, Rico, и MochiKit. Мы определили, что среди них лишь в DWR 2.0 включены механизмы по предотвращению JavaScript Hijacking. Остальная же часть не предоставляет какой-либо защиты. Большинство самостоятельно написанных фреймоворков также уязвимы.