用户
搜索
  • TA的每日心情
    无聊
    2019-6-14 09:46
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]经常看看II

    i春秋-核心白帽

    Rank: 4

    178

    主题

    265

    帖子

    1852

    魔法币
    收听
    0
    粉丝
    3
    注册时间
    2018-4-25
    发表于 2019-10-24 20:15:06 31211
    本帖最后由 Skey11 于 2019-10-26 12:13 编辑

    PHP-FPM 远程代码执行漏洞(CVE-2019-11043)

    在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送 %0a 符号时,服务返回异常,疑似存在漏洞。

    在使用一些有错误的Nginx配置的情况下,通过恶意构造的数据包,即可让PHP-FPM执行任意代码。

    并尝试使用phuip-fpizdam [url]运行。好的输出是这样的:

    这是一个漏洞在php-fpm (CVE-2019-11043)。在某些nginx + php-fpm配置中,可能会从外部触发bug。这意味着,如果您有脆弱的配置(见下面),web用户可能会得到代码执行。

    如果一个webserver运行nginx + php-fpm和nginx有一个类似的配置

    php(/|$) {

    fastcgi_split_path_info ^ (. + ? \。php)(/ . *)美元;

    fastcgi_param PATH_INFO fastcgi_path_info美元;

    fastcgi_pass php: 9000;

    }

    它也没有任何脚本存在性检查(比如try_files),那么您可以使用这个sploit破解它。


    所有的前提条件


    Nginx + php-fpm, location ~ [^/]\.php(/|$)必须被转发到php-fpm(也许regexp可以更严格一些,见第一条)。

    fastcgi_split_path_info指令必须在那里,并包含一个以^开头,以$结尾的regexp,所以我们可以用换行符来中断它。

    必须通过语句fastcgi_param PATH_INFO $fastcgi_path_info;分配一个PATH_INFO变量。起初,我们以为它总是出现在fastcgi_params文件中,但事实并非如此。

    没有像try_files $uri =404或if (-f $uri)这样的文件存在性检查。如果Nginx在FastCGI转发之前将请求丢给不存在的脚本,那么我们的请求永远不会到达php-fpm。添加这个也是最简单的修补方法。

    这个漏洞只适用于PHP 7+,但是在早期版本中也有漏洞(见下面)。

    多年来这不都是脆弱的吗?


    很久以前,PHP -fpm并没有对脚本的扩展进行限制,这意味着像/avatar.png/之类的东西可以作为PHP脚本执行avatar.png。这个问题在2010年左右得到了解决。


    目前的版本不需要上传文件,可以在最新版本中使用(直到修复完成),最重要的是,这个漏洞要酷得多。


    如何运行


    安装使用


    去安装github.com/neex/phuip-fpizdam

    并尝试使用phuip-fpizdam [url]运行。好的输出是这样的:


    基本状态码是200

    qsl=1745的状态码500,作为候选添加

    目标可能是脆弱的。可能的QSLs: [1735 1740 1745]

    找到攻击参数:——qsl 1735——pisos 126——跳跃侦测

    试图设置“session.auto_start=0”…

    Detect()返回攻击参数:—qsl 1735—pisos 126—skip-detect <—请记住这一点

    使用php.ini设置执行攻击…

    2019/10/01 02:46:40成功!能够通过附加“?”来执行命令吗?= / bin / sh + - c +的+这“&”url

    试图清理/tmp/a…

    2019/10/01 02:46:40完成了!

    在此之后,可以开始将?a=<命令>附加到所有PHP脚本中(可能需要多次重试)。

    关于PHP5

    PHP -fpm中的缓冲区下溢出现在PHP版本5中。但是,这个漏洞利用了一个用于存储FastCGI变量_fcgi_data_seg的优化。这种优化只出现在php 7中,所以这种特殊的利用只适用于php 7。在php 5中可能还有另一种利用技术。


    学分


    由d90pwn在真实世界CTF中发现的原始异常。由我(Emil Lerner)创建的根子句,以及设置php.ini选项的方法。最终的php.ini选项集由beched找到。


    https://bugs.php.net/bug.php?id=78599


    1.png
    CVE-2019-11043.png
    远程代码执行漏洞(CVE-2019-11043).png
    发表于 2019-10-26 16:40:25
    机翻吧,原文地址是啥。
    ―无名小卒―
         RG路过
           (-.-)
    ――――――
    使用道具 举报 回复
    发表于 2019-10-26 18:36:52
    Red_G 发表于 2019-10-26 08:40
    机翻吧,原文地址是啥。

    稍等一下、马上发给你
    使用道具 举报 回复
    发表于 2019-10-26 18:37:00
    本帖最后由 Skey11 于 2019-10-26 10:46 编辑
    Red_G 发表于 2019-10-26 08:40
    机翻吧,原文地址是啥。

    稍等一下、马上发给你....................https://github.com/neex/phuip-fpizdam
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册