示例 - 存在恶意文件写入漏洞的代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.File" %>
<%@ page import="java.io.FileOutputStream" %>
<%
File file = new File(request.getParameter("f"));
FileOutputStream fos = new FileOutputStream(file);
fos.write(request.getParameter("c").getBytes());
fos.flush();
fos.close();
out.println(file.getAbsoluteFile() + "\t" + file.exists());
%>
2.1 跨目录写入文件测试
攻击者可能期望跨目录写入文件,如写入 SSH KEY、写入计划任务等等方式进行进一步的攻击。
请求:http://localhost:8000/modules/filesystem/file-w.jsp?f=../../a.rar&c=aaa,如下图:
2.2 绝对路径写入文件测试
攻击者通过传入恶意的参数f
和c
参数可以使用绝对路径在服务器上写入恶意的WebShell
后门或其他文件,请求:http://localhost:8000/modules/filesystem/file-w.jsp?f=/tmp/2.txt&c=webshell,如下图: