HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Инструкция по использованию jSQL Injection — многофункционального инструмента поиска и эксплуатации SQL-инъекций в Kali Linux
jSQL Injection может пригодиться в ситуациях, когда вас интересуют: поиск SQL-инъекций и админок, закачка шеллов, файлов и чтение содержимого файлов сервера, брут-форс хешей, массовая проверка сайтов, использование прокси и многое другое.
Т.е. это весьма разносторонний комбайн, в котором прекрасно реализована главная функция — эксплуатация SQL-инъекций, и при этом весьма хорошо реализует все сопутствующие операции, которые обычно проделываются при обнаружении уязвимого сайта.
Для обнаружения и эксплуатации SQL-инъекций мне всегда нравилась sqlmap. Это утилита командной строки, она умеет очень многое, использует всевозможные методы SQL-инъекций, пытается обходить защиты сервера, может закачивать шеллы и многое другое. Она также кроссплатформенная, актуальная и очень эффективная. Эта программа мне не перестала нравиться, но я считаю: чем больше альтернатив хороших и разных — тем лучше. К тому же, поскольку sqlmap крайне мощная и гибкая, то для программы командной строки это означает огромное количество разнообразных опций. Для новичков, особенно такие «продвинутые» операции как залив шелла, это может показаться слишком сложным.
У jSQL Injection отличный графический интерфейс. Программа написана на Java, она является кроссплатформенной и очень нетребовательной к ресурсам. Файл программы, между прочим, занимает всего 2.3 мегабайта.
Но начнём по порядку — с поиска кандидатов на взлом. Не будет лишним напомнить, что взлом является уголовно наказуемым преступлением. Поэтому проявляйте благоразумность — не делайте ничего такого, что нарушает закон. Идеальным (с точки зрения юридической чистоты) является использование для обучения уязвимого скрипта на локалхосте или в одной из специализированных сред, которых сейчас имеется большое количество.
Подборка уязвимый сред для практики по взлому сайтов:
1. Поиск уязвимых к SQL-инъекциям сайтов.
Самым лучшим способом является поиск в Гугл по доркам. Эта таблица позаимствована с сайта blackmoreops.com (шикарный сайт — я очень многому научился именно по нему):
Дорки Google | Дорки Google | Дорки Google |
---|---|---|
inurl:item_id= | inurl:review.php?id= | inurl:hosting_info.php?id= |
inurl:newsid= | inurl:iniziativa.php?in= | inurl:gallery.php?id= |
inurl:trainers.php?id= | inurl:curriculum.php?id= | inurl:rub.php?idr= |
inurl:news-full.php?id= | inurl:labels.php?id= | inurl:view_faq.php?id= |
inurl:news_display.php?getid= | inurl:story.php?id= | inurl:artikelinfo.php?id= |
inurl:index2.php?option= | inurl:look.php?ID= | inurl:detail.php?ID= |
inurl:readnews.php?id= | inurl:newsone.php?id= | inurl:index.php?= |
inurl:top10.php?cat= | inurl:aboutbook.php?id= | inurl:profile_view.php?id= |
inurl:newsone.php?id= | inurl:material.php?id= | inurl:category.php?id= |
inurl:event.php?id= | inurl:opinions.php?id= | inurl:publications.php?id= |
inurl:product-item.php?id= | inurl:announce.php?id= | inurl:fellows.php?id= |
inurl:sql.php?id= | inurl:rub.php?idr= | inurl:downloads_info.php?id= |
inurl:index.php?catid= | inurl:galeri_info.php?l= | inurl:prod_info.php?id= |
inurl:news.php?catid= | inurl:tekst.php?idt= | inurl:shop.php?do=part&id= |
inurl:index.php?id= | inurl:newscat.php?id= | inurl:productinfo.php?id= |
inurl:news.php?id= | inurl:newsticker_info.php?idn= | inurl:collectionitem.php?id= |
inurl:index.php?id= | inurl:rubrika.php?idr= | inurl:band_info.php?id= |
inurl:trainers.php?id= | inurl:rubp.php?idr= | inurl:product.php?id= |
inurl:buy.php?category= | inurl:offer.php?idf= | inurl:releases.php?id= |
inurl:article.php?ID= | inurl:art.php?idm= | inurl:ray.php?id= |
inurl:play_old.php?id= | inurl:title.php?id= | inurl:produit.php?id= |
inurl:declaration_more.php?decl_id= | inurl:news_view.php?id= | inurl:pop.php?id= |
inurl:pageid= | inurl:select_biblio.php?id= | inurl:shopping.php?id= |
inurl:games.php?id= | inurl:humor.php?id= | inurl:productdetail.php?id= |
inurl:page.php?file= | inurl:aboutbook.php?id= | inurl:post.php?id= |
inurl:newsDetail.php?id= | inurl:ogl_inet.php?ogl_id= | inurl:viewshowdetail.php?id= |
inurl:gallery.php?id= | inurl:fiche_spectacle.php?id= | inurl:clubpage.php?id= |
inurl:article.php?id= | inurl:communique_detail.php?id= | inurl:memberInfo.php?id= |
inurl:show.php?id= | inurl:sem.php3?id= | inurl:section.php?id= |
inurl:staff_id= | inurl:kategorie.php4?id= | inurl:theme.php?id= |
inurl:newsitem.php?num= | inurl:news.php?id= | inurl:page.php?id= |
inurl:readnews.php?id= | inurl:index.php?id= | inurl:shredder-categories.php?id= |
inurl:top10.php?cat= | inurl:faq2.php?id= | inurl:tradeCategory.php?id= |
inurl:historialeer.php?num= | inurl:show_an.php?id= | inurl:product_ranges_view.php?ID= |
inurl:reagir.php?num= | inurl:preview.php?id= | inurl:shop_category.php?id= |
inurl:Stray-Questions-View.php?num= | inurl:loadpsb.php?id= | inurl:transcript.php?id= |
inurl:forum_bds.php?num= | inurl:opinions.php?id= | inurl:channel_id= |
inurl:game.php?id= | inurl:spr.php?id= | inurl:aboutbook.php?id= |
inurl:view_product.php?id= | inurl:pages.php?id= | inurl:preview.php?id= |
inurl:newsone.php?id= | inurl:announce.php?id= | inurl:loadpsb.php?id= |
inurl:sw_comment.php?id= | inurl:clanek.php4?id= | inurl:pages.php?id= |
inurl:news.php?id= | inurl:participant.php?id= | |
inurl:avd_start.php?avd= | inurl:download.php?id= | |
inurl:event.php?id= | inurl:main.php?id= | |
inurl:product-item.php?id= | inurl:review.php?id= | |
inurl:sql.php?id= | inurl:chappies.php?id= | |
inurl:material.php?id= | inurl:read.php?id= | |
inurl:clanek.php4?id= | inurl:prod_detail.php?id= | |
inurl:announce.php?id= | inurl:viewphoto.php?id= | |
inurl:chappies.php?id= | inurl:article.php?id= | |
inurl:read.php?id= | inurl:person.php?id= | |
inurl:viewapp.php?id= | inurl:productinfo.php?id= | |
inurl:viewphoto.php?id= | inurl:showimg.php?id= | |
inurl:rub.php?idr= | inurl:view.php?id= | |
inurl:galeri_info.php?l= | inurl:website.php?id= |
Открывайте сайты по одному из результатов поиска и пробуйте добавлять кавычку к переменной. Например, адрес сайта:
Тогда я пробую так:
Если появляется какое-либо сообщение об ошибке SQL, то высока вероятность того, что сайт уязвим к SQL-инъекции.
Также часто уязвимые сайты попадаются среди тех, кто в ответ на кавычку ничего не выводит, либо поведение сайта даёт основание предположить недостаточную фильтрацию данных.
Ещё можно попытать удачу поиском по ошибкам:
- inurl:index.php?id= intext:»mysql_fetch_array»
- inurl:advsearch.php?module= & intext:sql syntax
- «CHARACTER_SETS» «COLLATION_CHARACTER_SET_APPLICABILITY»
- «Unable to jump to row» «on MySQL result index» «on line»
- «[SQL Server Driver][SQL Server]Line 1: Incorrect syntax near» -forum -thread -showthread
- «Warning: mysql_query()» «invalid query»
- intitle:»Error Occurred While Processing Request»
- «You have an error in your SQL syntax near»
- «mySQL error with query»
- intext:»Access denied for» intitle:»Shopping cart»
- «supplied argument is not a valid MySQL result resource»
Алгоритм действий такой же — открывайте сайты по одному и пробуйте вставлять кавычку.
Совершенно точно не стоит искать SQL-инъекции в популярных движках. Даже если они там и обнаруживаются, то практически всегда оказываются трудно эксплуатируемыми. Если вы читаете эту инструкцию, то это точно (пока) не ваш уровень. Популярные движки могут стать уязвимыми из-за уязвимых плагинов (особенно самописных). Но, опять же, это пока не наш уровень.
2. Установка jSQL Injection
jSQL Injection уже предустановлена в Kali Linux. Но версия там (по крайней мере на момент написания) уже довольно старая (0.5), а доступна уже 0.72. Учитывая, что jSQL Injection ставится элементарно — в одну команду, то можно загрузить самую свежую с официального сайта:
После загрузки запускаем так:
Вот так выглядит главное окно программы:
Согласитесь, это было совсем просто — потраченные 5 секунд времени стоят того, чтобы работать в самой свежей версии.
Между прочим, это одна из тех программ для пентестинга, которые прекрасно работают в Windows.
Запустите скаченный файл двойным кликом (нужно иметь виртуальную машину Java).
3. Анонимность при проверке сайта на SQL-инъекции
Настройка Tor и Privoxy в Kali Linux
[Раздел в разработке] Настройка Tor и Privoxy в Windows
[Раздел в разработке] Настройки работы через прокси в jSQL Injection
[Раздел в разработке]
4. Проверка сайта на SQL-инъекции с jSQL Injection
Работа с программой крайне проста. Достаточно ввести адрес сайта и нажать ENTER.
На следующем скриншоте видно, что сайт уязвим сразу к трём видам SQL-инъекций (информация о них указана в правом нижнем углу). Кликая на названия инъекций можно переключить используемый метод:
Также нам уже выведены имеющиеся базы данных.
Можно посмотреть содержимое каждой таблицы:
Обычно, самым интересным в таблицах являются учётные данные администратора.
Если вам повезло и вы нашли данные администратора — то радоваться рано. Нужно ещё найти админку, куда эти данные вводить.
5. Поиск админок с jSQL Injection
Для этого переходите на следующую вкладку. Здесь нас встречает список возможных адресов. Можете выбрать одну или несколько страниц для проверки:
Удобство заключается в том, что не нужно использовать другие программы.
К сожалению, нерадивых программистов, которые хранят пароли в открытом виде, не очень много. Довольно часто в строке пароля мы видим что-нибудь вроде
Это хеш. Расшифровать его можно брутфорсом. И… jSQL Injection имеет встроенный брутфорсер.
6. Брутфорсинг хешей с помощью jSQL Injection
Несомненным удобство является то, что не нужно искать другие программы. Здесь имеется поддержка множества самых популярных хешей.
Это не самый оптимальный вариант. Для того, чтобы стать гуру в расшифровке хешей, рекомендуется Книга «Продвинутый взлом паролей с *Hashcat» на русском языке.
Но, конечно, когда под рукой нет другой программы или нет времени на изучение, jSQL Injection со встроенной функцией брут-форса придётся очень кстати.
Присутствуют настройки: можно задать какие символы входят в пароль, диапазон длины пароля.
7. Операции с файлами после обнаружения SQL-инъекций
Кроме операций с базами данных — их чтение и модификация, в случае обнаружения SQL-инъекций возможно выполнение следующих файловых операций:
- чтение файлов на сервере
- выгрузка новых файлов на сервер
- выгрузка шеллов на сервер
И всё это реализовано в jSQL Injection!
Есть ограничения — у SQL-сервера должны быть файловые привилегии. У разумных системных администраторов они отключены и доступа к файловой системе получить не удастся.
Наличие файловых привилегий достаточно просто проверить. Перейдите в одну из вкладок (чтение файлов, создание шелла, закачка нового файла) и попытайтесь выполнить одну из указанных операций.
Ещё очень важное замечание — нам нужно знать точный абсолютный путь до файла с которым мы будем работать — иначе ничего не получится.
Посмотрите на следующий скриншот:
На любую попытку операции с файлом нам отвечают: No FILE privilege (нет файловых привелегий). И ничего здесь поделать нельзя.
Если вместо этого у вас другая ошибка:
Это означает, что вы неправильно указали абсолютный путь, в который нужно записывать файл.
Для того, чтобы предположить абсолютный путь, нужно, как минимум, знать операционную систему на которой работает сервер. Для этого переключитесь к вкладке Network.
Такая запись (строка Win64) даёт основание нам предположить, что мы имеем дело с ОС Windows:
Здесь у нас какой-то из Unix (*BSD, Linux):
А здесь у нас CentOS:
В Windows типичной папкой для сайтов является C:\Server\data\htdocs\. Но, на самом деле, если кто-то «додумался» делать сервер на Windows, то, весьма вероятно, этот человек ничего не слышал о привилегиях. Поэтому начинать попытки стоит прямо с каталога C:/Windows/:
Как видим, всё прошло прекрасно с первого раза.
Но вот сами шеллы jSQL Injection у меня вызывают сомнения. Если есть файловые привилегии, то вы вполне можете закачать что-нибудь с веб-интерфейсом.
8. Массовая проверка сайтов на SQL-инъекции
И даже эта функция есть у jSQL Injection. Всё предельно просто — загружаете список сайтов (можно импортировать из файла), выбираете те, которые хотите проверить и нажимаете соответствующую кнопку для начала операции.
Вывод по jSQL Injection
jSQL Injection хороший, мощный инструмент для поиска и последующего использования найденных на сайтах SQL-инъекций. Его несомненные плюсы: простота использования, встроенные сопутствующие функции. jSQL Injection может стать лучшим другом новичка при анализе веб-сайтов.
Из недостатков я бы отметил невозможность редактирования баз данных (по крайней мере я этого функционала не нашёл). Как и у всех инструментов с графическим интерфейсом, к недостаткам этой программы можно приписать невозможность использования в скриптах. Тем не менее некоторая автоматизация возможна и в этой программе — благодаря встроенной функции массовой проверки сайтов.
Программой jSQL Injection пользоваться значительно удобнее чем sqlmap. Но sqlmap поддерживает больше видов SQL-инъекций, имеет опции для работы с файловыми файерволами и некоторые другие функции.
Итог: jSQL Injection — лучший друг начинающего хакера.