Unicode编码
jsp支持unicode编码,如果杀软不支持unicode查杀的话,基本上都能绕过
注意这里的\uuuu00可以换成\uuuu00uuu...可以跟多个u达到绕过的效果
将代码(除page以及标签)进行unicode编码,并条件到<%%>标签中,即可执行webshell
在线unicode编码转换:https://3gmfw.cn/tools/unicodebianmazhuanhuanqi/
注意用此在线unicode编码后内容会存在 /ua ,需要手动删除,负责无法正常运行
可以看到依旧执行成功
查杀效果:
这个基本上是通杀了属实是,但由于特征过于明显,如果人工查杀的话,很容易被发现
CDATA特性
这里是要是利用jspx的进行进行免杀,jspx其实就是xml格式的jsp文件
在jspx中,可以利用jsp:scriptlet来代替<%%>
当jsp:scriptlet被过滤时可以利用EL表达式,达到绕过的效果
EL表达式的11个隐含对象
其他情况:
以上是jsp的一些特性,下面开始正式讲解CDATA
下面是用xml格式的jsp文件
可以看到这里是能正常运行的,接下来文件使用CDATA进行混淆
依旧是能成功运行的,但是我们可以requst和Runtime这些类名都被插入了CDATA,从而消除了特征
免杀效果:
HTML编码
这里HTML编码免杀与jspx的特效有关,前面的CDATA设计到了jspx的相关知识,由此CDATA的免杀就在上文讲了
在XML里可以通过html实体编码来对特殊字符转义,jspx同样继承了该特性,由此jspx就具有识别html实体编码,接下来我们就利用上面的免杀马进行进一步的混淆
注意:含有CDATA的内容是不能进行html实体编码的,反之html实体编码后的内容也不能插入CDATA,否则无法执行
在线html实体编码:https://www.qqxiuzi.cn/bianma/zifushiti.php
可以看到依旧可以正常运行