搭建Dnslog平台和Sqlmap使用Dns注入
2020-12-14 本文已影响0人
wycdavid
一、前言
- 最近的一些测试项目经常会遇到基于时间的盲注(time-blind),即便使用sqlmap工具也是很耗时的,而且盲注对于网络的延迟和稳定性也有一定的要求。网上一搜索都说dns注入可以有效的解决这个问题,可以让盲注的效率大大的提高。
- 这些文章思路大致都是,先自己搭建一个dnslog平台,或者使用一个现成的在线平台,然后sqlmap执行的时候加上--dns-domain=xxxx.com 参数就可以了,但是对于一个初学者来说,最后即便按照流程走下来也行不通。
二、结论和条件写在前面
- 先声明这只是我个人的理解,如有错漏,欢迎指正
- dnslog平台(不管是你自己搭建的还是第三方的)和sqlmap的dns注入没有任何关系,请注意我说的是在sqlmap中使用-dsn-domain参数的注入,你使用手工注入还是可以到平台上看结果的。如果你只是为了加速sqlmap的盲注,可以不用搭建dnslog平台
- 如果要实现sqlmap的dns注入,你需要一个有公网IP的VPS,两个域名(也有一个域名的方案,我没试过)
- 假设你有两个域名 a.com 和 b.com ,VPS的IP 是 xxx.xxx.xxx.xxx
- a.com 在域名解析中设置两条 A记录 ns1.a.com 和 ns2.a.com 都指向VPS的IP xxx.xxx.xxx.xxx
- 然后再把b.com的域名解析服务器设置成 ns1.a.com 和 ns2.a.com
- sqlmap的参数加上 --dns-domain=b.com
- 重点来了,很多文章中都没有提到过,sqlmap必须也要安装在这个VPS上,也就是说你并不能在别的电脑上使用sqlmap,然后设置个--dns-domain=b.com,这样是没有效果的。sqlmap其实在VPS上也会充当域名解析服务器的角色
- 还有一个坑就是,b.com 最好不要是腾讯云(dnspod)的域名,他的解析服务器我一直修改失败,即便设置了NS记录也不起作用,浪费了我大量的时间,一定要找个可以修改解析服务器的域名供应商。
三、具体步骤
1. 搭建dnslog平台
-
a.com 在域名解析中设置两条 A记录 ns1.a.com 和 ns2.a.com,都指向你的VPS公网IP
image.png - 把b.com的域名解析服务器设置成 ns1.a.com 和 ns2.a.com (我是https://cn.resellerclub.com/上买的)
image.png
image.png - 安装一个开源的dnslog平台,我装的是下面这个,复制到VPS上直接运行 main就行了
https://github.com/lanyi1998/DNSlog-GO/releases/
image.png -
访问web界面
image.png -
随便ping你的xxxx.b.com 域名
image.png -
可见平台已经接收到了数据,可以用于手动的或者脚本的dns注入测试
image.png - 注意,你的服务器还要开放dns解析的默认53端口
2. 基于sqlmap的dns注入
-
对于像我这样的新手来说,到了这一步以为就可以直接在sqlmap中使用dns注入了,我随便找了一台电脑,打开我的kali虚拟机,找了一个有时间盲注的靶机,开始跑sqlmap,发现报错 data retrieval through DNS channel failed,无法使用dns通道。
image.png -
各种百度,各种修改设置,还是不行,最后还是通过某个国外网站找到了答案,某位网友也有同样的问题,有人在下面回复,大致的意思就是 sqlmap要监听53端口,sqlmap要扮演dns服务器的角色
image.png -
我尝试在vps上安装sqlmap 然后测试,果然成功了,而且速度飞快。(如果之前运行过dnslog平台,记得先kill掉,否则53端口会被占用)
image.png
四、写在最后
- 对于我们初学者来说,很多时候只会依葫芦画瓢,某些时候别人觉得很简单的步骤,根本不用说,但是对于我们来说却很有可能导致复现失败。
- 我们不仅要会用这些工具,有条件的最好能够搞明白其中的原理,就比如我刚刚才发现,为啥sqlmap用了dns注入后,--dbs只返回了当前的数据库,而没有返回所有的数据库呢?也不知道是不是我哪里设置有问题,请高手不吝赐教。