01前言

本文旨在梳理webshell的利用前提、Payload特征、利用原理、绕过思路。从红蓝对抗的角度简单地讨论一下webshell是怎么一回事。

02利用前提

根据之前3月29号分享的一篇文章可以知道,spring爆出的CVE-2022-22965远程命令执行漏洞,本质上是一个文件写入漏洞(本文不探究关于webshell脚本是如何被上传的,感兴趣的小伙伴可以到上面分享的链接里面,查看关于该漏洞的细节,本文重点讨论关于webshell的内容)。下图是该漏洞的部分payload:

jsp一句话木马_儿童木马玩具 木马智慧_jsp的一句话木马

在该漏洞公开的poc中可以看到getRuntime().exec(request.getParameter(%22cmd%22))字样,这也是在基于Java开发的web中被红队攻击人员经常利用的一个命令执行函数,性质等同于PHP的eval()、assert()。

03Payload案例

上传的webshell脚本文件jsp一句话木马,大致比较简单,下面列出几个不同脚本语言的一句话shell的例子:

jsp的一句话木马_jsp一句话木马_儿童木马玩具 木马智慧

jsp一句话木马_jsp的一句话木马_儿童木马玩具 木马智慧

jsp的一句话木马_儿童木马玩具 木马智慧_jsp一句话木马

04利用原理

以PHP的一句话木马为例,

可以看到可以发现脚本的思路如下:

A.接收post请求中变量名为ant的值。

B.使用eval函数执行ant变量的内容。

其余不同语言的webshell木马,本质上也是一样,都是利用本语言可以直接运行系统命令的函数jsp一句话木马,进行木马的编写。

05绕过思路

本段内容是希望在分享在攻防对抗的过程中webshell木马的变化,来给大家提供一些对于免杀方法的一个思路。如果有不全面的地方,多多指教。

理论上webshell木马的绕过,分为两类。第一类是webshell木马上传时的绕过,此类绕过方法的核心是关键函数的隐藏。第二类是命令的绕过,此类绕过方法的核心是对命令的隐藏。

此处依旧拿PHP中的关键函数eval()为例。

jsp一句话木马_jsp的一句话木马_儿童木马玩具 木马智慧

主要思路是通过字符拆解然后重组的方式来进行绕过。避免了敏感函数的直接暴露。

jsp一句话木马_jsp的一句话木马_儿童木马玩具 木马智慧

主要思路是通过一些编码函数对敏感函数进行一个编码绕过,常用的编码函数可能有base64、rot(13)、chr、chr16。

对于命令字符的隐藏思路也是和上面的绕过思路是一样的,假设webshell木马已经上传完毕了,那么就意味着命令是可以执行的。如何伪造你的请求,就是利用上述的两个方式:字符拼接、编码绕过。

本人在研究webshell木马样本中,遇到过一种webshell木马,$cmd,base64编码以后,变成base64($cmd),加上前缀eval(base64($cmd)),如此往复几十次将shell中的特征完全弱化,变成遗传混乱的字符串,即base64(eval(base64($cmd)))。以此绕过防守方的检测。

限时特惠:本站每日持续更新海量展厅资源,一年会员只需29.9元,全站资源免费下载
站长微信:zhanting688