示例 - 存在文件名重命名漏洞代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page import="java.io.File" %><%String fileName1 = request.getParameter("s");String fileName2 = request.getParameter("d");File f = new File(fileName1);File d = new File(fileName2);f.renameTo(d);out.println(d + "\t" + d.exists());%>
攻击者传入恶意的s和d参数即可将文件名为1.txt的文本文件重命名为1.jsp可执行脚本文件,请求:http://localhost:8000/modules/filesystem/file-rename.jsp?s=/tmp/1.txt&d=/tmp/1.jsp,如下图:
攻击者会使用重命名的方式将(txt、jpg等资源文件)重命名为可执行脚本文件(jsp)来获得webshell从而控制Web应用系统,并绕过某些安全防护机制。常见的攻击手段是在文件上传时,上传包含恶意代码的图片文件,再利用重命名将其转为可执行的脚本文件。
