zoukankan      html  css  js  c++  java
  • HTTPoxy漏洞(CVE-2016-5385)

    HTTPoxy漏洞(CVE-2016-5385)
    漏洞原文在这里, https://httpoxy.org/
    简单来说,根据RFC 3875规定,cgi(fastcgi)要将用户传入的所有HTTP头都加上HTTP_前缀注册放入环境变量中,而恰好大多数类库约定俗成会提取环境变量中的HTTP_PROXY值作为HTTP代理地址。也就是说,如果header中发送一个Proxy:xxxxxx, 那么PHP就会把他注册为HTTP_PROXY环境变量, 于是getenv("HTTP_PROXY")就变成可被控制的了。那所有用户类似的请求,都会被代理到攻击者想要的地址。进而窃取数据包中可能存在的敏感信息。
    PHP5.6.24版本修复了该漏洞,不会再将Proxy放入环境变量中。本环境使用PHP 5.6.23为例。
    当然,该漏洞不止影响PHP,所有以CGI或Fastcgi运行的程序理论上都受到影响。
    关于CGI:
    CGI(Common Gateway Interface)公共网关接口,是外部扩展应用程序与 Web 服务器交互的一个标准接口。
    所周知,web服务器所处理的任务都是静态的,假如其要想处理动态的任务,则需要web应用程序的帮助,比如PHP,jsp,python,perl等为了将web服务器的动态请求传递给这些应用程序,依靠cgi协议
    简单的cgi工作方式:

    测试流程
    正常请求http://your-ip/index.php,可见其Origin为当前请求的服务器,二者IP相等:

    在其他地方找到一个可以正常运行的http代理,如http://x.x.122.65:8888/。
    附带Proxy: http://x.x.122.65:8888/头,再次访问http://your-ip/index.php:

    如上图,可见此时的Origin已经变成x.x.122.65,也就是说真正进行HTTP访问的服务器是x.x.122.65,也就是说x.x.122.65已经将正常的HTTP请求代理了。
    在x.x.122.65上使用NC,就可以捕获当前请求的数据包,其中可能包含敏感数据:

  • 相关阅读:
    使用POI操作Excel时对事先写入模板的公式强制执行
    centos7下python3和pycharm安装
    IntelliJ IDEA 快捷键终极大全
    netcore XmlDocument 使用Load和Save方法
    Add File as a Link on Visual Studio
    C#开源项目
    Shell bash和sh区别
    SecureCRT中Vim颜色
    查找局域网中未知设备的IP
    代码分支管理
  • 原文地址:https://www.cnblogs.com/Silkage/p/12717445.html
Copyright © 2011-2022 走看看