Инструкция по использованию 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=  

Открывайте сайты по одному из результатов поиска и пробуйте добавлять кавычку к переменной. Например, адрес сайта:

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

Вот так выглядит главное окно программы:

01


Согласитесь, это было совсем просто — потраченные 5 секунд времени стоят того, чтобы работать в самой свежей версии.

Между прочим, это одна из тех программ для пентестинга, которые прекрасно работают в Windows.

Скачайте последнюю версию с официального сайта: https://github.com/ron190/jsql-injection/releases

Запустите скаченный файл двойным кликом (нужно иметь виртуальную машину Java).

3. Анонимность при проверке сайта на SQL-инъекции

Настройка Tor и Privoxy в Kali Linux

[Раздел в разработке]

Настройка Tor и Privoxy в Windows

[Раздел в разработке]

Настройки работы через прокси в jSQL Injection

[Раздел в разработке]

02

4. Проверка сайта на SQL-инъекции с jSQL Injection

Работа с программой крайне проста. Достаточно ввести адрес сайта и нажать ENTER.

На следующем скриншоте видно, что сайт уязвим сразу к трём видам SQL-инъекций (информация о них указана в правом нижнем углу). Кликая на названия инъекций можно переключить используемый метод:

03

Также нам уже выведены имеющиеся базы данных.

Можно посмотреть содержимое каждой таблицы:

04

Обычно, самым интересным в таблицах являются учётные данные администратора.


Если вам повезло и вы нашли данные администратора — то радоваться рано. Нужно ещё найти админку, куда эти данные вводить.

5. Поиск админок с jSQL Injection

Для этого переходите на следующую вкладку. Здесь нас встречает список возможных адресов. Можете выбрать одну или несколько страниц для проверки:

05

Удобство заключается в том, что не нужно использовать другие программы.

К сожалению, нерадивых программистов, которые хранят пароли в открытом виде, не очень много. Довольно часто в строке пароля мы видим что-нибудь вроде

8743b52063cd84097a65d1633f5c74f5

Это хеш. Расшифровать его можно брутфорсом. И… jSQL Injection имеет встроенный брутфорсер.

6. Брутфорсинг хешей с помощью jSQL Injection

Несомненным удобство является то, что не нужно искать другие программы. Здесь имеется поддержка множества самых популярных хешей.

Это не самый оптимальный вариант. Для того, чтобы стать гуру в расшифровке хешей, рекомендуется Книга «Продвинутый взлом паролей с *Hashcat» на русском языке.

Но, конечно, когда под рукой нет другой программы или нет времени на изучение, jSQL Injection со встроенной функцией брут-форса придётся очень кстати.

06

Присутствуют настройки: можно задать какие символы входят в пароль, диапазон длины пароля.

7. Операции с файлами после обнаружения SQL-инъекций

Кроме операций с базами данных — их чтение и модификация, в случае обнаружения SQL-инъекций возможно выполнение следующих файловых операций:

  • чтение файлов на сервере
  • выгрузка новых файлов на сервер
  • выгрузка шеллов на сервер

И всё это реализовано в jSQL Injection!

Есть ограничения — у SQL-сервера должны быть файловые привилегии. У разумных системных администраторов они отключены и доступа к файловой системе получить не удастся.


Наличие файловых привилегий достаточно просто проверить. Перейдите в одну из вкладок (чтение файлов, создание шелла, закачка нового файла) и попытайтесь выполнить одну из указанных операций.

Ещё очень важное замечание — нам нужно знать точный абсолютный путь до файла с которым мы будем работать — иначе ничего не получится.

Посмотрите на следующий скриншот:

07На любую попытку операции с файлом нам отвечают: 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/:

08

Как видим, всё прошло прекрасно с первого раза.

Но вот сами шеллы jSQL Injection у меня вызывают сомнения. Если есть файловые привилегии, то вы вполне можете закачать что-нибудь с веб-интерфейсом.

8. Массовая проверка сайтов на SQL-инъекции

И даже эта функция есть у jSQL Injection. Всё предельно просто — загружаете список сайтов (можно импортировать из файла), выбираете те, которые хотите проверить и нажимаете соответствующую кнопку для начала операции.

09

Вывод по jSQL Injection

jSQL Injection хороший, мощный инструмент для поиска и последующего использования найденных на сайтах SQL-инъекций. Его несомненные плюсы: простота использования, встроенные сопутствующие функции. jSQL Injection может стать лучшим другом новичка при анализе веб-сайтов.

Из недостатков я бы отметил невозможность редактирования баз данных (по крайней мере я этого функционала не нашёл). Как и у всех инструментов с графическим интерфейсом, к недостаткам этой программы можно приписать невозможность использования в скриптах. Тем не менее некоторая автоматизация возможна и в этой программе — благодаря встроенной функции массовой проверки сайтов.

Программой jSQL Injection пользоваться значительно удобнее чем sqlmap. Но sqlmap поддерживает больше видов SQL-инъекций, имеет опции для работы с файловыми файерволами и некоторые другие функции.

Итог: jSQL Injection — лучший друг начинающего хакера.

Справку по данной программе в Энциклопедии Kali Linux вы найдёте на этой странице: http://kali.tools/?p=706


Рекомендуется Вам:

8 комментариев to Инструкция по использованию jSQL Injection — многофункционального инструмента поиска и эксплуатации SQL-инъекций в Kali Linux

  1. ron190:

    Holy fluff, great job !! That's an incredible jSQL review 🙂 !

  2. sha9:

    jsql можно обновить еще олее простым спосоом,не дублирюя в ненужных директориях. просто jar архив закинуть в usr/share/jsql  и запускать в нормальном штатном режиме через меню 🙂

    • Alexey:

      Во-первых, адрес неверный. Нужно менять исполнимый файл /usr/bin/jsql. Можете проверить «руками»:

      jsql # работает

      Переименовываем файл:

      mv /usr/bin/jsql /usr/bin/-jsql
      jsql # фейл

      Возвращаем всё обратно

      mv /usr/bin/-jsql /usr/bin/jsql

      Или так:

      root@HackWare:~# type jsql
      jsql is hashed (/usr/bin/jsql)

      Во-вторых, я очень не люблю вручную что-либо менять в «системных» папках. Даже если ставлю новые программы, которых нет в репозиториях, то на любой системе делаю это в ~/opt/

      Этому есть ряд причин:

      • очень многие пакеты в Kali так или иначе «допиливались» создателями дистрибутива. Однофайловая программа jSQL здесь скорее исключение.
      • при обновлении дистрибутива (например, при переходе с Kali 1 на Kali 2) любой «нежданчик» в системных директориях может привести к фейлу процесса обновления. А это верный путь к убийству системы и последующей её полной переустановке.
      • этот файл будет затёрт при обновлении версией из репозитория, которые обновляются с временным лагом. Например, мы сейчас заменили файл /usr/bin/jsql на jSQL версии 0.72, через месяц (когда мы уже об этом давно забыли) у автора выйдет 0.80, а в Kali из репозиториев обновиться до 0.60. Мы будем радоваться обновлению, если не вспомним, что из репозитория более старая версия затёрла более новую.

      В общем, каждый решает сам что делать со своей системой. Мою команду можно подредактировать так, чтобы она записывала новую версию в системную директорию:

      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` -O /usr/bin/jsql
      
  3. sha9:

    вы не правы.можете сами проверить. адрес верный.только при копировании в директорию usr/share/jsql нужно переименовать jsql-injection-v0.73.jar в jsql-injection.jar. просто привести название в соответствие с исходным файлом.и запускается стандартно из панели меню.после этих манипуляций посмотрите версию. так-что ошибки никакой нет. из принципа проверил несколько раз.менять исполняемый файл не обязательно.

    • sha9:

      перебрался сюда с вашего первого сайта. интересную тему вы разрабатываете. я не говорю обо всех программах кали. но в линуксе решений одной и той же проблемы может быть много. я тоже не люблю вручную все перепахивать. отнимает время. но иной раз проще руками закинуть и не париться. точно так же как  например и обновления тор-браузера в кали, или флеш плейера 🙂

  4. Alexey:

    Согласен с вами по поводу jSQL.

    root@HackWare:~# cat /usr/bin/jsql
    #!/bin/bash
    
    cd /usr/share/jsql/ && java -jar jsql-injection.jar "$@"

    Файл /usr/bin/jsql - это всего лишь две команды.

    Тогда мою команду следует записать:

    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` -O /usr/share/jsql/jsql-injection.jar

    Спасибо за добрые слова - это мотивирует. Если вы ещё не знаете про сайт https://kali.tools/, то заходите и туда. Там я пишу даже почаще, чем здесь.

    • sha9:

      здравствуйте алексей. за вашим творчеством слежу уже давно. просто не высвечиваюсь по мелочам 🙂 ваш варе биз всегда был в закладках. при смене системы первое что делал - ваш сайт загонял в закладки 🙂 о кали тулз знаю. уже там бывал не раз. даже сегодня заходил 🙂 ваша работа даже сподвигла на некторые сумасбродные идеи. а что если еще по блэкарч такой же сайт замутить? 🙂 но я слишком ленивый, чтобы пойти на реализацию такого проекта 🙂 кстати, если уже об этом говорить - тоже интересный вариант.по блэкарч еще ничего нет акромя самого сайта блэкарч. в принципе как до вас по кали линукс 🙂 а сам блэкарч не менее функционален чем кали. только поймите меня правильно. я ничего не предлагаю. просто под новый год захотелось пообщаться с умными людьми 🙂 с праздником Вас… желаю всего много-много и только хорошего в новом году 🙂

      • Yuriy_Ivanov:

        Прошло два года от твоего комента , но всё равно совет актуален . Я неделю лазил по инету , искал как-же обновить эту капризную прогу)

Добавить комментарий для Yuriy_Ivanov Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *