HTTPoxy漏洞(CVE-2016-5385)复现记录
2024-09-07 10:52:59
漏洞介绍:
- httpoxy是cgi中的一个环境变量;而服务器和CGI程序之间通信,一般是通过进程的环境变量和管道。
- CGI介绍
- CGI 目前由 NCSA 维护,NCSA 定义 CGI 如下:CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP 服务器,提供同客户端 HTML 页面的接口。
- CGI 程序可以是 Python 脚本,PERL 脚本,SHELL 脚本,C 或者 C++ 程序等。
- CGI是比较原始的开发动态网站的方式。
- 工作原理:
- 客户浏览器访问url,向web服务器发出请求;
- 服务器接收到后解析request包,并将数据包中的各个参数写进进程的环境变量,服务器调用CGI程序处理请求;
- CGI程序生成动态内容,交给服务器,服务区返回response包给浏览器。
查阅资料:https://www.zhihu.com/question/19998865 ;https://www.runoob.com/python/python-cgi.html ; https://httpoxy.org/ ;https://www.cnblogs.com/wanghetao/p/3934350.html
漏洞产生的原理:
- 有了以上的铺垫,可以大概猜想,如果cgi处理解析后的环境变量时,没有进行安全检查,可能会被黑阔恶意利用。而httpoxy,恰是本次漏洞的切入点。
- 在CGI(RFC 3875)的模式的时候, 会把http头部, 加上HTTP_ 前缀, 注册为环境变量。 如果在Header中发送一个Proxy:xxxxxx, 那么PHP就会把他注册为HTTP_PROXY环境变量,篡改着就可以在该代理服务器上监听这些请求。
影响版本:
PHP5.6.24版本修复了该漏洞,不会再将Proxy
放入环境变量中。本环境使用PHP 5.6.23为例。但该漏洞不止影响PHP,所有以CGI或FastCGI的运行的程序理论上都受到影响。
漏洞复现:
这里涉及一个简单设置代理服务器,请跳转至该blog:
- 正常访问页面时,返回包如下,origin是本局域网的公网ip。
- 加入proxy:http://192.168.183.129:8888字段后,可以看到origin字段变化,返回的信息是公网的ip+目标服务器的ip,这个似乎和官方复现的结果不一样,按照预期,应该返回代理服务器的ip。
- 这里找了一些帖子,好像也没有达到官方的复现效果,在线等一个大佬回答QAQ,在查看squid服务日志时,却可以看到代理成功了,
可以看到是服务器ip去请求http://httpbin.org/get,且数据的格式是json。
- 思考:为什么返回了多个ip?它们分别代表什么?这和局域网有关吗?具体是怎么影响的?如果各位有闲情逸致且有私人的服务器,可以复现一下此漏洞,指点下本菜鸟~多谢哈哈哈
最新文章
- 从Knockout到Angular的架构演变
- test 2016-12-6
- Sql视图创建语句
- openldap+phpadmin的搭建安装
- VirtualBox安装Ubuntu教程
- AC自动机算法详解
- LK光流算法:提高计算精度和增加搜索范围
- 微信分享朋友圈监听(PHP)
- 面向GC的Java编程
- CSS选择器汇总
- oracle 恢复数据到某个时间点
- Element-UI动态更换主题
- SQL SERVER 连接查询(join...on...)
- oracle删除当前用户以及当前用户所有表、索引等操作
- linux 开机自启动脚本
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
- tp5Auth权限实现
- 1、CentOS部署Java开发环境
- gentoo moc audacious
- leveldb源码分析--SSTable之逻辑结构
热门文章
- pat 乙级 1015. 德才论 (25) c++
- Building Applications with Force.com and VisualForce (DEV401) (二五):Visualforce Controller
- stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(一)
- 移动端H5调试
- 从阿里、腾讯的面试真题中总结了这11个Redis高频面试题
- SVN钩子HOOK设置自动备份,服务本地可以看到所有更新内容。
- Mysql 随笔记录
- js 图片轮播简单版
- Appium自动化(2) - appium环境安装常见问题的解决方案
- git log查看某文件的修改历史