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

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
云安全中心 免费版,不限时长
云安全中心 防病毒版,最高20核 3个月
简介: 昨晚,一个名为 HTTPOXY 的漏洞在安全圈内广泛传播。云盾攻防对抗团队第一时间对此漏洞进行了深入分析,发现其本质是一个 CGI 环境变量劫持漏洞。受限于利用场景,漏洞危害有限。

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 参考资料


目录
相关文章
|
存储 JavaScript 前端开发
PHP代码审计之PHP危险函数总结
PHP代码审计之PHP危险函数总结
288 0
|
XML Web App开发 安全
DVR登录绕过漏洞&&phpstudy后门rce
DVR登录绕过漏洞&&phpstudy后门rce
DVR登录绕过漏洞&&phpstudy后门rce
|
安全
BurpSuite靶场系列之OS命令注入
BurpSuite靶场系列之OS命令注入
313 0
BurpSuite靶场系列之OS命令注入
|
编解码 安全 网络安全
【网络安全篇】php文件包含漏洞
🏆今日学习目标: 🍀学习php文件包含漏洞
128 0
【网络安全篇】php文件包含漏洞
|
Shell Linux 网络安全
【靶机】xss盗取cookie-sqlmap进阶-通配符提权-docker逃逸-The Marketplace
靶机难度中等,对小白不太友好,建议边打边看,学习一下思路。
321 0
|
安全 PHP
PHP Everywhere 三个 RCE 漏洞威胁大量 WordPress 网站
PHP Everywhere 三个 RCE 漏洞威胁大量 WordPress 网站
216 0
|
SQL 安全 程序员
那些登录被绕过的php代码都长什么样
尽管我自己很少做开发,但是我知道找bug和改bug的经历就像便秘一样难受。语法以及功能性的bug对于普通程序员来说还是相对容易找到的,但是对没有经过专门的安全培训的人来说,很难发现涉及安全方面的bug,准确地说是漏洞。 一般大公司的产品上线之前都会有专门的安全工程师对代码进行审计,一般是借助工具进行半自动或纯手动地审计,这可以使产品的安全性得到很大的保障。但即使这样也无法百分之百保证不会爆出漏洞,更何况是小公司,甚至是一些的个体户,这样的群体里的程序员几乎就是万金油,开发和审计的活都干了,当然质量就大打折扣了。
那些登录被绕过的php代码都长什么样
|
安全 中间件 Shell
文件包含漏洞利用方式-日志注入getshell
中间件的日志文件会保存网站的访问记录,比如HTTP请求行,User-Agent,Referer等客户端信息 如果在HTTP请求中插入恶意代码,那么恶意代码就会保存到日志文件中,访问日志文件的时候,日志文件中的恶意代码就会执行,从而造成任意代码执行甚至获取shell 比如使用代理工具抓包,在HTTP请求中插入一句话木马,访问日志文件时会执行一句话木马,然后使用蚁剑等工具链接,从而getshell
737 0
文件包含漏洞利用方式-日志注入getshell