1. Введение. Вообщем вот наконец то руки дошли до того чтобы написать мануал к моей проге . Так что на 95% вопросов по проге вы найдёте ответ тут. 2.Начинаем юзать. Первое что надо ввести в строку URL путь к уязвимому скрипту, порт HTTP сервера, настроить прогу на работу с прокси сервером на вкладке SETTINGS-->MAIN, установить таймаут ответа сервера на вкладке SETTINGS-->MAIN в миллисекундах и выбрать метод атаки п.2.1. 2.1.1 Метод GET Метод используется когда инъекция присутствует в GET параметре. Code: Пример: http://www.target.ru/vulnscript.php?id=1 Если уязвим параметр id , запрос на сервер принимает вид Code: http://www.target.ru/vulnscript.php?id=1{SQL} 2.1.2 Метод GET(With Cookie) Метод используется когда инъекция присутствует в кукисах, но используется GET Code: Пример: http://www.target.ru/vulnscript.php?id=1 Если уязвим параметр VulnCook в кукисах, запрос на сервер принимает вид Code: GET /vulnscript.php?id=1 HTTP/1.0 Host: www.target.ru Cookie: VulnCook={SQL} Connection: Close Стоит отметить , что если используются несколько параметров кукисов, то все неуязвимые параметры вводятся в таблицу, которая появляется по нажатии кнопки Cookie parameters, а уязвимый параметр вводится в поле Vulnerable parameter, а его обычное значение вводится в поле Value, собственно тот же принцип используется для POST параметров. 2.1.3 Метод Cookie(GET) Метод используется когда инъекция присутствует в GET параметре, но на сервер надо отправлять в заголовке определённый кукис(NeedCook), например для авторизации Code: Пример: http://www.target.ru/vulnscript.php?id=1{SQL} Если уязвим параметр id, запрос на сервер принимает вид Code: GET /vulnscript.php?id=1{SQL} HTTP/1.0 Host: www.target.ru Cookie: NeedCook=phpsession Connection: Close 2.1.4 Метод POST Метод используется когда инъекция присутствует в POST параметре. Code: Пример: http://www.target.ru/vulnscript.php Если уязвим параметр id , запрос на сервер принимает вид Code: POST /vulnscript.php?id=1 HTTP/1.0 Host: www.target.ru Connection: Close Id={SQL} 2.1.5 Метод POST(With Cookie)-очень редкий случай Метод используется когда инъекция присутствует в кукисах, но используется POST Code: Пример: http://www.target.ru/vulnscript.php Если уязвим параметр VulnCook в кукисах, запрос на сервер принимает вид Code: POST /vulnscript.php HTTP/1.0 Host: www.target.ru Cookie: VulnCook={SQL} Connection: Close 2.1.6 Метод Cookie(POST) Метод используется когда инъекция присутствует в POST параметре, но на сервер надо отправлять в заголовке определённый кукис(NeedCook), например для авторизации Code: Пример: http://www.target.ru/vulnscript.php Если уязвим параметр id, запрос на сервер принимает вид Code: POST /vulnscript.php?id=1{SQL} HTTP/1.0 Host: www.target.ru Cookie: NeedCook=phpsession Connection: Close id=1{SQL} 2.2 Ключевое слово или фраза (Текстовое поле String) Сюда вводится слово которое мы можем найти таким способом. Пример для метода GET, Cначала смотрим Code: http://www.target.ru/vulnscript.php?id=1 Потом смотрим Code: http://www.target.ru/vulnscript.php?id=2 находим то что есть здесь Code: http://www.target.ru/vulnscript.php?id=1 чего нет тут(сравниваем так сказать) Code: http://www.target.ru/vulnscript.php?id=2 Рядом есть поле в котором есть значение FOUND и NOT FOUND, он как раз и нужен для того чтобы выбирать метод поиска, FOUND - Этот кусочек кода, или фразы берётся за основу правильности (положительного заключения о том , что инъекция произведена правильно) NOT FOUND - Этот кусочек кода, или фразы берётся за основу НЕ правильности (тоже положительного заключения о том , что инъекция произведена правильно) TIP: Для автоматизации поиска можно использовать кнопку AUTO DETERMINE, но стоит отметить что тут может быть ложное определение или ложное не определение, когда кусок ключевое слово находится внутри тегов. 2.3 Галочка Use Basic Authorization и текстовые поля Login и Password служат для того чтобы проходить авторизацию для входа в определённые места сайта или для доступа к файлам. 3.1 Далее надо определить количество полей которые используются в запросе к БД, это можно сделать нажав на кнопку «LET KNOW QUANTITY» Тут есть несколько вариантов для просчёта: 3.1.1 Выпадающее меню «USE METHOD» Тут можно определить каким методом производить просчёт - UNION SELECT - ORDER BY - GROUP BY Вообще самым частым методом является ORDER BY и UNION SELECT Но предпочтительным методом для программы является UNION SELECT, так как этот метод сразу определяет и поля вывода(текстовое поле FIELD SUPPORTS PRINTING), необходимые для нескольких функций программы. Стоит отметить то что если вы определяли количество полей запроса методами ORDER BY и GROUP BY , и успешно определили, то стоит указать стартовое количество полей для поиска и конечное равным найденному кол-ву и выбрать метод UNION SELECT для определения полей с выводом, и нажать кнопку «LET KNOW QUANTITY» ещё раз. 3.1.2 Галочка Determine suppots printing fields using LIMIT Она нужна как альтернативный способ поиска полей с выводом. NOTE: можно так же заменить значение уязвимого параметра на не существующее значение, чтобы определить поля с выводом, опять же комбинируя это с галочкой 3.1.2 После удачного подбора количества полей, если вы используете метод GET, у вас появится строка в поле Work URL, нажав кнопку «Show in Browser» у вас откроется этот запрос в браузере. 4.1 Идентификация БД (SQL Injections -->Identifying DB) 4.1.1 Type of DB - В данный момент программа может определить два типа БД , это MySQL и MSSQL 4.1.2 USER() – имя пользователя базы данных от лица которого осуществляется подключение к БД Есть 3 варианта определения. UNION – самый приемлемый способ определения, серверу при этом посылается 1 запрос для определения всего значения сразу. TAKE ONE SYMBOL – посимвольное определение, брутит по одному символу. Причем интервал можно указать на закладке настроек. BRUTE –посимвольное определение, брутит всю стоку. Оба варианта, для использования в MySQL 3, или при не возможности определения стандартными способами. Ну или для камикадзе. 4.1.3 DATABASE() – имя базы данных к которой подключается скрипт для выполнения запроса. Способ работы аналогичен USER() п.4.1.2 4.1.4 VERSION() – версия базы данных к которой подключается скрипт для выполнения запроса. Способ работы аналогичен USER() п.4.1.2 4.1.5 выпадающее меню CONVERT может помочь при определении, значений используя UNION, когда база использует одну кодировку, а значения USER(),DATABASE(),VERSION() используют другую. 5.1 Брут названий таблиц и полей полей. (SQL Injections -->Identifying DB-->MySQL/MSSQL) Используется для перебора названий , как сказано выше.+ Для успешного перебора у вас должно быть подобрано количество полей по описанию в п.3.1.1 Тут отмечу что при переборе используются слова из внешних текстовых словарей, поэтому их перед началом работы надо подключить на вкладке SETTINGS-->DICTIONARY. Словари имеют 4 типа - Словарь таблиц (Table dictionary) - Словарь полей (Field dictionary) - Словарь префиксов (Prefix dictionary) - Словарь суффиксов (Suffix dictionary) NOTE: На той же вкладке их можно отредактировать . Для использования словарей префиксов и суффиксов вы должны отметить соответствующие галочки на вкладке (SQL Injections -->Identifying DB-->MySQL/MSSQL) «Use prefix from file when bruteforce tables and fields» «Use suffix from file when bruteforce tables and fields» Для постоянного использования одного префикса или суффикса, вы можете их вписать в поля Prefix и Suffix. Тогда они не будут браться из словарей. Далее нажимаем «GET TABLE NAMES» При этом если у вас все слова из словаря оказываются в этом списке, то настройки программы не верны. После успешного перебора, у вас выведется существующие таблице в атакуемой базе, вам надо выбрать нужную вам таблицу так чтобы вверху в сером поле появилось её название и продолжить сканировать таблицу на предмет нахождения названий полей, нажав кнопку «GET FIELD NAMES» NOTE: к названиям полей можно добавлять префиксы и суффиксы из словарей, программа у вас это спросит когда вы нажмёте кнопку «GET FIELD NAMES». 6.1 Получение названий таблиц и полей используя таблицу INFORMATION_SCHEMA. (SQL Injections -->Identifying DB-->DUMP INF_SCH) Актуально для MySQL5 и MSSQL Функция будет работать если у вас есть хотя бы одно поле вывода, и определено количество полей. Есть 2 варианта. -Table names only -- получение только названий таблиц -Table and column names – получение названий таблиц и колонок в них. Так же есть ограничитель получения данных , верхний уровень (FROM) по-умолчанию установлен 16, так как первых 15 таблиц стандартные и не несут большой информации. Кнопка «GO DUMP» , запускает процесс получения данных. Полученные данные можно сохранить в файл, нажав кнопку «SAVE TO FILE» Есть выпадающее меню «Convert», суть меню и его работа идентична п.4.1.5 7.1 Посимвольный брут произвольных данных (SQL Injections -->OneChar BruteForce) Актуально MySQL начиная с версии 4.1 и MSSQL. Используется для посимвольного брута данных из таблицы Интервал брута берётся с вкладки SETTINGS-->MAIN. Можно использовать запросы типа, SELECT id FROM news Кнопка «Preview SQL query» показывает предварительный запрос к серверу Кнопка «GET RESULT» запускает процесс брута. 8.1 Получение данных из БД. (SQL Injections-->Data BruteForce) Актуально для MySQL 4 и MSSQL Функция будет работать если у вас есть хотя бы одно поле вывода, и определено количество полей. Для начала надо заполнить поле Table названием нужной таблицы. Далее надо добавить в список названия нужных полей, вписывая эти названия в поле снизу от списка, и нажимая кнопку «ADD FIELD». Названия полей можно получить используя вкладки 5.1 и 6.1. NOTE: удалить ненужные поля из списка можно кнопкой «REMOVE FIELD» Далее настраивается стартовая и конечная позиция строки. Для того чтобы проверить правильность настроек можно нажать кнопку «TEST», если всё ок, то у вас должно будет появится значение выбранных полей разделённых двоеточием “:” в списке соответствующих первой строке в БД в поле слева от кнопки «TEST» Если значение появилось можно приступать к получению данных, для этого нажмите кнопку «GET IT». Полученные данные можно сохранить в файл , нажав кнопку «SAVE TO FILE» 9.1 Back connect from MSSQL Используется для того чтобы сделать бэкконнект из БД. При этом используется процедура БД MSSQL master..xp_cmdshell , для осуществления бэкконекта, надо проверить IP-адрес в строке и установить путь к NetCat на вкладке SETTINGS-->MAIN. При удачной эксплуатации у вас появится командная консоль в которой будет открыто соединение с сервером. 10.1 Работа с файлами 10.1.1 MySQL Используется для работы с файлами через SQL – инъекцию 10.1.1.1 Чтение файла Функция будет работать если у вас есть хотя бы одно поле вывода, и определено количество полей. Вам необходимо прописать абсолютный путь к файлу на сервере в поле нижнего фрейма. Пример: /home/user/public_hmtl/index.php И нажать кнопку «READ». В случае удачного чтения, файл появится на экране в окне редактора, где вы можете сохранить этот файл, воспользовавшись пунктом меню «SAVE FILE» 10.1.1.2 Загрузка файла на сервер Функция будет работать если : 1) у вас есть хотя бы одно поле вывода, 2) определено количество полей. 3) В КОНФИГУРАЦИИ СЕРВЕРА НЕ ДОЛЖНЫ ЭКРАНИРОВАТЬСЯ КАВЫЧКИ !! Опять же надо прописать абсолютный путь к создаваемого файла на сервере в поле верхнего фрейма. Тут есть 2 варианта заливки файла. - UNION – используется INTO OUTFILE (стандартный вариант) - ENCLOSED BY -- используется в MySQL начиная с версии 3 (Желательно использовать когда не работает 1 вариант) Текст файла для заливки на сервер вводятся в текстовое поле снизу. 10.1.2 MSSQL Все делается по аналогии с п.10.1.1 11.1 Терминал (Terminal) Используется для посылки произвольных пакетов на сервер, а также для просмотра ответа сервера (заголовка и тела ответа). Есть функция поиска в теле. Запрос пишется в «HTTP REQUEST» Заголовок ответа пишется «ANSWER: HTTP HEADER» Тело ответа пишется «ANSWER: HTTP BODY» Посылка запроса осуществляется по нажатию кнопки «SEND REQUEST» 12.1 История (History) Тут отображаются все запросы к серверу, и дополнительная информация. Её можно сохранить , воспользовавшись пунктом меню «HISTORY-->SAVE LOG», или очистить её нажав там же «HISTORY-->CLEAR LOG» 13.1 Настройки (Settings) 13.1.1 Общие (Main) Перевод интерфейса (Path to language file). Путь для NetCat (Path to NetCat) – используется в п.9.1 Настройки прокси (Proxy settings) - использовать прокси (галочка USE PROXY) - IP-адрес - Порт Символьный интервал (BruteForce symbol code interval) – используется в 4.1.2-4.1.5 и 7.1 Меню 1 . Закрывать SQL выражение (Close SQL) – используется для того чтобы отрубить оригинальный запрос, что бы не появлялась ошибка. Для каждой базы используются разные «Закрывашки» - MySQL = /* - MSSQL = -- Меню 2 . Изменить кавычки на аналог (Change quotes to) Используется чтобы обойти фильтрацию с скриптах. Меню 3 . Изменить пробел на аналог (Change space to) Используется чтобы обойти фильтрацию с скриптах Остальные возможности: Главное меню. Double Tools – увеличивается окно программы, можно произвольно компоновать вкладки программы, для удобства, например любое окно с терминалом или историей, кодерам и декодерами Default Settings – сбрасываются все настройки программы. STOP – останавливает работу программы. Раздел утилит (Tools) Содержит разнообразные кодеры и декодеры строк, таких как HEX,BASE64,URL-LIKE, PHP CHR Ваш SQLHack. PS прогу качать тут
вот счас тока прочитал , слов нет просто РЕСПЕКТ (все круто и прога и статья тоже )Все таки есть люди в РОССИЙ так держать мен )))
а как убрать кавычку если мне в запросе не надо пользоватся им? Автор объясни для чего служит опция Quote analog?