Инструкция по использованию jSQL Injection — многофункционального инструмента поиска и эксплуатации SQL-инъекций в Kali Linux
jSQL Injection может пригодиться в ситуациях, когда вас интересуют: поиск SQL-инъекций и админок, закачка шеллов, файлов и чтение содержимого файлов сервера, брут-форс хешей, массовая проверка сайтов, использование прокси и многое другое.
Т.е. это весьма разносторонний комбайн, в котором прекрасно реализована главная функция — эксплуатация SQL-инъекций, и при этом весьма хорошо реализует все сопутствующие операции, которые обычно проделываются при обнаружении уязвимого сайта.
Для обнаружения и эксплуатации SQL-инъекций мне всегда нравилась sqlmap. Это утилита командной строки, она умеет очень многое, использует всевозможные методы SQL-инъекций, пытается обходить защиты сервера, может закачивать шеллы и многое другое. Она также кроссплатформенная, актуальная и очень эффективная. Эта программа мне не перестала нравиться, но я считаю: чем больше альтернатив хороших и разных — тем лучше. К тому же, поскольку sqlmap крайне мощная и гибкая, то для программы командной строки это означает огромное количество разнообразных опций. Для новичков, особенно такие «продвинутые» операции как залив шелла, это может показаться слишком сложным.
У jSQL Injection отличный графический интерфейс. Программа написана на Java, она является кроссплатформенной и очень нетребовательной к ресурсам. Файл программы, между прочим, занимает всего 2.3 мегабайта.
Но начнём по порядку — с поиска кандидатов на взлом. Не будет лишним напомнить, что взлом является уголовно наказуемым преступлением. Поэтому проявляйте благоразумность — не делайте ничего такого, что нарушает закон. Идеальным (с точки зрения юридической чистоты) является использование для обучения уязвимого скрипта на локалхосте или в одной из специализированных сред, которых сейчас имеется большое количество.
Подборка уязвимый сред для практики по взлому сайтов:
- bWAPP
- Damn Vulnerable Web Application (DVWA)
- Damn Vulnerable Web Services
- OWASP Broken Web Applications Project
- OWASP Mutillidae II
- Samurai Web Testing Framework
- Web Security Dojo
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= |
Открывайте сайты по одному из результатов поиска и пробуйте добавлять кавычку к переменной. Например, адрес сайта:
http://rsite.ru/rub.php?id=5
Тогда я пробую так:
http://rsite.ru/rub.php?id=5'
Если появляется какое-либо сообщение об ошибке 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 ставится элементарно — в одну команду, то можно загрузить самую свежую с официального сайта:
wget https://github.com/`curl -s https://github.com/ron190/jsql-injection/releases | grep -E -o '/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9]{1,2}.[0-9]{1,2}.jar' | head -n 1`
После загрузки запускаем так:
java -jar ./jsql-injection-v*.jar
Вот так выглядит главное окно программы:
Согласитесь, это было совсем просто — потраченные 5 секунд времени стоят того, чтобы работать в самой свежей версии.
Между прочим, это одна из тех программ для пентестинга, которые прекрасно работают в Windows.
Скачайте последнюю версию с официального сайта: https://github.com/ron190/jsql-injection/releases
Запустите скаченный файл двойным кликом (нужно иметь виртуальную машину Java).
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
Несомненным удобство является то, что не нужно искать другие программы. Здесь имеется поддержка множества самых популярных хешей.
Это не самый оптимальный вариант. Для того, чтобы стать гуру в расшифровке хешей, рекомендуется Книга «Продвинутый взлом паролей с *Hashcat» на русском языке.
Но, конечно, когда под рукой нет другой программы или нет времени на изучение, 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 Method: HTTP/1.1 200 OK Content-Length: 353 Date: Fri, 11 Dec 2015 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 Content-Type: text/html; charset=UTF-8
Здесь у нас какой-то из Unix (*BSD, Linux):
Transfer-Encoding: chunked Date: Fri, 11 Dec 2015 11:57:02 GMT Method: 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:
Method: 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 from t1.hoster.ru:6666 Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS from t1.hoster.ru Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Date: Fri, 11 Dec 2015 12:08:54 GMT 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 может стать лучшим другом новичка при анализе веб-сайтов.
Из недостатков я бы отметил невозможность редактирования баз данных (по крайней мере я этого функционала не нашёл). Как и у всех инструментов с графическим интерфейсом, к недостаткам этой программы можно приписать невозможность использования в скриптах. Тем не менее некоторая автоматизация возможна и в этой программе — благодаря встроенной функции массовой проверки сайтов.
Программой jSQL Injection пользоваться значительно удобнее чем sqlmap. Но sqlmap поддерживает больше видов SQL-инъекций, имеет опции для работы с файловыми файерволами и некоторые другие функции.
Итог: jSQL Injection — лучший друг начинающего хакера.
Справку по данной программе в Энциклопедии Kali Linux вы найдёте на этой странице: http://kali.tools/?p=706
Связанные статьи:
- Поиск админок (панелей управления) на сайтах (85.8%)
- Инструкция по использованию sqlmap. Ч.1: Основы работы (GET) (61.4%)
- Инструкция по использованию sqlmap. Ч.2: Продвинутое сканирование и эксплуатация (POST, после аутентификации, AJAX/jQuery) (61.4%)
- Инструкция по использованию sqlmap. Ч.3: Залив бэкдора, выполнение системных команд, изменение данных в БД (61.4%)
- Как пользоваться Kali Linux в WSL (подсистеме Windows для Linux): подборка лучших программ (ч. 1) (60.4%)
- lulzbuster – инструмент для быстрого поиска скрытых файлов и папок на сайтах (RANDOM - 53%)
Holy fluff, great job !! That's an incredible jSQL review 🙂 !
jsql можно обновить еще олее простым спосоом,не дублирюя в ненужных директориях. просто jar архив закинуть в usr/share/jsql и запускать в нормальном штатном режиме через меню 🙂
Во-первых, адрес неверный. Нужно менять исполнимый файл /usr/bin/jsql. Можете проверить «руками»:
Переименовываем файл:
Возвращаем всё обратно
Или так:
Во-вторых, я очень не люблю вручную что-либо менять в «системных» папках. Даже если ставлю новые программы, которых нет в репозиториях, то на любой системе делаю это в ~/opt/
Этому есть ряд причин:
В общем, каждый решает сам что делать со своей системой. Мою команду можно подредактировать так, чтобы она записывала новую версию в системную директорию:
вы не правы.можете сами проверить. адрес верный.только при копировании в директорию usr/share/jsql нужно переименовать jsql-injection-v0.73.jar в jsql-injection.jar. просто привести название в соответствие с исходным файлом.и запускается стандартно из панели меню.после этих манипуляций посмотрите версию. так-что ошибки никакой нет. из принципа проверил несколько раз.менять исполняемый файл не обязательно.
перебрался сюда с вашего первого сайта. интересную тему вы разрабатываете. я не говорю обо всех программах кали. но в линуксе решений одной и той же проблемы может быть много. я тоже не люблю вручную все перепахивать. отнимает время. но иной раз проще руками закинуть и не париться. точно так же как например и обновления тор-браузера в кали, или флеш плейера 🙂
Согласен с вами по поводу jSQL.
Файл /usr/bin/jsql — это всего лишь две команды.
Тогда мою команду следует записать:
Спасибо за добрые слова — это мотивирует. Если вы ещё не знаете про сайт https://kali.tools/, то заходите и туда. Там я пишу даже почаще, чем здесь.
здравствуйте алексей. за вашим творчеством слежу уже давно. просто не высвечиваюсь по мелочам 🙂 ваш варе биз всегда был в закладках. при смене системы первое что делал — ваш сайт загонял в закладки 🙂 о кали тулз знаю. уже там бывал не раз. даже сегодня заходил 🙂 ваша работа даже сподвигла на некторые сумасбродные идеи. а что если еще по блэкарч такой же сайт замутить? 🙂 но я слишком ленивый, чтобы пойти на реализацию такого проекта 🙂 кстати, если уже об этом говорить — тоже интересный вариант.по блэкарч еще ничего нет акромя самого сайта блэкарч. в принципе как до вас по кали линукс 🙂 а сам блэкарч не менее функционален чем кали. только поймите меня правильно. я ничего не предлагаю. просто под новый год захотелось пообщаться с умными людьми 🙂 с праздником Вас… желаю всего много-много и только хорошего в новом году 🙂
Прошло два года от твоего комента , но всё равно совет актуален . Я неделю лазил по инету , искал как-же обновить эту капризную прогу)