HTTPOXY -- CGI 环境变量劫持漏洞分析
漏洞 分析 -- 环境变量 劫持 CGI
2023-09-14 09:04:39 时间
昨晚,一个名为 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 暴露出来了,造成敏感信息泄漏。
![b70a401a1be87b0540bf48a7e37dda2fc2b0f653](https://oss-cn-hangzhou.aliyuncs.com/yqfiles/b70a401a1be87b0540bf48a7e37dda2fc2b0f653.png)
这里分享一下我们想到的两个利用场景: 1、CGI 程序与其它网站通信时,需要 CGI 程序带上某些身份信息的,如 AccessToken、gsid、key 等,那么这些敏感信息将会被非法的代理服务器接收到,造成敏感信息泄漏。 2、对于电商类网站,若通过设置 Proxy 头能截获到它向支付网关发送的请求,那么就可以篡改这个请求的返回包,如“将支付失败改为支付成功”,对原网站进行欺骗。 0x02 影响范围 理论上这个漏洞影响所有以 CGI 方式运行的程序。但漏洞利用受到以下限制: 1、CGI 程序不会对外发送请求; 2、CGI 程序不依赖 HTTP_PROXY 变量; 3、CGI 程序与外部使用非 HTTP 协议(如 HTTPS)进行通信。 如果符合上述其中一种情况,漏洞将无法利用。我们认为,此漏洞的危害程度没有外界宣传的那么高。
Proxy 并非一个规范的 HTTP Header,因此我们没必要去处理 HTTP 请求中 Proxy 头的内容。 由于每个应用的修复方案不一样,下面以 Nginx 和 Apache 进行举例: Nginx:在调用 FastCGI 的地方将 HTTP_PROXY 置为空。
python——脚本实现检测目标ip是否存在ftp笑脸漏洞(ftp后门漏洞) vsftpd2.3.4中在6200端口存在一个shell,使得任何人都可以进行连接,并且VSFTPD v2.3.4 服务,是以 root 权限运行的,最终我们提到的权限也是root;当连接带有vsftpd 2.3.4版本的服务器的21端口时,输入用户中带有“:) ”,密码任意,因此也称为笑脸漏洞。
网站漏洞扫描 某CMS代码的越权与install.php重置漏洞 客户网站前端时间被攻击,网站被劫持到了赌博网站上去,通过朋友介绍找到我们SINESAFE做网站的安全防护,我们随即对客户网站进行了全面的渗透测试,包括了网站的漏洞检测与代码安全测试,针对于发现的漏洞进行了修复,包括网站安全部署等等方面,下面我们将这一次的安全应急处理过程分享给有需要的客户。
phpcms2008网站漏洞修复 远程代码写入缓存漏洞利用 SINE安全公司在对phpcms2008网站代码进行安全检测与审计的时候发现该phpcms存在远程代码写入缓存文件的一个SQL注入漏洞,该phpcms漏洞危害较大,可以导致网站被黑,以及服务器遭受黑客的攻击,关于这次发现的phpcms漏洞细节以及如何利用提权我们来详细剖析。
网站漏洞扫描 某CMS代码的越权与install.php重置渗透测试漏洞 客户网站前端时间被攻击,网站被劫持到了du博网站上去,通过朋友介绍找到我们做网站的安全防护,我们随即对客户网站进行了全面的渗透测试,包括了网站的漏洞检测与代码安全测试,针对于发现的漏洞进行了修复,包括网站安全部署等等方面,下面我们将这一次的安全应急处理过程分享给有需要的客户。
网站漏洞检测 apache nginx解析绕过上传漏洞 在日常对客户网站进行渗透测试服务的时候,我们SINE安全经常遇到客户网站,app存在文件上传功能,程序员在设计开发代码的过程中都会对上传的文件类型,格式,后缀名做安全效验与过滤判断,SINE安全工程师在对文件上传漏洞进行测试的时候,往往发现的网站漏洞都是由于服务器的环境漏洞导致的,像IIS,apache,nginx环境,都存在着可以导致任意文件上传的漏洞。
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 暴露出来了,造成敏感信息泄漏。
![b70a401a1be87b0540bf48a7e37dda2fc2b0f653](https://oss-cn-hangzhou.aliyuncs.com/yqfiles/b70a401a1be87b0540bf48a7e37dda2fc2b0f653.png)
这里分享一下我们想到的两个利用场景: 1、CGI 程序与其它网站通信时,需要 CGI 程序带上某些身份信息的,如 AccessToken、gsid、key 等,那么这些敏感信息将会被非法的代理服务器接收到,造成敏感信息泄漏。 2、对于电商类网站,若通过设置 Proxy 头能截获到它向支付网关发送的请求,那么就可以篡改这个请求的返回包,如“将支付失败改为支付成功”,对原网站进行欺骗。 0x02 影响范围 理论上这个漏洞影响所有以 CGI 方式运行的程序。但漏洞利用受到以下限制: 1、CGI 程序不会对外发送请求; 2、CGI 程序不依赖 HTTP_PROXY 变量; 3、CGI 程序与外部使用非 HTTP 协议(如 HTTPS)进行通信。 如果符合上述其中一种情况,漏洞将无法利用。我们认为,此漏洞的危害程度没有外界宣传的那么高。
Proxy 并非一个规范的 HTTP Header,因此我们没必要去处理 HTTP 请求中 Proxy 头的内容。 由于每个应用的修复方案不一样,下面以 Nginx 和 Apache 进行举例: Nginx:在调用 FastCGI 的地方将 HTTP_PROXY 置为空。
fastcgi_param HTTP_PROXY "";Apache:借助 mod_headers 模块将 Proxy 头置为失效。
RequestHeader unset Proxy early其它应用的修复方案请参考应用官方公告或 0x04 中的参考资料。
python——脚本实现检测目标ip是否存在ftp笑脸漏洞(ftp后门漏洞) vsftpd2.3.4中在6200端口存在一个shell,使得任何人都可以进行连接,并且VSFTPD v2.3.4 服务,是以 root 权限运行的,最终我们提到的权限也是root;当连接带有vsftpd 2.3.4版本的服务器的21端口时,输入用户中带有“:) ”,密码任意,因此也称为笑脸漏洞。
网站漏洞扫描 某CMS代码的越权与install.php重置漏洞 客户网站前端时间被攻击,网站被劫持到了赌博网站上去,通过朋友介绍找到我们SINESAFE做网站的安全防护,我们随即对客户网站进行了全面的渗透测试,包括了网站的漏洞检测与代码安全测试,针对于发现的漏洞进行了修复,包括网站安全部署等等方面,下面我们将这一次的安全应急处理过程分享给有需要的客户。
phpcms2008网站漏洞修复 远程代码写入缓存漏洞利用 SINE安全公司在对phpcms2008网站代码进行安全检测与审计的时候发现该phpcms存在远程代码写入缓存文件的一个SQL注入漏洞,该phpcms漏洞危害较大,可以导致网站被黑,以及服务器遭受黑客的攻击,关于这次发现的phpcms漏洞细节以及如何利用提权我们来详细剖析。
网站漏洞扫描 某CMS代码的越权与install.php重置渗透测试漏洞 客户网站前端时间被攻击,网站被劫持到了du博网站上去,通过朋友介绍找到我们做网站的安全防护,我们随即对客户网站进行了全面的渗透测试,包括了网站的漏洞检测与代码安全测试,针对于发现的漏洞进行了修复,包括网站安全部署等等方面,下面我们将这一次的安全应急处理过程分享给有需要的客户。
网站漏洞检测 apache nginx解析绕过上传漏洞 在日常对客户网站进行渗透测试服务的时候,我们SINE安全经常遇到客户网站,app存在文件上传功能,程序员在设计开发代码的过程中都会对上传的文件类型,格式,后缀名做安全效验与过滤判断,SINE安全工程师在对文件上传漏洞进行测试的时候,往往发现的网站漏洞都是由于服务器的环境漏洞导致的,像IIS,apache,nginx环境,都存在着可以导致任意文件上传的漏洞。
相关文章
- 代码审计-phpcms9.6.2任意文件下载漏洞
- 【Python】批量爬取网站URL测试Struts2-045漏洞
- XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析
- Apache Shiro 身份验证绕过漏洞 复现(CVE-2020-11989)
- 墨者靶场 WordPress插件漏洞分析溯源
- 漏洞修复--FreeType 安全漏洞 (CVE-2020-15999)
- 【项目实战】基于XStream实现漏洞信息数据(XML格式)的手动导入功能
- CVE-2021-3129:Laravel远程代码漏洞复现分析
- 手动渗透测试漏洞
- Ewebeditor最新漏洞及漏洞大全
- Oracle数据库XXE注入漏洞(CVE-2014-6577)分析
- Struts2再曝高危漏洞(S2-020补丁绕过)
- 7. 畅捷通T+任意文件上传漏洞分析
- 9.CVE-2016-5195(脏牛)内核提权漏洞分析
- 物联网安全——本质上是UDP RCE漏洞:tddp 协议,https://www.anquanke.com/post/id/183202
- web未授权访问漏洞总结——mongodb、redis、memcache、jboss、vnc、docker、zk、rsync
- PHPCMS phpcmsmodulesmemberindex.php 用户登陆SQL注入漏洞分析
- 22 - vulhub - Fastjson 1.2.47 远程命令执行漏洞
- 漏洞修复--Linux 权限提升漏洞(CVE-2022-2588)
- Web应用程序漏洞-X-Forwarded-For注入
- CVE漏洞复现-CVE-2021-31805-struts2 s2-062 ONGL远程代码执行