Tundra21_a
Резидент
Что такое дорка и из чего она состоит?
Дорка - специальный запрос в поисковой системе для нахождения нужной информации.
Разберемся из чего состоит данная дорка - inurl:index.php?catid= intitle:shop site:com
Дорка делиться на несколько составляющих:
Inurl: , intitle:shop , site:com - параметры для поисковой системы.
Их достаточно много, но я использовал эти:
inurl:index.php?catid= - найдем сайты, где содержится все, после ":" в ссылке
(.index.php?catid=132 - Recherche Google).
intitle:shop - найдем сайты, где содержится "shop" внутри тега title (<title>shop</title>).
intext:shop - найдем сайты, где содержится "shop" внутри текста страницы.
site:com - найдем сайты в домене .com
Неплохая фича - расширенный поиск от гугла.
index - название файла.
Название может быть любым. Обычно при разработке сайтов используются распространенные названия, которые несут в себе логическое значение. Поэтому у большинства сайтов можно видеть одинаковые названия файлов.
.php - расширение файла. Более полный список можно найти здесь - Интернет, web файлы - расширения, форматы файлов
.html?
.php?
.asp?
.aspx?
.cfm?
.htm?
.ihtml?
.mvc?
.shtml?
.xhtml?
.cgi?
.jsp?
.php3?
.php4?
.php5?
.jspx?
.jsf?
.xml?
.jhtml?
.phtm?
.phtml?
.mhtml?
.asmx?
catid= - имя входного параметра.
Создаем дорки.
Исходя из этого, для себя я вижу несколько вариантов использования дорок:
- Поиск по частям дорок
- Поиск по доркам, собранным из разных частей
- Поиск по готовым вариантам дорок (не самый лучший способ).
Как начинал я.
Дорок у меня не было совсем, но были в запасе шопы, которые я спарсил с гугла
Я взял программу Acunetix Vulnerability Scanner
Вообще она предназначена для поиска уявзимостей на сайте, в том числе и скулей.
Но я использовал ее для составления карты сайта, тем самым узнавал части дорок.
Допустим у вас есть дорки/их составляющие.
Части дорок я собирал вручную, как и составлял полноценные дорки.
Также вручную я находил уязвимые сайты через гугл. Позже объясню почему руками работать лучше, чем всяческими SQLi Dumper-ами и прочими парсерами.
Как я искал сайты с помощью дорок:
- Название + расширение (inurl:buying-gift-cards.aspx? или inurl:buying-gift-cards).
- Расширение + параметр (inurl:aspx?MS_ID= или inurl:?MS_ID=)
- Название + поиск в <title> (inurl:email_signup. intitle:Sharing and Usage)
- Название + домен (inurl:ankle-biter. site:ws)
- Значение + поиск в <title> (inurl:?MS_ID= intitle:basket)
- Название или значение + поиск + домен (inurl:rim-strips.aspx? intitle:consumer reviews site:us или inurl:?sesskey= intitle:вход site:xn--p1ai)
Почему именно так? Иногда части дорок используются лишь на небольшом количестве сайтов, чтобы не создавать плохие дорки, тем самым сэкономить время, можно их просто загуглить.
Поиск уязвимых сайтов.
Все сайты я проверял вручную. Почему? На данный момент это лучший способ найти еще не раскрученный сайт.
Давайте будем разбираться на примере сайта - TOP - Ukiyoe Gallery SHUKADO .
Тот софт, что многие используют(SQLi Dumper, Havij) не позволяет полностью проверять сайты на уязвимость. Они не умеют работать через формы, через tamper data.
Поэтому ставим себе sqlmap: automatic SQL injection and database takeover tool - мультиплатформенную программу для пентестинга.
Также ставим GitHub - ron190/jsql-injection: jSQL Injection is a Java application for automatic SQL database injection. .
Вбил дорку в гугл, перешел на сайт. Какая может быть уязвимость на самом сайте? Банально подставляем в параметр.
Подмена заголовков в PHP.
Уязвимость в формах.
И т.д.
Sqlmap запускается через cmd. Если вы не устанавливали путь до файла python.exe, то запуск выглядит примерно так:
C:\Python27\python.exe F:\sqlmap\sqlmap.py -u Ukiyoe Gallery SHUKADO --dbs --random-agent --threads=10
Разберемся, что к чему. -u - целевой URL, --dbs - перечислить базы-данных, --random-agent - установить случайный юзер-агент, --threads - количество потоков.
Также есть функция парсинга с гугла по дорке, вместо -u, нужно подставить -g (-g inurl:index.php). Но я не советую ее использовать.
--dbs Перечислить базы данных СУБД
--tables Перечислить таблицы базы данных СУБД
--columns Перечислить колонки таблицы СУБД
--dump Сдампить записи таблицы базы данных СУБД
--dump-all Сдампить все записи таблиц базы данных СУБД
--search Поиск колонки(ок), таблиц(ы) и/или имени(имён) базы данных
--page-rank Показать page rank (PR) для результатов дорка Google
Опции:
-h, --help Показать базовую справку и выйти
-hh Показать продвинутую справку и выйти
--version Показать номер версии программы и выйти
-v VERBOSE Уровень вербальности: 0-6 (по умолчанию 1)
Цель:
По крайней мере одна из этих опций должна быть указана, чтобы задать цель(и)
-d DIRECT Строка подключения для прямого соединения с базой данных
-u URL, --url=URL Целевой URL
-l LOGFILE Парсить цель(и) из файлов логов Burp или WebScarab
-x SITEMAPURL Парсить цель(и) из удалённого файла sitemap(.xml)
-m BULKFILE Сканировать множество целей, заданных в текстовом файле
-r REQUESTFILE Загрузить HTTP запросы из файла
-g GOOGLEDORK Обработать результаты дорков Google как целевых URL
-c CONFIGFILE Загрузить опции из конфигурационного файла INI
Запросы:
Эти опции могут использоваться для определения как подключиться к целевому URL
--method=МЕТОД Принудительно использовать заданный HTTP метод (например, PUT)
--data=ДАННЫЕ Строка данных для отправки через POST
--param-del=РАЗД_ПАРfv Символ, используемый для разделения величин параметров
--cookie=КУКИ Значение заголовка HTTP куки HTTP
--cookie-del=РАЗДЕЛИТЕЛЬ_КУКИ Символ, используемый для разделения величин куки
--load-cookies=ФАЙЛ_ДЛЯ_ЗАГРУЗКИ Файл, содержащий куки в формате Netscape/wget
--drop-set-cookie Игнорировать заголовок Set-Cookie из ответа
--user-agent=AGENT Значение заголовка HTTP User-Agent
--random-agent Использовать случайно выбранное значение заголовка HTTP User-Agent
--host=ХОСТ Значение заголовка хоста HTTP
--referer=РЕФЕРЕР Значение заголовка HTTP Referer
-H ЗАГОЛОВОК, --header Дополнительный заголовок (к примеру, "X-Forwarded-For: 127.0.0.1")
--headers=ЗАГОЛОВКИ Дополнительные заголовки (к примеру, "Accept-Language: fr\nETag: 123")
--auth-type=ТИП_АУТ HTTP тип аутентификации (Basic, Digest, NTLM или PKI)
--auth-cred=ДАННЫЕ_АУТ учётные данные HTTP аутентификации (имя:пароль)
--auth-file=ФАЙЛ_АУТ файл HTTP аутентификации PEM сертификат/частный ключ
--ignore-401 Игнорировать ошибку HTTP 401 (Unauthorized) (Неавторизован)
--proxy=ПРОКСИ Использовать прокси для подключения к целевому URL
--proxy-cred=УЧЁТКА_ПРОКСИ Учётные данные аутентификации прокси (имя:пароль)
--proxy-file=ФАЙЛ_ПРОКСИ Загрузить список прокси из файла
--ignore-proxy Игнорировать дефолтные системные настройки прокси
--tor Использовать анонимную сеть Tor
--tor-port=TORPORT Установить порт прокси Tor отличный от дефолтного
--tor-type=TORTYPE Установить тип прокси Tor (HTTP (по умолчанию), SOCKS4 или SOCKS5)
--check-tor Проверить, используется ли Tor должным образом
--delay=ЗАДЕРЖКА Задержка в секундах между каждым HTTP запросом
--timeout=ТАЙМАУТ Секунды для ожидания перед таймаутом соединения (по умолчанию 30)
--retries=ПОПЫТКИ Попытки при таймаутах соединения (по умолчанию 3)
--randomize=ПАРАМЕТРЫ Случайно менять значения данного параметра(ов)
--safe-url=БЕЗОПАСНЫЙ_EURL URL адрес для частого посещения во время тестирования
--safe-post=POST Данные POST для отправки на безопасный URL
--safe-req=БЕЗОПАСНЫЙ_ФАЙЛ Load safe HTTP request from a file
--safe-freq=КОЛИЧЕСТВО Тестовые запросы между двумя визитами на заданный безопасный URL
--skip-urlencode Пропустить URL кодирование данных для запросов
--csrf-token=CSR.. Параметр используемый для удержания токена anti-CSRF
--csrf-url=CSRFURL URL адрес для посещения для извлечения токена anti-CSRF
--force-ssl Принудительное использование SSL/HTTPS
--hpp Использовать метод загрязнения параметра HTTP
--eval=EVALCODE Выполнить данные код Python перед запросом (например,
"import hashlib;id2=hashlib.md5(id).hexdigest()")
Оптимизация:
Эти опции могут использовать для оптимизации производительности sqlmap
-- Отключить все переключатели оптимизации
--predict-output Прогнозировать общий вывод запросов
--keep-alive Использовать постоянные соединения HTTP(s)
--null-connection Получить длину страницу без фактического тела ответа HTTP
--threads=ПОТОКИ Максимальное количество одновременных HTTP(s) запросов (по умолчанию 1)
Инъекция:
Эти опции могут использоваться для определения, какой параметр тестировать,
обеспечивать пользовательскую инъекционную нагрузку и дополнительные скрипты обфускации
-p TESTPARAMETER Тестируемый параметр(ы)
--skip=SKIP Пропустить тестирования данного параметра(ов)
--skip-static Пропустить тестирование параметров, которые не кажутся динамическими
--dbms=DBMS Принудительно указать СУБД
--dbms-cred=DBMS.. Данные аутентификации СУБД (пользователь:пароль)
--os=OS Принудительно указать операционную систему СУБД
--invalid-bignum Использовать большие числа для недействительных значений
--invalid-logical Использовать логические операции для недействительных значений
--invalid-string Использовать случайные строки для недействительных значений
--no-cast Отключить механизм отбора полезной нагрузки
--no-escape Отключить механизм экранирования строк
--prefix=PREFIX Предваряющая строка инъекционного запроса
--suffix=SUFFIX Завершающая строка инъекционного запроса
--tamper=TAMPER Использовать данный скрипт(ы) для обфускации инъекционных данных
Выявление:
Эти опции можно использовать для настройки фазы выявления
--level=УРОВЕНЬ Уровень выполнения тестирования (1-5, по умолчанию 1)
--risk=РИСК Риск выполняемого тестирования (1-3, по умолчанию 1)
--string=СТРОКА Строка, когда запрос выполнен в True (Истина)
--not-string=НЕ_ИСТИНА Строка, когда запрос выполнен в False (Ложь)
--regexp=РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ Регулярное выражение, когда запрос выполнен в True (Истина)
--code=КОД HTTP код, когда запрос выполнен в True (Истина)
--text-only Сравнить страницы основываясь только на текстовом содержимом
--titles Сравнить страницы основываясь только на их заголовках
Техники:
Эти опции можно использовать для поднастройки тестирования отдельных техник SQL инъекции
--technique=ТЕХНИКА Техники SQL инъекций для использования (по умолчанию "BEUSTQ")
--time-sec=TIMESEC Секунды для задержки ответа СУБД (по умолчанию 5)
--union-cols=UCOLS Диапазон колонок для тестирования с запросами UNION SQL инъекций
--union-char=UCHAR Символ для использования при брутфорсинге количества колонок
--union-from=UFROM Таблица для использования в FROM части UNION запроса SQL инъекции
--dns-domain=ДОМЕН Доменное имя, используемое для эксфильтрационной атаки DNS
--second-order=СТРОКА В результате по URL ищется ответ второго порядка
Отпечатки:
-f, --fingerprint Выполняет обширную сверку версии СУБД
Перечисления:
Эти опции могут использоваться для перечисления информации
системы управления базами данных, структуры содержащихся в
таблицах данных. Более того, вы можете запустить ваши собственные
SQL выражения
-a, --all Получить всё
-b, --banner Получить банер СУБД
--current-user Получить текущего пользователя СУБД
--current-db Получить текущую базу данных СУБД
--hostname Получить имя хоста сервера СУБД
--is-dba Определить, является ли текущий пользователь администратором СУБД
--users Перечислить пользователей СУБД
--passwords Перечислить хеши паролей пользователей СУБД
--privileges Перечислить пользовательские привилегии СУБД
--roles Перечислить пользовательские роли СУБД
--dbs Перечислить базы данных СУБД
--tables Перечислить таблицы базы данных СУБД
--columns Перечислить колонки таблицы СУБД
--schema Перечислить схему СУБД
--count Перечислить количество записей для таблицы(таблиц)
--dump Сдампить записи таблицы базы данных СУБД
--dump-all Сдампить все записи таблиц базы данных СУБД
--search Поиск колонки(ок), таблиц(ы) и/или имени(имён) базы данных
--comments Получить комментарии СУБД
-D БД БД СУБД для перечисления
-T ТБЛ Таблица(ы) БД СУБД для перечисления
-C КОЛ Колонка(и) таблицы
БД СУБД для перечисления
-X ПРОПУСТИТЬКОЛ Колонка(и) БД СУБД для не перечисления
-U ПОЛЬЗОВАТЕЛЬ Пользователи СУБД для перечисления
--exclude-sysdbs Пробустить системные БД СУБД при перечислении таблиц
--where=DUMPWHERE Использовать условие WHERE при дампинге таблиц
--start=LIMITSTART Первая выходная запись запроса для получения
--stop=LIMITSTOP Последняя выходная запись запроса для получения
--first=FIRSTCHAR Первый символ выходного слова запроса для получения
--last=LASTCHAR Последний символ выходного слова запроса для получения
--sql-query=QUERY SQL выражение для исполнения
--sql-shell Приглашение интерактивного SQL шелла
--sql-file=SQLFILE Выполнить SQL выражение из данного файла(ов)
Брут-форс:
Эти опции могут использоваться для записи проверок брут-форсом
--common-tables Проверить наличие распространённых таблиц
--common-columns Проверить наличие распространённых колонок
Инъекция заданных пользователем функций:
Эти опции могут быть использованы для создания определённых пользователем функций
--udf-inject Вставка предопределённых пользователем функций
--shared-lib=SHLIB Локальный путь до общей библиотеки
Доступ к файловой системе:
Эти опции могут быть использованы для доступа к файловой системе СУБД
--file-read=RFILE Прочитать файл из файловой системы СУБД
--file-write=WFILE Записать локальный файл в файловую систему СУБД
--file-dest=DFILE Абсолютный путь для записи файла в СУБД
Доступ к оперативной системе:
Эти опции могут быть использованы для получения доступа к ОС СУБД
--os-cmd=OSCMD Выполнить команду ОС
--os-shell Приглашение интерактивного шелла ОС
--os-pwn Прриглашение для внеполосного шелла, Meterpreter или VNC
--os-smbrelay Однокликовое приглашение для внеполосного шелла, Meterpreter или VNC
--os-bof Эксплуатация переполнения буфера хранимой процедуры
--priv-esc Повышение пользовательских привилегий процесса БД
--msf-path=MSFPATH Локальный путь где установлен Metasploit Framework
--tmp-path=TMPPATH Удалённый абсолютный путь директории временных файлов
Доступ к регистру Windows:
Эти опции могут использоваться к доступу к регистру Windows СУБД
--reg-read Прочитать значение ключа регистра Windows
--reg-add Записать значение ключа регистра Windows
--reg-del Удалить значение ключа регистра Windows
--reg-key=REGKEY Ключ регистра Windows
--reg-value=REGVAL Значение ключа регистра Windows
--reg-data=REGDATA Данные значения ключа регистра Windows
--reg-type=REGTYPE Тип значения ключа регистра Windows
Общие:
Эти опции могут быть использованы для установки общих рабочих параметров
-s SESSIONFILE Загрузить сессию из сохранённого файла (.sqlite)
-t TRAFFICFILE Записать весь HTTP трафик в текстовый файл
--batch Никогда не спрашивать пользовательского ввода, использовать поведение по умолчанию
--charset=CHARSET Принудительная кодировка символов, используемых для получения данных
--crawl=CRAWLDEPTH Ползать по веб-сайту начиная с заданного URL
--crawl-exclude=РЕГВЫРАЖЕНИЕ Регулярное выражение для исключения страниц для ползания (например, "logout")
--csv-del=CSVDEL Символ разделителя, используемый в выводе CSV (по умолчанию ",")
--dump-format=ДАМПФОРМАТ Формат сдампленных данных (CSV (по умолчанию), HTML или SQLITE)
--eta Отобразить для каждого вывода приблизительное время прибытия
--flush-session Стереть сессионные файлы для текущей цели
--forms Парсить и тестировать формы на целевой URL
--fresh-queries Игнорировать результаты запросов, сохранённые в сессионном файле
--hex Использовать шестнадцатеричную функцию(ии) СУБД для получения данных
--output-dir=OUT.. Пользовательский путь директории вывода
--parse-errors Парсить и отображать сообщения ошибок СУБД из ответов
--pivot-column=P.. Имя стержневой колонки
--save=SAVECONFIG Сохранить опции в конфигурационный INI файл
--scope=SCOPE Регулярное выражение для фильтрации целей из лога proxy
--test-filter=TE.. Выбрать тесты по полезной нагрузке и/или названиям (например, ROW)
--test-skip=TEST.. Пропустить тесты по полезной нагрузке и/или названиям (например, BENCHMARK)
--update Обновить sqlmap
Разное:
-z MNEMONICS Использовать короткие мнемоники (например, "flu,bat,ban,tec=EU")
--alert=ALERT Запустить команду(ы) ОС, когда найдена SQL инъекция
--answers=ANSWERS Установить ответ на вопрос (например "quit=N,follow=N")
--beep Сигнал на вопрос и/или когда найдена SQL инъекция
--cleanup Очистить СУБД от специфичных для sqlmap пользовательских функций и таблиц
--dependencies Проверить на отсутствующие (неосновные) зависимости sqlmap
--disable-coloring Отключить раскрашивание вывода в консоли
--gpage=GOOGLEPAGE Использовать результаты дорка Google с указанного номера страницы
--identify-waf Провести тщательное тестирование на WAF/IPS/IDS защиту
--skip-waf Пропустить эвристическое обнаружение WAF/IPS/IDS защиты
--mobile Имитировать смартфон через заголовок HTTP User-Agent
--offline Работать в оффлайн режиме (использовать только данные сессии)
--page-rank Показать page rank (PR) для результатов дорка Google
--purge-output Безопасно удалить всё содержимое из директории вывода
--smart Провести тщательные тесты только если эвристика дала положительные результаты
--sqlmap-shell Запрос интерактивного шелла sqlmap
--wizard Простой интерфейс мастера для начинающих пользователей
В программе имеется множество функций, главное понять что к чему, что как работает, ну и иметь хоть какие-нибудь знания английского.
Зачем нам jSQL Injection? Иногда удобно слить базу, также с его помощью можно найти страницу админки, залить шелл и прочее.
Мыслите творчески и у вас все получится