漏洞反连检测相关知识
背景
最近工作中遇到一个新的客户需求,要支持漏洞反连检测,所以了解了一些知识,比较散,这里做个记录。以下内容多摘自网络博主
反连服务是什么?为什么要做?
很多时候,我们在进行漏洞检测时无法通过应用返回的信息来确定一个漏洞是否存在。但是如果命令/特殊操作确实执行了,那我们如何证明这个命令或者特殊操作执行了呢?我们习惯性把这种漏洞检测技术称为:无回显的漏洞检测技术。
什么是无回显漏洞?
目标机器执行了检测payload后,在返回的网站页面或http响应头中,均无法显示漏洞执行的结果信息。即不能通过返回的显示来判断漏洞存在。
无回显漏洞检测技术都有哪些?
2种:(1)sleep / benchmark 耗时操作检测 (2)dnslog / http-reverse / tcp / tls / rmi 等服务外连检测
DNS 反连检测原理
我们输入域名之后 我们的本地域名服务器会把在自身服务器里面查询是否存在ip地址 如果没有则发送到根域名服务器 如果根域名服务器里面有对应的记录则返回 如果没有则告诉本地域名服务器去向顶级域名服务器查找。dns在解析的时候会留下记录。当dns服务器是我们自己的时,我们就可以通过查看日志来查询一些信息
举个例子,服务外连时,我们执行 curl abc.example.com命令
1、这个时候,abc.example.com将会被解析,会查询 abc.example.com的 NS 记录和 A 记录
2、如果 NS 记录存在(http://ns1.example.com),会向 ns1.example.com查询 abc.example.com的 A 记录
3、如果 NS 不存在,则直接向公共服务器启用 A记录查询
上述描述的过程中,如果我们可以控制 ns1.example.com的话,任何用户查询的过程将会被记录下来。
当然,我们可以人为设置一个子域名,任何查询到这个子域名的请求被集合展示,这就是dnslog.cn的核心原理。
RMI / HTTP / TLS
在上面的例子中,我们 curl abc.example.com如果可以找到对应的 IP,将会对 IP 发起一个 HTTP 请求,这个请求的原始数据包和任何内容都可以被我们控制的反连服务器记录下来
1、如果我们实现了 HTTP 协议,将会记录下 HTTP 相关的详细信息
2、如果我们实现了 RMI / LDAP / TLS 等,就可以记录下反连时携带的信息
Dnslog利用场景:
1、sql注入
2、命令注入
3、XSS盲打等
NS记录/A记录是什么?
A (Address) 记录:是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的网页服务器(web server)上。同时也可以设置域名的子域名。
NS记录:是域名服务器记录。用来指定该域名由哪个DNS服务器来进行解析:每个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址一般以以下的形式出现:ns1.domain. com、ns2.domain. com等。
检测原理
将dnslog平台中的特有字段payload带入目标发起dns请求,通过dns解析将请求后的关键信息组合成新的三级域名带出,在ns服务器的dns日志中显示出来。
实验
参考https://www.cnblogs.com/sstfy/p/10351807.html
以上内容来自多个博主,只做自己记录使用