Опубликовано в журнале “Хакер”
#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-инъекций
Leave a Reply