搭建Dnslog平台和Sqlmap使用Dns注入

一、前言

  • 最近的一些测试项目经常会遇到基于时间的盲注(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只返回了当前的数据库,而没有返回所有的数据库呢?也不知道是不是我哪里设置有问题,请高手不吝赐教。

你可能感兴趣的:(搭建Dnslog平台和Sqlmap使用Dns注入)