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 comments:

  1.  

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

     
  2. axel, 21. September 2009, 17:38

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

     
  3. Raz0r, 22. September 2009, 19:18

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

     

Write a comment: