Жизнь по сценарию Докучаев Дмитрий aka Forb Хакер, номер #072, стр. 072-064-1 (forb@real.xakep.ru) Перловые сценарии на все случаи жизни В жизни взломщика может возникать много разных ситуаций. Некоторые из них решаются с помощью нехитрых хакерских действий, остальные разруливаются после проведения рутинной работы. Чтобы облегчить труд взломщика, я написал десять незаменимых perl-скриптов, которые активно использую каждый день. Надеюсь, что ты оценишь мои творения по достоинству. Зачем нужны скрипты? С давних времен я привык доверять мощному языку Perl, который решает все необходимые задачи. Я составляю сценарии, которые всегда помогут пропарсить нужный файл, составить структурный список, перебрать пароль на загадочный сервис, посмотреть удаленные каталоги и т.д. Несложно догадаться, что на моей видовой машине давно поселился эмулятор ActivePerl. Я очень советую его поставить, поскольку добрая половина описываемых скриптов успешно тестировалась на нем. Остальные сценарии были разработаны для запуска под unix, поэтому убедись в наличие интерпретатора в твоей системе. Стартовая площадка готова для испытаний? Тогда поехали! Автоматизация инжекции Первый скрипт, который я собираюсь выставить на публичное обозрение, получил название sql-check.pl. Его задача - автоматизировать поиск нужного SQL-запроса для успешной инжекции. К примеру, ты находишь бажный PHP-сценарий, который успешно умирает после подстановки кавычки в параметр. Ты понимаешь, что никто не мешает провести SQL-инжекцию. Но вот досада - подстановка параметров к UNION возвращает ошибку несоответствия опций первого и второго SELECT’а. В итоге ты сталкиваешься с выбором: либо вручную подставлять добавочный параметр и молиться, чтобы скрипт вывел админские хэши, либо автоматизировать процесс с помощью небольшого сценария. Я думаю, многие выберут второй вариант. Сам скрипт не представляет собой ничего сложного. Для его успешного запуска тебе потребуется модуль LWP::Simple (поставляется по умолчанию), с помощью которого происходит обращение к удаленному web-серверу. Весь смысл автоматической проверки содержится в следующем кусочке кода. Фрагмент sql-check.pl $url='http://bug.host.com/sql-bug.php?page=2 UNION select 0[ins]--'; for($i=1;$i<=@ARGV[0];$i++){ $str.=",$i"; $url2=$url; $url2=~s/\[ins\]/$str/g; $cont=get($url2); print "$cont\n"; } Как видишь, после обработки начальной ссылки слово [ins] заменяется на единицу, в результате чего подставляются уже два параметра. После второй итерации прибавляется еще один аргумент и т.д. Важно помнить, что опцией скрипта служит ограничительное число параметров. Например, запустив sql-check.pl с опцией 30, ты сможешь прокрутить цикл 30 раз и, соответственно, подставить тридцать различных вариантов SQL-запроса. Модная альтернатива wget Бывает, что тебе требуется скачать определенный файл или даже несколько файлов, но на сервере отсутствует утилита wget. При таком раскладе я пользуюсь перловым скриптом, который бережно скачает необходимые эксплойты и руткиты. Для его полноценной работы тебе потребуются целых три модуля из семейства LWP, но они, опять же, поставляются по умолчанию. Не буду помещать код сценария, при желании ты можешь сам в нем разобраться. Скажу лишь, что для успешного использования get.pl тебе необходимо создать текстовый файлик urls.txt и записать туда все ссылки для скачивания. После старта сценария произойдет обращение ко всем урлам и доставка необходимых файлов на сервер. Если в результате скачивания произойдет ошибка, то мой скрипт сразу же оповестит о ней, не прерывая своей работы. |