HTTPOXY -- CGI 环境变量劫持漏洞分析

2023-10-27

0x00 前言

        昨晚,一个名为 HTTPOXY 的漏洞在安全圈内广泛传播。云盾攻防对抗团队第一时间对此漏洞进行了深入分析,发现其本质是一个 CGI 环境变量劫持漏洞,对 CGI 的环境变量 HTTP_PROXY 变量进行劫持。如果 CGI 在运行过程中依赖 HTTP_PROXY,那么攻击者将能够获取到程序敏感数据,甚至伪造返回包对 CGI 程序实现欺骗。

0x01 漏洞分析

         这个漏洞实际上 CGI 程序对变量命名不规范导致的。CGI 程序在接收到 HTTP Header 后,会把部分 Header 的信息存入以 HTTP_ 开头的变量中。Header 中要是出现了 Proxy 头,那么 Proxy 头中的信息会存放在 HTTP_PROXY 的变量中。巧合的是,CGI 程序环境变量中本身就定义了一个 HTTP_PROXY 变量,作用是为 CGI 程序设置代理。因此,如果我们在请求中带上了 Proxy 头,那么 HTTP_PROXY 变量将会被我们发送的内容覆盖,实现 HTTP_PROXY 变量劫持。需要注意的是,覆盖的变量只对当次请求有效,不会对全局的 HTTP_PROXY 变量造成影响。
        我们在 x.x.27.216 上用 nc 监听 23333 端口,然后向受害网站 x.x.25.84 发送的请求中加入 Proxy 头 "x.x.27.216:23333"。如下图所示,受害网站在向 restapi.amap.com 请求数据,而这个请求被我们的机器截获到了,漏洞利用成功。同时,这个请求将网站在 restapi.amap.com 使用的 KEY 暴露出来了,造成敏感信息泄漏。
         这里分享一下我们想到的两个利用场景:
         1、CGI 程序与其它网站通信时,需要 CGI 程序带上某些身份信息的,如 AccessToken、gsid、key 等,那么这些敏感信息将会被非法的代理服务器接收到,造成敏感信息泄漏。
         2、对于电商类网站,若通过设置 Proxy 头能截获到它向支付网关发送的请求,那么就可以篡改这个请求的返回包,如“将支付失败改为支付成功”,对原网站进行欺骗。

0x02 影响范围

        理论上这个漏洞影响所有以 CGI 方式运行的程序。但漏洞利用受到以下限制:
        1、CGI 程序不会对外发送请求;
        2、CGI 程序不依赖 HTTP_PROXY 变量;
        3、CGI 程序与外部使用非 HTTP 协议(如 HTTPS)进行通信。
        如果符合上述其中一种情况,漏洞将无法利用。 我们认为,此漏洞的危害程度没有外界宣传的那么高。

0x03 修复方案

         Proxy 并非一个规范的 HTTP Header,因此我们没必要去处理 HTTP 请求中 Proxy 头的内容。 由于每个应用的修复方案不一样,下面以 Nginx 和 Apache 进行举例:
          Nginx:在调用 FastCGI 的地方将 HTTP_PROXY 置为空。

fastcgi_param HTTP_PROXY "";

          Apache:借助 mod_headers 模块将 Proxy 头置为失效。

RequestHeader unset Proxy early

          其它应用的修复方案请参考应用官方公告或 0x04 中的参考资料。

0x04 参考资料

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTPOXY -- CGI 环境变量劫持漏洞分析 的相关文章

随机推荐

  • Spring Security OAuth2.0(五)-----OAuth2实现自定义统一认证登录页/自定义授权页/基于mysql存储数据

    本次实例涉及三个项目 核心项目工程unify authorization server 认证授权登录 资源服务器项目unify resource server 测试项目是前面几篇写的项目 这里没有改动直接用来测试实例项目 一 unify a
  • 区块链中的签名怎么签?

    想知道更多区块链技术知识 请百度 链客区块链技术问答社区 链客 有问必答 明星的签名在粉丝的眼中视若无价 生意场上的签名被视为不可抵赖 而在区块链中 数字签名 也是一个独一无二的数值 如今网络环境愈发宽泛 大量的信息通过网络传播留下痕迹 人
  • ACCESS中用SUM()函数的精度问题

    链接来自 https zhidao baidu com question 74046761 html 我在access中使用sum函数时也遇到了该问题 明明数据表中存储的数据是两位小数 通过select value from t table
  • 佐美人--arm32/64/openwrt文件系统移植

    为了让不在OpenWrt项目支持列表中的ARM机器快速使用OpenWrt 可以用替换rootfs的简易方法进行移植 首先 确保你的ARM盒子有能正常使用的Linux系统 并且最好有良好的社区支持 可以去armbian寻找有开源支持的开发板
  • TS泛型用法

    泛型 可以理解为更广泛的类型 也就是说我们在函数 接口 类等中 约束数据类型的时候 可以通过泛型的方式来实现类型的传参 让数据的类型也可以根据传递的类型值来控制 一 函数中的泛型 1 定义泛型函数 基础语法 function 函数名 lt
  • python---之plt.subplot画图详解

    转载 https www cnblogs com nju2014 p 5620776 html Matplotlib 详解图像各个部分 首先一幅Matplotlib的图像组成部分介绍 在matplotlib中 整个图像为一个Figure对象
  • 关于word中插入知网e-study插件问题

    写论文过程中难免会出现word中e study莫名其妙的被禁止 估计是被杀毒软件或启动项什么的优化禁止了 打开word gt word选项 gt 加载项 gt 管理 gt 禁用项目 gt 把e study相关插件删除 在COM 加载项中将
  • Python温习(四)——编程常识与正则

    基础功能 Python中 前面已经创建了变量类型并赋值存在的对象 下次再进行使用的时候 不需要重新再次进行输入 只需要进行输入前两个字母 以Tab键进行历史对象查找后 进行切换回车 1 input和print输入 输出 da input 请
  • 2019-2020-1 1823《程序设计与数据结构》第二、三周作业总结

    作业地址 第二 三周作业总结 https edu cnblogs com campus besti 2019 2020 1 1823 PDDS homework 7585 提交情况如图 忘记提交作业 已在博客分中扣除相应的分数 作业问题 优
  • 2023华为OD机试真题-分界线(JAVA、Python、C++)

    题目描述 电视剧 分界线 里面有一个片段 男主为了向警察透露案件细节 且不暴露自己 于是将报刊上的字剪切下来 剪拼成匿名信 现在有一名举报人 希望借鉴这种手段 使用英文报刊完成举报操作 但为了增加文章的混淆度 只需满足每个单词中字母数量一致
  • sqlmap详细使用教程

    文章目录 简介 SQL注入 流程 命令参数 拓展 SQLmap用户手册 简介 Sqlmap是一个自动化检测和利用SQL注入漏洞的免费开源工具 对SQL注入漏洞进行检测的最佳工具 支持对多种数据库进行注入测试 能够自动识别数据库类型并注入 支
  • 买卖股票类问题动态规划解法(Leetcode题解-Python语言)

    在 Leetcode 中 关于买卖股票的问题共有6道 而这些题目是可以用相同的思维进行求解的 强烈推荐这篇总结 写得非常到位 股票类问题的动态规划分三步走 1 首先明确方程的含义 T i k 0 表示在第 i 天结束时 最多进行 k 次交易
  • 架构演变

    一 传统架构方式 最初做项目时 架构一般都会分为3层 即表现层展示系统界面 业务层处理各种业务逻辑 持久层操作来源于数据库中的数据 数据库中则存储我们需要存储的数据 这种三层架构的方式适用于大多数项目 但这种方法还不能称之为架构 我们做的时
  • PyTorch中张量的shape和stride的关系

    个人总结 以下是juppyter notebook下的实验
  • Web安全常见漏洞原理、危害及其修复建议

    web安全常见漏洞原理 危害及其修复建议 一 SQL注入漏洞 原理 危害 修复建议 二 XSS漏洞 原理 危害 修复建议 三 CSRF漏洞 原理 危害 修复建议 四 SSRF漏洞 原理 危害 预防建议 五 文件上传漏洞 原理 危害 修复建议
  • 弗洛伊德算法(floyd)

    算法背景 图中的A B C D E F G 代表7个村庄 边上的权值带表两村庄之间的距离 现在要从某一个村庄 例如G村庄 往另外几个村庄送邮件 问任意一村庄到其他各村庄的最短距离分别是多少 思路 该问题实际是求从任一顶点到其余顶点的最短距离
  • 揭秘京东城市时空数据引擎—JUST如何助力交通流量预测

    2014年跨年夜上海外滩人流隐患事件 使得公共安全问题受到了全体社会的广泛关注 解决这一问题的很重要一项工作就是 如何实时监控和快速预测城市中每个地方的人流量 当某个地方的人流量超过给定的值或者有超过给定值的趋势时 相关部门能及时地采取相关
  • Python学习笔记(六):数据可视化

    1 使用matplotlib绘制图形 1 1 绘制折线图 import matplotlib pyplot as plt b 1 2 3 4 5 6 7 a 1 4 9 16 25 36 49 plt plot b a linewidth
  • js在控制台输出菱形

    js在控制台输出菱形 以一个上半部分10行 下半部分9行的为例 var str 在控制台输出要采用字符串拼接 所以先定义一个空字符串 for var row 1 row lt 10 row 外层循环控制行数 先输出上半部分的10行 for
  • HTTPOXY -- CGI 环境变量劫持漏洞分析

    0x00 前言 昨晚 一个名为 HTTPOXY 的漏洞在安全圈内广泛传播 云盾攻防对抗团队第一时间对此漏洞进行了深入分析 发现其本质是一个 CGI 环境变量劫持漏洞 对 CGI 的环境变量 HTTP PROXY 变量进行劫持 如果 CGI