Apache mod_proxy SSRF(CVE-2021-40438)

什么是php运行环境?

先明白什么叫环境,环境就是条件。PHP环境就是说,你要跑PHP要装些什么东西才能使电脑读懂PHP并执行PHP里面的语言。每一种语言都是一种约定,不是乱来写都能执行的,有约定就要有东西去判断是否合规则,合规则然后怎么去执行,这就是PHP环境。

当然要运行PHP就要有服务器,这是其一,但PHP又要用到其它的服务,比如说要存储东西,那么要用到数据库,那你得装个数据库,这是其二,如果你的不只是运行PHP,还要发布它到网上,这时又对计算机操作系统有点要求,一般都装服务器系统,比如LINUX系统支持这些服务。如果你想学PHP,简单点直接装个WAMPSERVER,里面有你想说的环境的所有东西。

目前主流的php环境是LAMP架构,即linux+apache+mysql+php,但是我们初学者在搭建环境的时候就是WAMP结构了,具体是windows+apache+mysql+php,也可以用集成安装包安装php环境,比如phpmyadmin. wamp。

如果我们要部署一个PHP运行环境,且将Apache作为Web应用服务器,那么常用的有三种方法:

  1. Apache以CGI的形式运行PHP脚本CGI叫做公共网关接口,在服务器遇到PHP脚本时会发送给CGI应用程序进行解释在发送给服务器,最后在返给需要请求的用户

  2. PHP以mod_php的方式作为Apache的一个模块运行就是将PHP集成到服务器上,以同一个进程运行

  3. PHP以FPM的方式运行为独立服务,Apache使用mod_proxy_fcgi模块作为反代服务器将请求代理给PHP-FPM反向代理到服务器上

第一种方式比较古老,性能较差,基本已经淘汰;第二种方式在Apache环境下使用较广,配置最为简单;第三种方法也有较大用户体量,不过Apache仅作为一个中间的反代服务器,更多新的用户会选择使用性能更好的Nginx替代。

反向代理是以代理服务器接受请求并进行转发给相应的服务器,反向代理服务器可以作为服务器的替身也可以作为内容服务器集群的负载均衡

这其中,第三种方法使用的mod_proxy_fcgi就是本文主角mod_proxy模块的一个子模块。mod_proxy是Apache服务器中用于反代后端服务的一个模块,而它拥有数个不同功能的子模块,分别用于支持不同通信协议的后端,比如常见的有:

  • mod_proxy_fcgi 用于反代后端是fastcgi协议的服务,比如php-fpm

  • mod_proxy_http 用于反代后端是http、https协议的服务

  • mod_proxy_uwsgi 用于反代后端是uwsgi协议的服务,主要针对uWSGI

  • mod_proxy_ajp 用于反代后端是ajp协议的服务,主要针对Tomcat

  • mod_proxy_ftp 用于反代后端是ftp协议的服务

除去mod_proxy_fcgi用于反代PHP,我们在使用Node.js、Python等脚本语言编写的应用也常常会使用mod_proxy_http作为一层反代服务器,这样中间层可以做ACL、静态文件服务等。

这次的SSRF漏洞是出在mod_proxy这个模块中的,我们就来从代码的层面分析一下它的原理是什么,究竟影响有多大。

创建pikachu靶场(windows)

第一步使用phpstudy+pikachu安装包

phpstudy下载地址:Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn)

下载pikachu地址: https://github.com/zhuifengshaonianhanlu/pikachu

首先打开小皮面板并且做出相应的配置

修改网站并且使用状态为正常

将pikachu的zip安装包解压并且放在phpstudy根目录下 

 最后通过网址进入靶场

进行初始化安装,初始化安装成功

SSRF漏洞分析

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。SSRF发起攻击的目标是从外网无法进入的内部系统,正是因为是由服务端直接发送请求的,所以能够请求到与他相连接但是与外网隔离的内部系统。

 SSRF工作原理:服务端从其他服务器应用获取数据没有对目标地址进行限制和过滤,比如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。利用的是服务端的请求伪造。ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器

攻击举例

1、使用靶机:pikachu

我们可以看到一个url参数,我们进行修改一下

url=file:///C:/windows/win.ini 

可以查看到win.ini配置文件,我们进行了SSRF攻击,成功查看到服务器的敏感文件内容,关于Windows和Linux敏感文件路径,可以百度一下 

2、打开Ubuntu虚拟机,安装vulhub漏洞环境(11条消息) Vulhub靶场搭建(Ubuntu 18.04)_Ashely-mess的博客-CSDN博客_ubuntu18.04安装vulhub

物理机访问http://192.168.140.132:7001/uddiexplorer/SearchPublicRegistries.jsp

 

说明端口未开放

 

利用 SSRF 探测内网 redis 是否开放 

相关复现(11条消息) [Vulhub] Weblogic SSRF 漏洞(CVE-2014-4210)_yAnd0n9的博客-CSDN博客_cve-2014-4210

(7条消息) SSRF漏洞原理攻击与防御(超详细总结)_零点敲代码的博客-CSDN博客_ssrf

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVE-2021-28041是一个安全漏洞,它影响了某个软件或系统的特定版本。由于我无法得知你具体指的是哪个软件或系统的CVE-2021-28041漏洞,因此无法提供具体的复现步骤。但是,我可以给你一些一般性的复现漏洞的方法和建议。 要复现CVE-2021-28041漏洞,通常需要以下步骤: 1. 确定受影响的软件或系统版本:首先,你需要确定你使用的软件或系统是否受到CVE-2021-28041漏洞的影响。可以查看相关厂商或组织发布的安全公告或漏洞报告来获取这些信息。 2. 了解漏洞的详细信息:阅读CVE-2021-28041漏洞的详细描述和相关文档,了解漏洞的原理和影响范围。这将帮助你更好地理解漏洞,并为复现做好准备。 3. 搭建实验环境:在一个安全的环境中,搭建一个与受影响软件或系统版本相匹配的实验环境。这可以是一个虚拟机、容器或者专门用于安全测试的实验环境。 4. 复现漏洞:根据漏洞的描述和相关文档,尝试复现CVE-2021-28041漏洞。这可能涉及到构造特定的输入、触发特定的操作或者利用软件或系统中的某个弱点。 5. 验证漏洞:一旦成功复现漏洞,验证漏洞的存在和影响。这可以通过观察系统行为、获取敏感信息或者执行未授权的操作来进行验证。 请注意,复现漏洞是一项敏感的活动,需要在合法授权和合法范围内进行。在进行任何安全测试之前,请确保你已经获得了相关授权,并遵守法律和道德规范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值