zoukankan      html  css  js  c++  java
  • php--fpm 任意代码执行复现

    0x00:前言:

    在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送 %0a 符号时,服务返回异常,疑似存在漏洞。
    在使用一些有错误的Nginx配置的情况下,通过恶意构造的数据包,即可让PHP-FPM执行任意代码。

    0x01:漏洞描述

    CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码。
    向Nginx + PHP-FPM的服务器 URL发送 %0a 时,服务器返回异常。
    该漏洞需要在nginx.conf中进行特定配置才能触发。具体配置如下:

    攻击者可以使用换行符(%0a)来破坏fastcgi_split_path_info指令中的Regexp。 Regexp被损坏导致PATH_INFO为空,从而触发该漏洞。

    0x02 影响范围

    在 Nginx + PHP-FPM 环境下,当启用了上述 Nginx 配置后,以下 PHP 版本受本次漏洞影响,另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码执行:
    PHP 7.0 版本
    PHP 7.1 版本
    PHP 7.2 版本
    PHP 7.3 版本

    0x03 漏洞复现

    准备工作:安装 docker、golang 环境
    sudo apt-get install docker docker-compose
    sudo apt install golang

    搭建漏洞环境

    git clone https://github.com/vulhub/vulhub.git
    cd vulhub/php/CVE-2019-11043 && docker-compose up -d

    启动环境之后 访问ip:8080/index.php 可以看到默认页面

    安装利用工具

    1. git clone https://github.com/neex/phuip-fpizdam.git
    2. cd phuip-fpizdam
    3. go get -v && go build

    0x04漏洞利用

    0x05 修复方式


    在不影响正常业务的情况下,删除 Nginx 配置文件中的如下配置:
    fastcgi_split_path_info ^(.+?.php)(/.*)$;
    fastcgi_param PATH_INFO $fastcgi_path_info;

  • 相关阅读:
    Jmeter 调试接口用例怎么判断提取的上一个接口返回值是正确的?
    Jmeter 加密处理方法
    Apache Ignite 学习
    jmeter 中 浮点数计算精度问题
    httprunner 使用总结
    oh-my-zsh 安装及使用
    内置装饰器二:@property
    内置装饰器一:@classmethod、@staticmathod
    python实现列表的排序
    Mac git简易使用
  • 原文地址:https://www.cnblogs.com/Sylon/p/12918441.html
Copyright © 2011-2022 走看看