![]() |
Перенос эксплойтов с perl на JavaScript на примере эксплойта от RST/GHC для IPB <= v.
Перенос эксплойтов с perl на JavaScript на примере эксплойта от RST/GHC для IPB <= v.2.1.5 Автор: kuzya [INTRO] Здравствуйте. В данной статье я решил рассмотреть тему, возможно граничащую с паранойей (как может показаться на первый взгляд) – перенос эксплойтов с perl на JavaScript. Конечно же первый вопрос будет – "Зачем всё это нужно?". Как мне кажется, с помощью эксплойтов написанных на JS можно дать не плохую базу для веб-червей которые будут распространятся по средствам вставки своего кода в заражённые страницы. Соответственно, при таком раскладе, роль атакующего будет играть не о чём не подозревающий пользователь, просто зашедший на заражённую страничку. Так же, имея эксплоит на JS, можно, например, устраивать бесконечный дефейс какого либо уязвимого сайта/форума – каждый, зашедший на уязвимую страничку, пользователь будет вызывать дефейс эксплойтом. А все под ряд IP не перебаниш. В такой ситуации единственный выход – патчить уязвимый скрипт. А что если уязвимость ещё не известна? Вообщем если браться за дело с головой то можно натворить уйму всего интересного. Ещё одна причина, по которой я решился провести данный эксперимент – мнение общество о том что JS – ущербный, мало на что способный язык. Эксплоит для форума IPB версии 2.1.5 я решил выбрать потому что он достаточно сложен для реализации. Давайте по порядку рассмотрим что же делает эксплоит: - Авторизируется на форуме. - Оставляет сообщение содержащее php-код который закодирован в ascii-коды. - Проводит поиск по форуму. - Найдя своё сообщение эксплоит, с помощью специально сформированного запроса, позволял атакующему выполнять команды на удалённой системе, с правами веб-сервера. Так же нужно обсудить несколько технических моментов: Все действия мы будем производить с помощью компонента Microsoft.XMLHTTP имеющегося в IE. Для командования эксплойтом мы будем использовать обычную html-страничку состоящую из одного поля ввода(в него будет вводится команда которая должна будет выполниться), и из двух кнопок. При нажатии на первую кнопку будут происходить три первых задачи эксплойта. При нажатии на вторую – выполнение команды введённой в поле. Весь JS-код будет храниться в одном скрипте и подключаться в нашу главную страничку. Вся информация, нужная для атаки (адрес форума, логин, пароль и т.д.), будет храниться в скрипте, уже занесённая в переменные. Кроме функций самого эксплойта у нас будут 3 функции которые будут каким-либо образом помогать нам. Код я постарался очень хорошо прокомментировать. Полный пример эксплойта для рассмотрения Вы можете скачать здесь. Код не стабилен. Он рабочий, но любая непредвиденная ситуация может повлечь за собой сбой в работе эксплойта. По крайней мере он протестирован на совершенно голом ipb. Если Вы заинтересуетесь данной темой то можете с лёгкостью доработать эксплоит до максимально-стабильной версии – что будет хорошей разминкой для мозгов. Все пробы и эксперименты должны проводиться на IE. Если Вы вообще не разбираетесь в JavaScript то я думаю что Вы мало что поймёте в этой статье. Просто подучите хотя бы основы JS и вернитесь к прочтению статьи. Либо возможен второй вариант – разбираться с нижеописанным кодом со справочником по JS в руках. Приготовления Естественно для начала нужно установить сам форум. Для этого создайте в денвере хост ipb и установите в его корень форум. Для экспериментов я взял версию 2.1.4, которую можно взять здесь: _http://softoroom.net/filezzz/ipb.2.1.4.Rus_Softoroom.net.rar Итак, пройдите на свой новый форум и зарегистрируйте нового пользователя. Я зарегистрировал пользователя 'Kuzya' с паролем '111'. Если Вы зарегистрируйте другого пользователя то Вам нужно будет поменять значение двух пременных в коде нашего эксплойта (об этом далее). Итак, если форум установлен и попасть на него можно по ссылке http://ipb/index.php то можно приступать к самому главному. Кодинг Сначала давайте создадим html-страничку с которой и будем производить всё командование эксплойтом. Я назвал её 1.html и поместил в корень хоста localhost. Вот её код: Код:
<html>Код:
// Различные переменные1. В переменной answer мы будем хранить ответ с уязвимого форума для будущего анализа. 2. Переменная browser является обьектом Microsoft.XMLHTTP, с помощью которого мы будем отправлять get и post запросы на уязвимый форум. 3. Две дальнейшие переменные будут использоваться для модификации содержимого элементов на страничке 1.html Далее идут переменные нужные для действия эксплойта – url форума, номер форума, номер топика, логин и пароль пользователя под которым будет происходить атака. После этого идут переменные эксплойта которые будут заполняться по ходу атаки. Пожалуй тут нам важны только 2 переменные – это auth_key и search_id. В первый будет заноситься значение параметра auth_key, без которого мы не сможем оставить сообщение на форуме. Этот параметр появляется когда Вы пытаетесь оставить ответ на форуме. Второй параметр нужен для выполнения команд, которое проходит через скрипт поиска. Так как все действия проходят в 2 этапа – поиск нашего опасного сообщения и последующее выполнение команд, то нам нужно знать значение параметра seachid что бы обратится к результатам поиска для выполнения команд. Далее идут вспомогательные функции: Код:
//===============Вспомогательные функции======================\1.make_session() - данная функция просто обращается к форуму что бы открыть сессию и получить cookies. 2.ipb_login(login, password) – данная функция проводит авторизацию. 3.get_auth_key() - эта функция получает значение auth_key, которое необходимо для создания новой темы. 4.post_message() - открывает новую тему с вредоносным сообщением 5.do_search() - данная функция производит поиск и получает значение searchid которое понадобится для выполнения команд. 6.prepare() - эта функция вызывает вышеописанные функции в определённом порядке. 7.doCmd(cmd) данная функция отвечает за выполнение команд. Самой первой в коде идёт функция prepare(): Код:
function prepare()Код:
function make_session()Код:
function ipb_login(login,password)Код:
function get_auth_key()Код:
function post_message()Код:
blaheval('system($_GET['cmd']); die();');Код:
function do_search()1.Поиск по ключевым словам: hacksploit 2.Фильтрация по имени автора – 'Kuzya' 3.Искать в сообщениях 4.Отображать результат в виде сообщений После того как получен результат поиска, функция вырезает из его кода значение searchid и заносит его в переменную search_id. Теперь всё готово для выполнения команд. Следующая функция doCmd(cmd) – она обращается к результатам предыдущего поиска и дополнительно передаёт параметр cmd. Код:
function doCmd(cmd){Код:
eval('system($_GET['cmd']); die();');http://localhost/1.html Поле этого нажмите на кнопку prepare. После выполнения своей первой задачи эксплоит отрапортует: http://www.inattack.ru/images/art/11...75ipb_js_1.jpg Далее можно ввести например 'dir' и нажать кнопку 'do+cmd': http://www.inattack.ru/images/art/11...75ipb_js_2.jpg Ответ конечно немного кривоват, но факт в том что эксплоит работает – выполняет php-код. Как видите – перенести эксплоит с perl`a на JS не так уж и сложно, главное просто подходить этому творчески . Если Вы полностью разобрались в JS-коде эксплойта, то я уверен что Вы сможете переделать под JS почти любой эксплоит для веб-приложения. источник: www.inattack.ru, автор kuzya 14/07/2007 PS Статья понравилась, так как хорошо всё рассмотренно на конкретном примере, имхо, она будет многим участникам, тут на ачате, тоже интересна... |
оо, интересная интерпретация, понравилось!!
|
можно сделать плагин для фарефокса. Вместо панельки гугловой вставить эксплоит. Нажал и похекал, очень удобно.
|
>>Нажал и похекал, очень удобно.
)) оч. красиво сказано, но лучше по такому направлению не шагать, имхо |
отнюдь не ново. и, имхо, не настолько важно чтобы копипастить. на ачате, правда, подобного, если не ошибаюсь, не было еще.
зы: посредством маразма дойдем до оргазма. да здравствуют шимл/хмл плоеды и драйвера на пхп! up: суть статьи сводится к тому чтобы научить начинающего хакира пользовать xml-овские объекты |
Цитата:
Про ява черви, насколько помню, тоже никто не задумывался изначально, а все свежее новое мышление...!! |
да я и не говорю ничего, просто тема рассмешила "Перенос эксплойтов с perl на JavaScript" :) едакий лозунг "товарищ! а ты уже переписал свои плоиты на жс?!". и то что сей метод в некоторых случаях будет полезен никто не оспаривает. просто Богу - богово, а Кесарю - кесарево...
|
Имхо разницы никакой - кому на чем писать удобно, тот на том и пишет.
А переносить с одного языка на другой - бред полнейший, хотя этого и требовалось ожидать с появлением Ajax'а. Такие "обновления" происходят довольно часто, стоит только вспомнить Ado.net - как только появилась, все шустро начали переписывать свои наработки, хотя функционал остался тот же. Менять технологию на другую, только от того, что она новее, при этом результат один и тот же, по-моему, бессмысленно. О каком новом мышлении говорилось выше вообще непонятно - алгоритм тот же, просто реализация другая. |
XmlHTTP не работает с удаленными хостами же
|
а это xul :)
|
| Время: 07:36 |