Inurl php chapter num логін. Інструкція з використання jSQL Injection – багатофункціональний інструмент пошуку та експлуатації SQL-ін'єкцій у Kali Linux. Брутфорсинг хешей за допомогою jSQL Injection
Будь-який пошук уразливостей на веб-ресурсах починається з розвідки та збору інформації.
Розвідка може бути як активною – брутфорс файлів та директорій сайту, запуск сканерів уразливостей, ручний перегляд сайту, так і пасивною – пошук інформації у різних пошукових системах. Іноді буває так, що вразливість стає відомою ще до відкриття першої сторінки сайту.
Як таке можливо?
Пошукові роботи, які безперервно блукають просторами інтернету, крім інформації, корисної звичайному користувачеві, часто фіксують те, що може бути використане зловмисниками при атаці на веб-ресурс. Наприклад, помилки скриптів та файли з чутливою інформацією (починаючи від конфігураційних файлів та логів, закінчуючи файлами з автентифікаційними даними та бекапами баз даних).
З погляду пошукового робота повідомлення про помилку виконання SQL-запиту - це звичайний текст, невіддільний, наприклад, від опису товарів на сторінці. Якщо раптом пошуковий робот наткнувся на файл з розширенням.sql, який чомусь опинився в робочій папці сайту, то він буде сприйнятий як частина вмісту сайту і так само буде проіндексовано (включаючи, можливо, вказані паролі).
Подібну інформацію можна знайти, знаючи стійкі, часто унікальні ключові слова, які допомагають відокремити «вразливі сторінки» від сторінок, що не містять вразливості.
Величезна база спеціальних запитів із використанням ключових слів (так званих дорків) існує на exploit-db.com і відома під назвою Google Hack Database.
Чому Google?
Дорки орієнтовані в першу чергу на google з двох причин:
− найбільш гнучкий синтаксис ключових слів (наведений у Таблиці 1) та спеціальних символів (наведений у Таблиці 2);
− індекс google все ж таки більш повний ніж у інших пошукових систем;
Таблиця 1 – Основні ключові слова google
Ключове слово |
Сенс |
приклад |
site |
Пошук лише на вказаному сайті. Враховує лише url |
site:somesite.ru - знайде всі сторінки по даному домену та піддоменам |
inurl |
Пошук за словами, присутнім у uri. На відміну від кл. слова "site", шукає збіги після імені сайту |
inurl:news - знайде всі сторінки, де в uri зустрінеться це слово |
intext |
Пошук у тілі сторінки |
intext:"пробки" - повністю аналогічно звичайному запиту "пробки" |
intitle |
Пошук у заголовку сторінки. Текст, укладений між тегами |
intitle:"index of" - знайде всі сторінки з лістингом директорії |
ext |
Пошук сторінок із зазначеним розширенням |
ext:pdf - знайде всі PDF-файли |
filetype |
В даний час повністю аналогічно кл. слову “ext” |
filetype:pdf - аналогічно |
related |
Пошук сайтів зі схожою тематикою |
related:google.ru - покаже свої аналоги |
link |
Пошук сайтів, що посилаються на даний |
link:somesite.ru - знайде всі сайти, на яких є посилання на даний |
define |
Показати визначення слова |
define:0day - визначення терміна |
cache |
Показати вміст сторінки в кеші (якщо є) |
cache:google.com - відкриє сторінку з кешу |
Таблиця 2 – Спеціальні символи запитів google
Символ |
Сенс |
приклад |
“ |
Точна фраза |
intitle:«RouterOS router configuration page» - пошук роутерів |
* |
Будь-який текст |
inurl:«bitrix*mcart» - пошук сайтів на bitrix з вразливим модулем mcart |
. |
Будь-який символ |
Index.of - аналогічно до запиту index of |
- |
Виключити слово |
error -warning - показати всі сторінки, де є error, але немає warning |
.. |
Діапазон |
cve 2006..2016 - показати вразливості за роками починаючи з 2006 |
| |
Логічне «або» |
linux | windows - показати сторінки, де зустрічається або перше або друге слово |
Варто розуміти, що будь-який запит до пошукової системи – це пошук лише за словами.
Марно шукати на сторінці мета-символи (лапки, дужки, знаки пунктуації тощо). Навіть пошук за точною фразою, вказаною в лапках, - це пошук за словами, з подальшим пошуком точного збігу вже в результатах.
Усі доріжки Google Hack Database розділені логічно на 14 категорій і представлені в таблиці 3.
Таблиця 3 – Категорії Google Hack Database
Категорія |
Що дозволяє знайти |
приклад |
Footholds |
Веб-шелли, публічні файлові менеджери |
Знайти всі зламані сайти, де залиті перераховані вебшели: (intitle:«phpshell» OR intitle:«c99shell» OR intitle:«r57shell» OR intitle:«PHP Shell » OR intitle:«phpRemoteView») `rwx` «uname» |
Files containing usernames |
Файли реєстру, файли конфігурації, логи, файли, що містять історію введених команд |
Знайти всі файли реєстру, які містять інформацію про облікові записи: filetype:reg reg +intext:«Internet account manager» |
Sensitive Directories |
Каталоги з різною інформацією (особисті документи, конфіги vpn, приховані репозиторії та ін.) |
Знайти всі лістинги директорій, що містять файли, що відносяться до vpn: "Config" intitle:"Index of" intext:vpn Сайти, що містять git-репозиторії: (intext: "index of /.git") ("parent directory") |
Web Server Detection |
Версію та іншу інформацію про веб-сервер |
Знайти адміністративні консолі сервера JBoss: inurl:"/web-console/" intitle:«Administration Console» |
Vulnerable Files |
Скрипти, що містять відомі вразливості |
Знайти сайти, які використовують скрипт, що дозволяє вивантажити довільний файл із сервера: allinurl:forcedownload.php?file= |
Vulnerable Servers |
Інсталяційні скрипти, веб-шелли, відкриті адміністративні консолі та ін. |
Знайти відкриті PHPMyAdmin консолі, запущені від root: intitle:phpMyAdmin "Welcome to phpMyAdmin ***" "running on * as root@*" |
Error Messages |
Різні помилки та попередження, що часто розкривають важливу інформацію - починаючи від версії CMS до паролів |
Сайти, що мають помилки у виконанні SQL-запитів до бази: "Warning: mysql_query()" "invalid query" |
Files containing juicy info |
Сертифікати, бекапи, електронні листи, логи, SQL-скрипти і т.д. |
Знайти ініціалізаційні sql-скрипти: filetype:sql та «insert into» -site:github.com |
Files containing passwords |
Все, що може містити паролі - логи, sql-скрипти і т.д. |
Логи, що згадують паролі: filetype:logintext:password |pass |pw sql-скрипти, що містять паролі: ext:sqlintext:usernameintext:password |
Sensitive Online Shopping Info |
Інформація пов'язана з онлайн покупками |
Знайти пінкоди: dcid=bn=pincode= |
Network or vulnerability data |
Інформацію, що не відноситься безпосередньо до веб-ресурсу, але стосується мережі або інші не веб-сервіси |
Знайти скрипти автоматичного налаштування проксі, що містять інформацію про внутрішню мережу: inurl:прокси | inurl:wpad ext:pac | ext:dat findproxyforurl |
Pages containing login portals |
Сторінки, що містять форми входу |
Веб-сторінки saplogon: intext:«2016 SAP AG. All rights reserved.» intitle:«Logon» |
Various Online Devices |
Принтери, роутери, системи моніторингу та ін. |
Знайти конфігураційну панель принтера: intitle:"hplaserjet"inurl:SSI/Auth/set_config_deviceinfo.htm |
Advisories and Vulnerabilities |
Сайти на вразливих версіях CMS |
Знайти вразливі плагіни, через які можна завантажити довільний файл на сервер: inurl:fckeditor -intext:«ConfigIsEnabled = False» intext:ConfigIsEnabled |
Дорки найчастіше орієнтовані на пошук по всіх сайтах мережі інтернет. Але ні що не заважає обмежити область пошуку на якомусь сайті чи сайтах.
Кожен запит до Google можна зосередити на певному сайті, додавши до запиту ключове слово "site:somesite.com". Дане ключове слово може бути дописане до будь-якого дорку.
Автоматизація пошуку вразливостей
Так народилася ідея написати просту утиліту, що автоматизує пошук вразливостей за допомогою пошукової системи (google) і спирається на Google Hack Database.
Утиліта являє собою скрипт, написаний на nodejs з використанням phantomjs. Якщо бути точним, то скрипт інтерпретується самим фантомом.
Phantomjs - це повноцінний веб-браузер без графічного інтерфейсу, що керується за допомогою js-коду і володіє зручним API.
Утиліта отримала цілком зрозумілу назву – dorks. Запустивши її в командному рядку (без опцій) отримуємо коротку довідку з кількома прикладами використання:
Малюнок 1 - Список основних опцій dorks
Загальний синтаксис утиліти: dork команда список опцій.
Детальний опис усіх опцій наведено в таблиці 4.
Таблиця 4 - Синтаксис dorks
Команда |
Опція |
Опис |
ghdb |
-l |
Вивести нумерований список категорій дорків Google Hack Database |
-c «номер або назва категорії» |
Завантажити доріжки вказаної категорії за номером чи назвою |
|
-q «фраза» |
Завантажити дорки, знайдені за запитом |
|
-o "файл" |
Зберегти результат у файл (тільки разом із опціями -c|-q) |
|
google |
-d «дорк» |
Вказати довільний дорк (опція може використовуватися багато разів, допускається поєднання з опцією -D) |
-D "файл" |
Використовувати доріжки з файлу |
|
-s «сайт» |
Вказати сайт (опція може використовуватися багато разів, допускається поєднання з опцією -S) |
|
-S "файл" |
Використовувати сайти з файлу (перебір доріжок буде виконаний по кожному сайту незалежно) |
|
-f «фільтр» |
Задати додаткові ключові слова (буде додано до кожного дорка) |
|
-t «кількість мс» |
Інтервал між запитами до Google |
|
-T «кількість мс» |
Таймаут, якщо зустрілася каптча |
|
-o "файл" |
Зберегти результат у файл (будуть збережені тільки ті доріжки, якими щось знайшлося) |
За допомогою команди ghdb можна отримати всі доркі з exploit-db за довільним запитом, або вказати всю категорію. Якщо вказати категорію 0 - то буде вивантажено всю базу (близько 4.5 тисяч дорків).
Список категорій доступних на даний момент представлений малюнку 2.
Малюнок 2 - Список доступних категорій дорків GHDB
Командою google буде проведена підстановка кожного доріка в пошуковик google і проаналізовано результат щодо збігів. Дорки за якими щось знайшлося будуть збережені у файл.
Утиліта підтримує різні режими пошуку:
1 дорк та 1 сайт;
1 дорк та багато сайтів;
1 сайт та багато дорків;
багато сайтів та багато дорків;
Список доріжок та сайтів можна задати як через аргумент, так і через файл.
Демонстрація роботи
Спробуємо пошукати будь-які вразливості на прикладі пошуку повідомлень про помилки. За командою: dorks ghdb –c 7 –o errors.dorks будуть завантажені всі відомі доркі категорії “Error Messages” як показано на малюнку 3.
Рисунок 3 – Завантаження всіх відомих дорків категорії “Error Messages”
Дорки завантажені та збережені у файл. Тепер залишається «натруїти» їх на якийсь сайт (див. рисунок 4).
Рисунок 4 – Пошук вразливостей сайту, що цікавиться, в кеші google
Через деякий час на досліджуваному сайті виявляється кілька сторінок, які містять помилки (див. рис. 5).
Рисунок 5 – Знайдені повідомлення про помилки
Підсумок у файлі result.txt отримуємо повний список доріжок, що призводять до появи помилки.
На малюнку 6 наведено результат пошуку помилок сайту.
Малюнок 6 – Результат пошуку помилок
У кеші по даному доріку виводиться повний бектрейс, що розкривають абсолютні шляхи скриптів, систему керування вмістом сайту та тип бази даних (див. рис. 7).
Рисунок 7 – розкриття інформації про влаштування сайту
Однак варто враховувати, що не всі доріжки з GHDB дають справжній результат. Також google може знайти точного збіги і показати схожий результат.
У такому разі розумніше використовувати свій персональний список дорків. Наприклад, завжди варто пошукати файли з «незвичайними» розширеннями, приклади яких наведено малюнку 8.
Рисунок 8 – Список розширень файлів, не характерних для звичайного веб-ресурсу
У результаті, за командою dorks google –D extensions.txt –f банк, з першого запиту google починає віддавати сайти з «незвичайними» розширеннями файлів (див. малюнок 9).
Рисунок 9 – Пошук «нехороших» типів файлів на сайтах банківської тематики
Варто мати на увазі, що google не сприймає запити довші за 32 слова.
За допомогою команди dorks google –d intext:”error|warning|notice|syntax” –f університет
можна знайти помилки інтерпретатора PHP на сайтах навчальної тематики (див. малюнок 10).
Рисунок 10 – Пошук PHP-помилок часу виконання
Іноді користуватися якоюсь однією чи двома категоріями дорків не зручно.
Наприклад, якщо відомо, що сайт працює на движку wordpress, то потрібні доріжки саме по wordpress. У такому випадку зручно користуватися пошуком Google Hack Database. Команда dorks ghdb –q wordpress –o wordpress_dorks.txt завантажить всі доркі по Wordpress, як показано на малюнку 11:
Рисунок 11 – Пошук доріжок, що стосуються Wordpress
Знову повернемося до банків та командою dorks google –D wordpress_dords.txt –f банк спробуємо знайти щось цікаве, пов'язане з wordpress (див. малюнок 12).
Рисунок 12 – Пошук вразливостей Wordpress
Варто зауважити, що пошук на Google Hack Database не сприймає слова коротше 4 символів. Наприклад, якщо CMS сайту не відома, але відома мова – PHP. У такому разі можна відфільтрувати потрібне вручну за допомогою пайпа та системної утиліти пошуку dorks –c all | findstr /I php > php_dorks.txt (див. малюнок 13):
Малюнок 13 – Пошук по всіх доріг, де є згадка PHP
Пошук вразливостей або якоїсь чутливої інформації в пошуковій системі слід шукати тільки у випадку, якщо на цьому сайті є значний індекс. Наприклад, якщо у сайту проіндексовано 10-15 сторінок, то безглуздо щось шукати подібним чином. Перевірити розмір індексу просто – достатньо ввести в рядок пошуку google «site:somesite.com». Приклад сайту з недостатнім індексом показано на малюнку 14.
Рисунок 14 – Перевірка розміру індексу сайту
Тепер про неприємне ... Періодично google може запросити каптчу - тут нічого не вдієш - її доведеться ввести. Наприклад, у мене, при переборі категорії «Error Messages» (90 дорків) каптча випала лише один раз.
Варто додати, що phantomjs підтримує роботу так само через проксі, як через http, так і через socks інтерфейс. Для включення режиму проксі потрібно розкоментувати відповідний рядок dorks.bat або dorks.sh.
Інструмент доступний у вигляді вихідного коду
Запустіть завантажений файл подвійним кліком (потрібно мати віртуальну машину).
3. Анонімність під час перевірки сайту на SQL-ін'єкції
Налаштування Tor і Privoxy у Kali Linux
[Розділ у розробці]
Налаштування Tor та Privoxy у Windows
[Розділ у розробці]
Налаштування роботи через проксі в jSQL Injection
[Розділ у розробці]
4. Перевірка сайту на SQL-ін'єкції з jSQL Injection
Робота з програмою вкрай проста. Достатньо ввести адресу сайту та натиснути ENTER.
На наступному скріншоті видно, що сайт вразливий відразу до трьох видів SQL-ін'єкцій (інформація про них вказана в нижньому правому кутку). Клікаючи на назви ін'єкцій можна переключити використовуваний метод:
Також нам вже виведено наявні бази даних.
Можна переглянути вміст кожної таблиці:
Зазвичай найцікавішим у таблицях є облікові дані адміністратора.
Якщо вам пощастило і ви знайшли дані адміністратора, то радіти рано. Потрібно ще знайти адмінку, куди ці дані вводити.
5. Пошук адмінок з jSQL Injection
Для цього переходьте до наступної вкладки. Тут нас зустрічає перелік можливих адрес. Ви можете вибрати одну або кілька сторінок для перевірки:
Зручність у тому, що не потрібно використовувати інші програми.
На жаль, недбайливих програмістів, які зберігають паролі у відкритому вигляді, не дуже багато. Досить часто в рядку пароля ми бачимо щось на зразок
8743b52063cd84097a65d1633f5c74f5
Це хеш. Розшифрувати його можна брутфорсом. І… jSQL Injection має вбудований брутфорсер.
6. Брутфорсинг хешей за допомогою jSQL Injection
Безсумнівною зручністю є те, що не потрібно шукати інші програми. Тут є підтримка багатьох найпопулярніших хешей.
Це не найоптимальніший варіант. Для того, щоб стати гуру у розшифровці хешей, рекомендується Книга « » російською мовою.
Але, звичайно, коли під рукою немає іншої програми або немає часу на вивчення, jSQL Injection із вбудованою функцією брут-форсу буде дуже доречним.
Існують настройки: можна задати які символи входять у пароль, діапазон довжини пароля.
7. Операції з файлами після виявлення SQL-ін'єкцій
Крім операцій з базами даних - їх читання та модифікація, у разі виявлення SQL-ін'єкцій можливе виконання таких файлових операцій:
- читання файлів на сервері
- вивантаження нових файлів на сервер
- вивантаження шеллів на сервер
І все це реалізовано у jSQL Injection!
Є обмеження - у SQL-сервера мають бути файлові привілеї. У розумних системних адміністраторів вони відключені і доступу до файлової системи отримати не вдасться.
Наявність файлових привілеїв досить просто перевірити. Перейдіть до однієї із вкладок (читання файлів, створення шелла, завантаження нового файлу) і спробуйте виконати одну із зазначених операцій.
Ще дуже важливе зауваження – нам потрібно знати точний абсолютний шлях до файлу з яким ми будемо працювати – інакше нічого не вийде.
Подивіться на наступний скріншот:
На будь-яку спробу операції з файлом нам відповідають: No FILE privilege(Немає файлових привілеїв). І нічого тут вдіяти не можна.
Якщо натомість у вас інша помилка:
Problem writing into [назва_каталогу]
Це означає, що ви неправильно вказали абсолютний шлях, до якого потрібно записувати файл.
Для того щоб припустити абсолютний шлях, потрібно, як мінімум, знати операційну систему на якій працює сервер. Для цього перейдіть до вкладки Network.
Такий запис (рядок Win64) дає підстави припустити, що ми маємо справу з ОС Windows:
Keep-Alive: timeout=5, max=99 Server: Apache/2.4.17 (Win64) PHP/7.0.0RC6 Connection: Keep-Alive Метод: HTTP/1.1 200 OK Content-Length: 353 Date: Fri, 11 Dec 201 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 Content-Type: text/html; charset=UTF-8
Тут у нас якийсь із Unix (*BSD, Linux):
Transfer-Encoding: chunked Дата: Fri, 11 Dec 2015 11:57:02 GMT Метод: HTTP/1.1 200 OK Keep-Alive: timeout=3, max=100 Connection: keep-alive Content-Type: text/html X- Powered-By: PHP/5.3.29 Server: Apache/2.2.31 (Unix)
А тут у нас CentOS:
Метод: HTTP/1.1 200 OK Expires: Thu, 19 Nov 1981 08:52:00 GMT Set-Cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; path=/ Connection: keep-alive X-Cache-Lookup: MISS від t1.hoster.ru:6666 Server: Apache/2.2.15 (CentOS) t1.hoster.ru Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Transfer-Encoding: chunked Content-Type: text/html; charset=WINDOWS-1251
У Windows типовою папкою для сайтів є C:\Server\data\htdocs\. Але, насправді, якщо хтось «додумався» робити сервер на Windows, то, можливо, ця людина нічого не чула про привілеї. Тому розпочинати спроби варто прямо з каталогу C:/Windows/:
Як бачимо, все пройшло чудово з першого разу.
Але самі шелли jSQL Injection у мене викликають сумніви. Якщо є файлові привілеї, то ви можете завантажити що-небудь з веб-інтерфейсом.
8. Масова перевірка сайтів на SQL-ін'єкції
І навіть ця функція є у jSQL Injection. Все просто - завантажуєте список сайтів (можна імпортувати з файлу), вибираєте ті, які хочете перевірити і натискаєте відповідну кнопку для початку операції.
Висновок з jSQL Injection
jSQL Injection хороший, потужний інструмент для пошуку та подальшого використання знайдених на сайтах SQL-ін'єкцій. Його безперечні плюси: простота використання, вбудовані супутні функції. jSQL Injection може стати найкращим другом новачка під час аналізу веб-сайтів.
З недоліків я б наголосив на неможливості редагування баз даних (принаймні я цього функціоналу не знайшов). Як і всі інструменти з графічним інтерфейсом, до недоліків цієї програми можна приписати неможливість використання в скриптах. Проте деяка автоматизація можлива і в цій програмі завдяки вбудованій функції масової перевірки сайтів.
Встановленого зразка та сертифікат. Спеціальна знижка на будь-які факультети та курси!