Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #70, ОКТЯБРЬ 2004 г.

Дефейс по-правильному!

Докучаев Дмитрий aka Forb

Хакер, номер #070, стр. 070-060-2


4. PHP::include().

И наконец, я не могу не описать самую популярную ошибку PHP-приложений - брешь в функции include. На самом деле никакой бреши тут нет - include() подключает произвольный файл и обрабатывает его интерпретатором. Но при неграмотной настройке php.ini можно подключить файл, находящийся на другом сервере, и обработать его в бажном скрипте.

Для этого тебе понадобится сделать два простых шага. Во-первых, зарегиться на бесплатном хостинге (на narod.ru, например), а затем залить туда несложный PHP-скрипт (смотри таблицу). Во-вторых, подставить в параметр исследуемого скрипта значение в виде ссылки на свежезалитый сценарий и добавить лишнюю переменную cmd, выполняющую произвольный код на сервере. Да, я забыл сказать, что характерным признаком ошибки является значение параметра в виде article.html, links, faq, 11222.art и т.п. В общем, когда налицо юзание статических документов в динамическом скрипте, будь уверен - баг где-то рядом!

<?php

passthru $cmd

?>

Операция «Deface»

Итак, ты нашел нужный баг и проверил исправность выполненных команд. Пора приступать к самому основному шагу скрипткидиса - дефейсу. Надо сказать, строка «Hacked by Vasya» не произведет на посетителей никакого впечатления, наоборот, Васю закидают гнилыми помидорами. Дефейс надо делать умеючи. Я даже не буду перечислять основные части хакнутого index.html - зайди на какое-нибудь зеркало и зацени дефейсы грамотных взломщиков. Моя задача - научить тебя заливать подобные творения на удаленный сервер и грамотно их «инсталлировать» :).

В первую очередь убедись, что команды с пробельным символом исправно выполняются сценарием. Это мы уже проходили. Если все в порядке, можно приступать к анализу прав, который покажет, быть дефейсу или не быть :). Сравни собственные права с привилегиями на web-папке. Для этого выполни две команды: id и ls -lad ../.. (с учетом того, что скрипт находится в корне /cgi-bin). Если тебе трудно найти корень WWW, узнай текущий каталог запросом pwd, а затем посмотри листинг каталога с именем html, htdocs и т.п. В нем и должен находиться заветный index.html. Впрочем, если сайт динамический, то расширение у index может быть и cgi, и php. В ряде случаев первая страница вообще не засветится в строке адреса. На помощь придет команда cat /путь/к/предполагаемому/index. Если выведенная информация будет похожа на контент главного файла - будь уверен, именно этот документ и нужно подменить. Важно, чтобы uid или gid, прикрепленные к файлу, совпадали с выводом id. Только в этом случае система позволит заменить содержимое index. К счастью для скрипткидиса, в 80% случаев права совпадут, так что надейся и верь, что тебе повезет :).

Назад на стр. 070-060-1  Содержание  Вперед на стр. 070-060-3