Жизнь по сценарию

Докучаев Дмитрий 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 "$contn";

}

Как видишь, после обработки начальной ссылки слово [ins] заменяется на единицу, в результате чего подставляются уже два параметра. После второй итерации прибавляется еще один аргумент и т.д. Важно помнить, что опцией скрипта служит ограничительное число параметров. Например, запустив sql-check.pl с опцией 30, ты сможешь прокрутить цикл 30 раз и, соответственно, подставить тридцать различных вариантов SQL-запроса.

Модная альтернатива wget

Бывает, что тебе требуется скачать определенный файл или даже несколько файлов, но на сервере отсутствует утилита wget. При таком раскладе я пользуюсь перловым скриптом, который бережно скачает необходимые эксплойты и руткиты. Для его полноценной работы тебе потребуются целых три модуля из семейства LWP, но они, опять же, поставляются по умолчанию. Не буду помещать код сценария, при желании ты можешь сам в нем разобраться. Скажу лишь, что для успешного использования get.pl тебе необходимо создать текстовый файлик urls.txt и записать туда все ссылки для скачивания. После старта сценария произойдет обращение ко всем урлам и доставка необходимых файлов на сервер. Если в результате скачивания произойдет ошибка, то мой скрипт сразу же оповестит о ней, не прерывая своей работы.

Содержание  Вперед на стр. 072-064-2
ttfb: 3.2989978790283 ms