Как я ломал hotbox.ru Master-lame-master Хакер, номер #073, стр. 073-044-3 Эксплуатируем аплоад Вернувшись на страницы менеджера, я стал изучать внутренности тамошних сценариев. Исходный код находился на WWW и мог просматриваться обычным браузером, благо админ переименовал сценарий auth1.php в auth1.php~ :). Вскрытие показало, что опция wdir фильтруется весьма хреново, а в некоторых случаях не фильтруется совсем. Это означало, что любой желающий мог закинуть файл в произвольный каталог, указав явный путь в переменной $wdir. Чтобы не нарваться на проверку, необходимо использовать префикс «/../../../../../» в имени директории. Примечательно, но проверка осуществлялась лишь по шаблону «../». Ее, как ты понял, можно обмануть путем подстановки слэша в качестве первого символа. Обнаружив это слабое звено, я сохранил HTML-шаблон к себе на диск, чуть-чуть подправил искомую форму и указал в wdir путь к чужому каталогу. Затем создал текстовик с посланием, запустил локальный файл и скормил ему файл xakep.txt. После нажатия на кнопку «Загрузить» я получил, что хотел, – файл залился в каталог юзера hack, который хостился на сервисе pochta.ru. Я четко понимал, что этот баг дает мне возможность записи в любую подпапку каталога /hosting. По видимому, в этой директории все содержимое принадлежало пользователю nobody. Этот факт позволял дефейсить любые сайты, хостящиеся на сервисе HotBox. Но перезапись файлов была возможна лишь в случае указания дополнительного параметра confirm, который играл роль подтверждения на замещение файла. Эта нехитрая опция была помещена мной в сохраненный HTML-шаблон. От нечего делать я запустил google.com, ввел туда запрос «inurl:pochta.ru hack» и получил много ссылок по сайтам хакерской направленности. Затем я составил текст, гласящий, что ломать других нехорошо :), и залил index.html в каталог какому-то хакерюге. Все прошло без особых проблем, и после обновления страницы я увидел свое свежезалитое послание. Поверхностный анализ прав Я понимал, что дефейс – радость только для скрипткидиса. Если бы начинающий хакер нашел такую уязвимость, он был бы на седьмом небе от счастья. Ведь ему попалась такая добыча – не один сайт, а целый хостинг :). Но на меня баг в аплоаде не произвел никакого впечатления. Мне до сих пор хотелось скачать базу с клиентами. На этот момент я умел делать три вещи: заливать каталоги в определенное место, смотреть содержимое папок и... просматривать (менять) атрибуты файлов. С правами ситуация выглядела так же, как и с заливкой, – в коде прослеживались аналогичные проверки и процедуры. То есть, если я подставлю в file хакерское значение, скрипт покажет мне пермишены на эту папку. В связи с этим у меня родилась еще одна идея: написать перловый скрипт, который бы считывал содержимое файлов в определенной папке и проверял их права. Если на файле будет установлен бит 777 или 666, его можно благополучно перезаписать, внедрив в документ какой-нибудь вредоносный код. Напомню, что просмотр прав должен проводиться в WWW-директории сайтов filemanager.hotbox.ru и hosting.hotbox.ru. Вся загвоздка была в том, что документы в этих злополучных каталогах принадлежали другому юзеру, соответственно, перезаписать их было невозможно. Единственный выход из проблемы – составить сценарий, который ищет файл с некорректными правами. Через полчаса загвоздка наполовину разрешилась - я сваял небольшой и полезный код. |