Сплойт для web'а Никита Кислицин Хакер, номер #079, стр. 079-058-2 Ну что же, мы нашли бажный ресурс и теперь настало время попробовать жука в действии. По неизвестной нам пока причине приведенный в описании пример оказался нерабочим – вываливалось ошибок 500 и было понятно, что приложение пытается выполнить косячный запрос. Исправить эту ситуацию очень просто. Если мы хотим вместо одного оригинального запроса выполнить два и объединить (оператор union) их потоки вывода, то основная проблема заключается в том, чтобы число выбираемых хакерских запросов параметров совпадало с количеством выбираемых полей в оригинальном запросе. Чтобы добиться этого, нужно выполнить довольно механическую работу. Вот в нашем примере запрос добавляется в переменную cat. И требуется, чтобы во втором предложении число выбираемых полей было таким же, как и в оригинальном. Проблема в том, что кода программы у нас перед глазами нет, и решить эту проблему можно лишь прямым перебором: мы будем пытаться выбрать одно поле, если возникает ошибка, будем увеличивать число полей на единицу, до тех пор, пока ошибка не перестанет появляться. Стоит ли говорить, что эту задачу очень легко автоматизировать – и мы сделаем это в процессе создания универсального сплойта для Loki. Но вернемся к таиландскому ресурсу. Методом ручного подбора я пришел к тому, что лучше всего реализовывать SQL-injection следующим образом: catinfo.asp?cat=' union select 1,pass,user,1,1,1,1,1,1,1,1,1,1 from tblAdm Как легко видеть, внедряемый запрос выбирает 13 полей, при этом оригинальный запрос не возвращает записей, а вводимое предложение получает имя админской записи и соответствующий пароль (в Loki он вообще никак не криптуется). Казалось бы, все круто, мы нашли универсальную отмычку. Однако это не совсем так: когда я решил попробовать собранный запрос на другом ресурсе, меня постиг облом: опять количество полей не совпадало. По всему выходило, что, в зависимости от настроек (или версии), система выбирает различное число полей из таблицы. Таким образом, чтобы написать универсальный эксплойт, необходимо реализовать в нем подбор числа выбираемых полей. [пишем сплойт] Ну, вот мы и пришли к самому интересному – сейчас напишем сплойт для Loki :). Под «сплойтом» я понимаю программу, которая возьмет на себя всю механическую работу по взлому сервера: ей нужно лишь передать адрес ресурса и путь к уязвимому скрипту. Она сама проведет SQL-injection, вытащит логин с паролем из потока вывода и покажет его пользователю. Первый вопрос, который должен у тебя возникнуть, – на каком языке мы будем писать? Ответ прост, как два байта: на Perl’е, потому что это быстро и удобно. Вообще, работа подобных сплойтов делится на несколько основных этапов: 1) получение определяемых пользователем параметров |