Struts2 devMode开启条件下远程代码执行漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

详情来源: [ADLab](https://mp.weixin.qq.com/s?__biz=MzAwNTI1NDI3MQ==&mid=2649611817&idx=1&sn=22c8b5372f668fed73dd67fb23e015fc&scene=1&srcid=0712SIUX6Qm8UMxXyqQqBnR0&key=77421cf58af4a6539af7a7faaa29aa568c54411ee815838f23cea97588c0a054bd5d8be2d3bec0c8050eb5237bab6537&ascene=0) > 启明星辰ADLab研究人员发现,当Struts2中的devMode模式设置为true时,存在严重远程代码执行漏洞。如果WebService 启动权限为最高权限时,可远程执行任意命令,包括关机、建立新用户、以及删除服务器上所有文件等等。 受影响版本:Struts 2.1.0--2.5.1 > 2016年6月,启明星辰ADLab已将此漏洞提交至Struts2官方,Struts2官方表示此漏洞为开发者模式下存在的问题,关闭devMode即可避免此问题发生。由于官方已经明确警示用户,发布系统时须关闭devMode,因此此次漏洞通报不会进入他们的漏洞处理流程。 ### Struts2远程执行任意代码漏洞利用技术浅析 Struts2远程执行任意代码漏洞,历史上出现过很多次。在这里回顾下其中两个具有代表性的历史漏洞,主要侧重于他们是如何突破系统防线、绕过系统过滤的。 ** 1、S2-008漏洞 ** S2-008漏洞也是一个devMode下的远程执行漏洞,由于当时Apache还没有专门的声明,要求开发者在发布系统的时候必须关闭devMode,因此这个漏洞当时还是被他们给予了CVE编号,并在后续比较迟的时候增加了对其利用方式的过滤处理。 CVE编号授予的时候,Struts2的最新版本为2.3.1,但在其后直至2.3.28之前的版本都能够触发这个漏洞,从2.3.29开始,官方增加了一个检查项——禁止链式表达式,这才阻止了特定ognl表达式的执行。但是不得不说该漏洞一直存在,只是利用条件变得越来越苛刻。 我们在此做一个纯技术分析的分享:...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息