漏洞介绍:

  • 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?它们分别代表什么?这和局域网有关吗?具体是怎么影响的?如果各位有闲情逸致且有私人的服务器,可以复现一下此漏洞,指点下本菜鸟~多谢哈哈哈

最新文章

  1. 从Knockout到Angular的架构演变
  2. test 2016-12-6
  3. Sql视图创建语句
  4. openldap+phpadmin的搭建安装
  5. VirtualBox安装Ubuntu教程
  6. AC自动机算法详解
  7. LK光流算法:提高计算精度和增加搜索范围
  8. 微信分享朋友圈监听(PHP)
  9. 面向GC的Java编程
  10. CSS选择器汇总
  11. oracle 恢复数据到某个时间点
  12. Element-UI动态更换主题
  13. SQL SERVER 连接查询(join...on...)
  14. oracle删除当前用户以及当前用户所有表、索引等操作
  15. linux 开机自启动脚本
  16. Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
  17. tp5Auth权限实现
  18. 1、CentOS部署Java开发环境
  19. gentoo moc audacious
  20. leveldb源码分析--SSTable之逻辑结构

热门文章

  1. pat 乙级 1015. 德才论 (25) c++
  2. Building Applications with Force.com and VisualForce (DEV401) (二五):Visualforce Controller
  3. stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(一)
  4. 移动端H5调试
  5. 从阿里、腾讯的面试真题中总结了这11个Redis高频面试题
  6. SVN钩子HOOK设置自动备份,服务本地可以看到所有更新内容。
  7. Mysql 随笔记录
  8. js 图片轮播简单版
  9. Appium自动化(2) - appium环境安装常见问题的解决方案
  10. git log查看某文件的修改历史