SQLBruter v0.2

Опубликовано в журнале «Хакер»
#104, X-Tools

Назначение

SQLBruter — многофункциональный скрипт, реализующий перебор различными методами при атаках типа SQL Injection. При запросах с использованием UNION очень часто требуется определить количество выбираемых полей, названия таблиц и стобцов. Все это можно сделать с помощью моего скрипта. Кроме этого, SQLBruter осуществляет посимвольный перебор, т.е. с использованием конструкций типа «AND ascii(lower(substring([query],1,1))) > 97» и т.д. Важно сказать, что вам не придется указывать позицию символа — нужно лишь указать запрос и строку, возвращенную сервером, и в итоге вы получите полное содержание поля (например с хешем). Также в скрипте предусмотрено выведение результатов в файл и использование прокси.

Использование

Обязательные параметры:

  • host — Атакуемый сервер
  • path — Путь к скрипту с уязвимым параметром, например /index.php?id=1
  • mode — Тип брутфорса

На данный момент в программе предусмотрено 4 типа брутфорса:

  • 1 — Перебор количества выбираемых полей
  • 2 — Перебор названия таблицы
  • 3 — Перебор названия столбцов
  • 4 — Посимвольный перебор

Дополнительные параметры для каждого из методов:
Для первого типа

  • string — Строка, которую вернул сервер в ответ на неправильный запрос. Обычно при попытке подстановки неверного количества столбцов с помощью UNION сервер возвращает строку «The used SELECT statements have a different number of columns».
  • -n=[rows] — Необязательный параметр, отвечающий за максимальное количество столбцов. Скрипт будет проводить перебор пока не достигнет этого значения (По умолчанию 15).

Для второго типа

  • rows — Количество столбцов, которое можно определить с помощью первого метода. Необходимо при составлении UNION запроса.
  • string — Строка, которую вернул сервер в ответ на неправильный запрос. Обычно при переборе названия таблицы сервер возвращает строку «Table ‘название_таблицы’ doesn’t exist».
  • dic — Путь к словарю, содержащему предполагаемые названия таблиц. Обратите внимание на то, что если ваш словарь содержит выражения языка SQL (например union, outer, select и т.д.), то вы не получите желаемого результата, так как сервером будет возвращена другая строка и, следовательно, программа будет считать ее удовлетворяющей условию.
  • -pref=[value] — Использовать префикс перед названием таблицы (без разделяющего символа «_»).

Для третьего типа

  • rows — Количество столбцов, которое можно определить с помощью первого метода. Необходимо при составлении UNION запроса.
  • table — Имя таблицы, имена столбцов которой будет перебирать программа.
  • string — Строка, которую вернул сервер в ответ на неправильный запрос. Обычно при переборе названий столбцов сервер возвращает строку «Unknown column ‘имя_столбца’ in ‘field list'».
  • dic — Путь к словарю

Для четвертого типа

  • query — Запрос, результат выполнения которого мы будем перебирать (например user(), version(), database()). Если вы указали в качестве параметра query запрос типа «SELECT password FROM users WHERE username=’admin'», то его необходимо заключить в скобки.
  • string — Строка, которая должна присутствовать в выведенном ответе скрипта при выполнении условия.
  • -r[min:max] — Необязательный параметр, определяющий диапазон перебираемых символов (по умолчанию 97:122).

Опции:

  • -o=[file] — Запись результата в файл.
  • -p=[port] — Указать порт (по умолчанию 80).
  • -P=[ip:port] — Использование прокси.

Примеры:

php sqlbruter.php localhost /index.php?id=1 1 «different» -p=81
php sqlbruter.php www.host.ru /index.php?id=1 2 13 «exist» «/home/root/words.dic» -P=127.0.0.1:8080
php sqlbruter.php 127.0.0.1 /index.php?id=1 3 13 «users» «Unknown column» «/home/root/words.dic» -o=»/home/root/result.txt»
php sqlbruter.php 127.0.0.1 /index.php?id=1 4 «version()» «Hacked!» -r=48:122

Скачать sqlbruter-02.zip

Также читайте:
Автоматизированная эксплуатация SQL-инъекций


3 комментария

  1.  

    […] эксплуатации на примере использования PHP скрипта SQLBruter 0.2, созданного мною специально для этих […]

     
  2. axel, 21. сентября 2009, 17:38

    где указывать опции?

     
  3. Raz0r, 22. сентября 2009, 19:18

    в командной строке 🙂

     

Write a comment: