用户
搜索
  • TA的每日心情

    2018-9-18 22:02
  • 签到天数: 68 天

    连续签到: 1 天

    [LV.6]常住居民II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    4

    主题

    76

    帖子

    2608

    魔法币
    收听
    0
    粉丝
    14
    注册时间
    2015-11-20

    i春秋签约作者

    发表于 2017-8-20 23:29:42 425608317
    本帖最后由 凉风有信 于 2017-8-20 23:54 编辑
          Hi 我是凉风
    首先感谢@我是salf 给我的灵感
    我之前发了一个帖子:过了D盾扫描的一句话木马。
    里面分析了一句话木马的原理,以及过狗、D盾的木马的编写。
    传送门:
    https://bbs.ichunqiu.com/thread-25644-1-1.html



           tips:下文需要知道一句话木马的原理,可看上面说的帖子
           tips2:还是在这里简单的说一下吧,例如木马 assert($_POST[XYZ]),会把用户post的 XYZ=asdfasdf中的asdfasdf作为php代码执行,这是assert这个函数的特性,eval同理。


    也许有人用了我的马儿还是被狗拦了,是因为你们的刀子不是过狗刀。
    菜刀的官网在去年更新了最新的刀子,可以过狗的刀子。(附件)


    为什么能过狗?原理是什么?
    之前我们分析了一句话木马的原理,今天我们就来分析一下菜刀的工作原理以及过狗原理吧。



    新版菜刀多了一个叫做caidao.conf的配置文件,自带过狗配置,看图
    原配置文件.png
    红框中的配置就是这次文章的重点,也是过狗的重点所在(只讨论php)


    单单看配置可能看不明白,我们用fidder抓包看看,拿过狗菜刀和旧版菜刀做一个对比
    看看究竟有什么区别,为何能过狗。
    旧版菜刀:
    旧版被拦截.png
    旧版post了两个参数,但是被安全狗拦截。
    新版菜刀:
    新版成功.png
    post了一个参数,绕过了安全狗,并且返回了正常的数据


    我们来对比一下post的数据
    新旧post对比.png
    好长,可以看到有大部分都是base64编码,我们通过仔细观察,或者是拿去解密,就能知道这是菜刀需要执行的命令。


    为了方便看,我做个简单的处理,去掉命令,把里面的url编码还原成字符
    新版旧版经过处理后的post.png

    可以看出
    旧版几乎没有经过处理,语句的作用是:执行经过base64解密后的命令(这里看不懂的一定要看的之前发的帖子,或者文章开头的tips

    新版和旧版语句的最终的作用是一样的,也是执行经过base64解密后的命令,但是新版做了过狗处理,安全狗已经不认识这段代码了(不懂叫什么就叫代码吧。。)
    (新版的语句一堆反斜杠,是转义,因为代码用了双引号嵌套,双引号里的双引号需要进行转义不然语法错误,大家自行忽略转义符就能看明白了)


    我们看看能不能自己写一个过狗的配置,学以致用嘛。
    大家如果是像我一样的菜比的话,就先备份好配置文件,以防不备

    打开配置文件,看看配置文件正确改法的格式要求、注意事项什么的。
    看图:
    配置文件注意事项.png


    现在我们能看明白:红框中的是我们post的数据中,“密码”= xxxxx 中 的 xxxxx
    xxxxx就是服务器一句话木马执行的代码


    可以看到,菜刀执行命令(圆圈中的%s)用到的函数是菜刀自己构造的assert与eval变形木马,(即红框中代码)为方便理解,这个菜刀自己构造的木马可以称之为“木马函数”,我们传到服务器的一句话木马在这里只是用来执行菜刀传递的这一个“木马函数”,而菜刀传递的其他关键的命令(圆圈中的%s),都由这个“木马函数”来执行。就像是:老板命令经理,经理命令员工 —> 老板通过经理来命令员工。

    这么设计是有道理的:
         1. 没有人知道一句话木马的形式是怎么样的,变形的一句话木马有好多种,除了assert和eval以外仍有其他函数可以成为一句话木马,有些不能支持多语句执行,使用“木马函数”这个方法大大增加了兼容性,因为服务器的一句话木马只需要执行这个“木马函数”就可以了。
         2. 这样子,可以在用户操作菜刀时,所有命令集合在一起给“木马函数”一起执行,不用频繁的向服务器进行多次请求,一个命令一个命令的执行会很慢滴。(请求过于频繁会不会被封ip?)

    (好了红字终于结束了,感觉红色好难看,但是表重点还好吧。)

    图中红框就是我们需要修改,替换的地方,我们换成自己的配置。经过分析fidder拦截的数据包,我们要执行的命令是base64编码的命令,这个加密的命令就是作为“木马函数”的参数,在配置文件里用%s表示,我们试着改改,先试着修改成较为简单的,易于理解的又能过狗的配置。

    看图:
    自己配置简单的过狗.png
    很短的一句话,直接  (看图,这里被和谐) 就可以过狗,%s就是菜刀传进去的base64加密命令。
    至于菜刀的命令为什么是base64加密,更高级的玩法,本文暂时不讨论,大家可以看自带的readme.txt



    本文就这么结束么?这怎么对得起我的标题!我可不是标题党!(才怪)(其实对标题起名不是很满意)



    注意,其实以下才是本文的重点,本菜比摸爬滚打走了许多弯路才研究出来的,连菜刀原作者都不曾想到的问题(我脸皮厚hhh)



    看了过狗菜刀原本的配置,当我看到了一堆反斜杠,我就想到了gpc魔术引号,如果开启了,那么这个菜刀岂不是废了???


    经过测试,新版菜刀废了。。。好吧,果然跟我想的一样。


    在这里感谢秦国的 青鸟  @我是salf  他给我灵感,我才想到要弄一个过gpc的配置,不然这篇文章就结束了(本菜比也不会走那么多弯路,不会废了一整天头痛这个。。这篇文章至少提前2天出来)(我终究还是太菜了

    (其实我一直想发颜文字的,但是前几天知道创宇某小编说我是大叔。。。气死我)
    这他妈是什么意思.jpg

    尬聊有点多,讲正题。(看了那么长的文章,我只是想放松放松)

    想绕过gpc,那就不能有引号了,旧版菜刀没有用引号(估计是想到有gpc)。
    我们不仅要考虑到引号的问题,还要考虑安全狗,这对本菜比来说难度还是好大的。



    既然我菜,为什么我要做这个??
    因为我查过 ,过狗菜刀绕gpc配置,也许是打开的方式不对,没有查到资料,网上没有哇
    既然这样我就能拿来装逼了hhh(。。。)
    (不要告诉我网上有,我会很失望的,)




    不知不觉又尬聊了,

    本php菜比的弯路总结:

    1.eval函数可以执行 echo 、if 等,分号结尾必不可少。
    2.assert函数内不能echo,不能有if,
    3.安全狗拦截机制:eval后不能跟$_POST,也不能加base64_decode,assert相比eval拦截的要松,
    4.assert(0|| xxx) 这个代码||后面的会被执行,换成&&后,符号两边都会执行,就是逻辑运算符,不多介绍。
    5.assert可以接着base64解密,然后执行解密后的命令
    6.base64_decode()括号里如果是字符串常量必须带引号,括号内可以放不带引号的变量

    配置文件开头提到了分隔符,我们看看分隔符
    分隔符.png 回显.png

    右边的图是菜刀接收的原本的数据,用的是配置文件中设置的分隔符来隔开,如果有很多命令的话会更直观。菜刀处理了这个不友好的回显数据,将数据转换成我们看到的友好界面。

    base64解密我们菜刀的加密部分的命令(%s的地方),可以看到  分隔符是用 echo("")这样的形式输出的,所以不能用assert了,我们选用eval执行菜刀的命令,可是eval会被拦截。。

    思路:前面总结5说了assert可以执行base64解密的内容,我们就把eval命令加密,用decode解密后再给assert执行。base64_decode通过$_post[]赋值,加密后的eval也通过post变量赋值

    说不明白,看图,看图,看图

    最后的代码.png
    这样我们需要改的配置就写好了,赶快试试看。。
    完成.png
    成功了成功了,感觉这样表达有点蠢,但是意思就是成功了,累坏我了,好激动
    我这个php菜比走了那么多弯路终于弄出了有用的东西。



    为了过gpc想了很多条思路,但是那些路都因为各种各样的报错断了,本菜比不知道什么原因,就不贴出来误导大家了。

    ps:刚刚发帖被拦截了,好在我备份了,不过要重新放图。。
    ps:我得意的太早了,拦截x3
    ps:听丞相的话,换成全角就ok了,谢谢丞相大人

    大家多交流吧~不懂可以问我哦
    附上原版过狗刀,刚出的时候拿到的。后缀是7z,因为不给上传我就改成rar

    密码是我拿到的时候就自带的 密码:
    www.maicaidao.com






    caidao-20160620-www.maicaidao.com.rar

    353.13 KB, 下载次数: 821, 下载积分: 魔法币 -3

    售价: 2 魔法币  [记录]

    评分

    参与人数 3积分 +20 魔法币 +8 收起 理由
    icq_b7128fc77 + 3 鼓励转贴优秀软件安全工具和文档!.
    仰望大佬的小白 + 5 6666
    屌丝绅士 + 20 思路清晰,重点明确,姿势够骚,点赞.

    查看全部评分

    本帖被以下淘专辑推荐:


    高级模式 BColorImageLinkQuoteCodeSmilies@朋友

    本版积分规则参与/回复主题
    每日精选文章版块列表mn_forum mn_forum热门话题/问答推荐文章专辑广播大厅i春秋学院快捷导航
    EVA_
    i春秋社区-分享你的技术,为安全加点温度

    请输入搜索内容
    帖子
    搜索
    版块列表›(现金奖励)投稿请加QQ320229344›白帽子技术/思路›查看内容
    发帖
    补天专题
    i春秋签约作家

    Binghe


    penguin_wwy


    野驴


    ohlinge


    zusheng


    sucppVK


    MAX丶


    icq8756c1a2


    immenma


    icq6a70641f


    wangxiulin


    酷帥王子

    [思路/技术] 过狗菜刀原理以及自己配置更厉害的过狗菜刀 heatlevel

    凉风有信 i春秋作家i春秋签约作者
    发表于 2017-8-20 23:29:42 398572674
    本帖最后由 凉风有信 于 2017-8-20 23:54 编辑

          Hi 我是凉风
    首先感谢@我是salf 给我的灵感
    我之前发了一个帖子:过了D盾扫描的一句话木马。
    里面分析了一句话木马的原理,以及过狗、D盾的木马的编写。
    传送门:
    https://bbs.ichunqiu.com/thread-25644-1-1.html



           tips:下文需要知道一句话木马的原理,可看上面说的帖子
           tips2:还是在这里简单的说一下吧,例如木马 assert($_POST[XYZ]),会把用户post的 XYZ=asdfasdf中的asdfasdf作为php代码执行,这是assert这个函数的特性,eval同理。


    也许有人用了我的马儿还是被狗拦了,是因为你们的刀子不是过狗刀。
    菜刀的官网在去年更新了最新的刀子,可以过狗的刀子。(附件)


    为什么能过狗?原理是什么?
    之前我们分析了一句话木马的原理,今天我们就来分析一下菜刀的工作原理以及过狗原理吧。


    新版菜刀多了一个叫做caidao.conf的配置文件,自带过狗配置,看图
      
    红框中的配置就是这次文章的重点,也是过狗的重点所在(只讨论php)


    单单看配置可能看不明白,我们用fidder抓包看看,拿过狗菜刀和旧版菜刀做一个对比
    看看究竟有什么区别,为何能过狗。
    旧版菜刀:
      
    旧版post了两个参数,但是被安全狗拦截。
    新版菜刀:
      
    post了一个参数,绕过了安全狗,并且返回了正常的数据


    我们来对比一下post的数据
      
    好长,可以看到有大部分都是base64编码,我们通过仔细观察,或者是拿去解密,就能知道这是菜刀需要执行的命令。


    为了方便看,我做个简单的处理,去掉命令,把里面的url编码还原成字符
      

    可以看出
    旧版几乎没有经过处理,语句的作用是:执行经过base64解密后的命令(这里看不懂的一定要看的之前发的帖子,或者文章开头的tips)

    新版和旧版语句的最终的作用是一样的,也是执行经过base64解密后的命令,但是新版做了过狗处理,安全狗已经不认识这段代码了(不懂叫什么就叫代码吧。。)
    (新版的语句一堆反斜杠,是转义,因为代码用了双引号嵌套,双引号里的双引号需要进行转义不然语法错误,大家自行忽略转义符就能看明白了)


    我们看看能不能自己写一个过狗的配置,学以致用嘛。
    大家如果是像我一样的菜比的话,就先备份好配置文件,以防不备

    打开配置文件,看看配置文件正确改法的格式要求、注意事项什么的。
    看图:
      


    现在我们能看明白:红框中的是我们post的数据中,“密码”= xxxxx 中 的 xxxxx
    而xxxxx就是服务器一句话木马执行的代码


    可以看到,菜刀执行命令(圆圈中的%s)用到的函数是菜刀自己构造的assert与eval变形木马,(即红框中代码)为方便理解,这个菜刀自己构造的木马可以称之为“木马函数”,我们传到服务器的一句话木马在这里只是用来执行菜刀传递的这一个“木马函数”,而菜刀传递的其他关键的命令(圆圈中的%s),都由这个“木马函数”来执行。就像是:老板命令经理,经理命令员工 —> 老板通过经理来命令员工。

    这么设计是有道理的:
         1. 没有人知道一句话木马的形式是怎么样的,变形的一句话木马有好多种,除了assert和eval以外仍有其他函数可以成为一句话木马,有些不能支持多语句执行,使用“木马函数”这个方法大大增加了兼容性,因为服务器的一句话木马只需要执行这个“木马函数”就可以了。
         2. 这样子,可以在用户操作菜刀时,所有命令集合在一起给“木马函数”一起执行,不用频繁的向服务器进行多次请求,一个命令一个命令的执行会很慢滴。(请求过于频繁会不会被封ip?)

    (好了红字终于结束了,感觉红色好难看,但是表重点还好吧。)

    图中红框就是我们需要修改,替换的地方,我们换成自己的配置。经过分析fidder拦截的数据包,我们要执行的命令是base64编码的命令,这个加密的命令就是作为“木马函数”的参数,在配置文件里用%s表示,我们试着改改,先试着修改成较为简单的,易于理解的又能过狗的配置。

    看图:
      
    很短的一句话,直接  (看图,这里被和谐) 就可以过狗,%s就是菜刀传进去的base64加密命令。
    至于菜刀的命令为什么是base64加密,更高级的玩法,本文暂时不讨论,大家可以看自带的readme.txt



    本文就这么结束么?这怎么对得起我的标题!我可不是标题党!(才怪)(其实对标题起名不是很满意)



    注意,其实以下才是本文的重点,本菜比摸爬滚打走了许多弯路才研究出来的,连菜刀原作者都不曾想到的问题(我脸皮厚hhh)



    看了过狗菜刀原本的配置,当我看到了一堆反斜杠,我就想到了gpc魔术引号,如果开启了,那么这个菜刀岂不是废了???


    经过测试,新版菜刀废了。。。好吧,果然跟我想的一样。


    在这里感谢秦国的 青鸟  @我是salf  他给我灵感,我才想到要弄一个过gpc的配置,不然这篇文章就结束了(本菜比也不会走那么多弯路,不会废了一整天头痛这个。。这篇文章至少提前2天出来)(我终究还是太菜了)

    (其实我一直想发颜文字的,但是前几天知道创宇某小编说我是大叔。。。气死我)
      

    尬聊有点多,讲正题。(看了那么长的文章,我只是想放松放松)

    想绕过gpc,那就不能有引号了,旧版菜刀没有用引号(估计是想到有gpc)。
    我们不仅要考虑到引号的问题,还要考虑安全狗,这对本菜比来说难度还是好大的。



    既然我菜,为什么我要做这个??
    因为我查过 ,过狗菜刀绕gpc配置,也许是打开的方式不对,没有查到资料,网上没有哇
    既然这样我就能拿来装逼了hhh(。。。)
    (不要告诉我网上有,我会很失望的,)




    不知不觉又尬聊了,

    本php菜比的弯路总结:

    1.eval函数可以执行 echo 、if 等,分号结尾必不可少。
    2.assert函数内不能有echo,不能有if,
    3.安全狗拦截机制:eval后不能跟$_POST,也不能加base64_decode,assert相比eval拦截的要松,
    4.assert(0|| xxx) 这个代码||后面的会被执行,换成&&后,符号两边都会执行,就是逻辑运算符,不多介绍。
    5.assert可以接着base64解密,然后执行解密后的命令
    6.base64_decode()括号里如果是字符串常量必须带引号,括号内可以放不带引号的变量

    配置文件开头提到了分隔符,我们看看分隔符
       

    右边的图是菜刀接收的原本的数据,用的是配置文件中设置的分隔符来隔开,如果有很多命令的话会更直观。菜刀处理了这个不友好的回显数据,将数据转换成我们看到的友好界面。

    base64解密我们菜刀的加密部分的命令(%s的地方),可以看到  分隔符是用 echo("")这样的形式输出的,所以不能用assert了,我们选用eval执行菜刀的命令,可是eval会被拦截。。

    思路:前面总结5说了assert可以执行base64解密的内容,我们就把eval命令加密,用decode解密后再给assert执行。base64_decode通过$_post[]赋值,加密后的eval也通过post变量赋值

    说不明白,看图,看图,看图

      
    这样我们需要改的配置就写好了,赶快试试看。。
      
    成功了成功了,感觉这样表达有点蠢,但是意思就是成功了,累坏我了,好激动
    我这个php菜比走了那么多弯路终于弄出了有用的东西。



    为了过gpc想了很多条思路,但是那些路都因为各种各样的报错断了,本菜比不知道什么原因,就不贴出来误导大家了。

    ps:刚刚发帖被拦截了,好在我备份了,不过要重新放图。。
    ps:我得意的太早了,拦截x3
    ps:听丞相的话,换成全角就ok了,谢谢丞相大人

    大家多交流吧~不懂可以问我哦
    附上原版过狗刀,刚出的时候拿到的。后缀是7z,因为不给上传我就改成rar
    使用道具 举报 回复

    [PHP] 纯文本查看 复制代码
    <PHP_BASE>
    ZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFtpZF0pKTs%%3D&id=%s&key=YXNzZXJ0
    </PHP_BASE>


    所以数据包都进行base64 加密反而更简单呀。 但阿里云现在开始解包base64进行拦截了。
    使用道具 举报 回复
    看看                                                   
    使用道具 举报 回复
    ZXZhbChiYXN1NjRfZGVjb2R1KCRfUE9TVFt1ZmddKSk   解码后怎么是   eval(basu64_decodu($_POST[ufg]))  。。。。   
    使用道具 举报 回复
    crZh 发表于 2017-8-22 10:32
    倒数第二张截图,base64编码后有个=去掉了,可以去掉吗?

    可以的  我自己去掉的,不去掉就用url编码
    使用道具 举报 回复

    大家多交流吧~不懂可以问我哦
    附上原版过狗刀,刚出的时候拿到的。后缀是7z,因为不给上传我就改成rar

    密码是我拿到的时候就自带的 密码
    使用道具 举报 回复
    发表于 2017-8-27 02:12:21
    看看                           
    使用道具 举报 回复
    tingfm09 发表于 2017-8-22 21:38
    下载不了啊,怎么才能有魔法币啊,可以给我发个附件菜刀么,谢谢了,

    加我扣扣我给你
    使用道具 举报 回复
    发表于 2017-8-21 10:55:32
    你很棒。。。
    一位特爱收藏Supreme的大哥哥....
    使用道具 举报 回复
    很强啊
    使用道具 举报 回复

    你很棒。。。
    使用道具 举报 回复
    发表于 2017-8-21 11:38:40
    厉害呢!!
    使用道具 举报 回复
    发表于 2017-8-21 12:21:35
    看阿卡卡卡卡卡卡卡
    使用道具 举报 回复
    发表于 2017-8-21 12:52:00
    谢谢分享
    使用道具 举报 回复
    你是一个有实力的彩笔  mmmmmm
    使用道具 举报 回复
    发表于 2017-8-21 13:42:56
    楼主很有爱,是个很好的编辑
    使用道具 举报 回复
    发表于 2017-8-21 13:56:23
    瞅一眼!看看           
    使用道具 举报 回复
    发表于 2017-8-21 14:04:41
    123123trytytytrytr
    使用道具 举报 回复
    发表于 2017-8-21 14:49:47

    你很棒。。。
    使用道具 举报 回复
    发表于 2017-8-21 14:57:41
    过狗的菜刀还是很屌的
    不服你TMD来打我啊!
    使用道具 举报 回复
    发表于 2017-8-21 15:05:16
    我是奔着菜刀来的
    使用道具 举报 回复
    谢谢分享
    使用道具 举报 回复
    您需要登录后才可以回帖 登录 | 立即注册