Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #72, ДЕКАБРЬ 2004 г.

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

Докучаев Дмитрий aka Forb

Хакер, номер #072, стр. 072-064-2


Этот сценарий я использую уже второй год. Он действительно незаменим, когда на удаленной машине отсутствует /usr/bin/wget и компилятор gcc или нет прав на запуск качалок. Найти этот чудесный и очень полезный скрипт можно на нашем диске.

Возьми его силой!

Скажи мне, когда ты последний раз проводил атаку брутфорсом? Бьюсь об заклад, что не очень давно. Действительно – сетевой перебор паролей является очень действенным, а иногда единственным способом взлома сервера. Он используется, например, в тривиальной ситуации, когда найден бажный скрипт, показывающий системные логины. От тебя требуется лишь отделить мух от котлет и провести тупой брутфорс по паре login:login через открытый FTP-порт. Чтобы не испытывать сложности при рутинном парсинге системного файла, размер которого может достигать несколько десятков килобайт, предлагаю использовать практичный сценарий. Он составляет так называемый комболист, который затем скармливается брутфорсеру. В качестве бонуса я снабдил combo.pl функцией распознавания валидного шелла. Короче говоря, аккаунты со всякими /bin/false и /dev/null не будут внесены в комболист.

Нехитрый парсинг

#!/usr/bin/perl

$goodshell='bash'; #Строка с хорошим шеллом

open(IN,"$ARGV[0]");

open(OUT,"> $ARGV[1]"); # Открываем файлы

while(<IN> ) {

chomp;

($u,@undef)=split ':'; #Режем по символу «:»

if (defined($goodshell)) { #Если отбрасывать левых юзеров

if ($undef[(scalar $undef)-1]=~/$goodshell/) {

print OUT "$u:$u\n";

}} else {

print OUT "$u:$u\n";

}}

В коде происходит разделение полей системного файла с последующим анализом последнего. Если шелл пользователя рабочий, то пара login:login выносится в отдельный файл. Впрочем, никто не заставляет тебя юзать эту фичу - ее можно выключить, удалив строку с объявлением переменной $goodshell.

В командной строке запуска скрипта должны присутствовать два параметра: входной файл (/etc/passwd) и выходной (комболист). Можно упростить скрипт, вписав фиксированные имена файлов в функции open(), правда, в этом случае сценарий уже не назовешь универсальным :).

А вот это мой размерчик!

Мне часто приходится прибегать к рутинной процедуре поиска файлов определенного формата. Но помимо расширения, меня интересует и размер документа. К примеру, я не хочу скачивать документы, которые имеют размер менее семисот килобайт. В системной функции find есть опция -size, однако она задает лишь фиксированное число, что крайне неудобно.

Все эти накладки заставили меня написать простенький скрипт, который ищет все необходимые документы, а затем составляет список файлов определенного размера. Вес документа передается сценарию в качестве первого параметра. Вторая и третья опции отвечают за маску поиска и путь соответственно.

Назад на стр. 072-064-1  Содержание  Вперед на стр. 072-064-3