3.1 任意文件删除测试
示例 - 存在任意文件删除漏洞代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page import="java.io.File" %><%File file = new File(request.getParameter("file"));out.println(file.delete());%>
3.2 FileSystem任意文件删除测试
示例 - 存在任意文件删除漏洞代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page import="java.io.File" %><%@ page import="java.lang.reflect.Method" %><%String file = request.getParameter("file");Method m = Class.forName("java.io.DefaultFileSystem").getMethod("getFileSystem");m.setAccessible(true);Object fs = m.invoke(null);Method m2 = fs.getClass().getMethod("delete", File.class);m2.setAccessible(true);out.print(m2.invoke(fs, new File(file)));%>
攻击者通过参入file参数即可删除服务器中的任意文件:
攻击者通过反射调用 Filesystem 并执行delete方法,用来绕过对 File 对象 delete方法的防御。
