文章总结: 深信服运维安全管理系统protocol/session接口存在严重远程命令执行漏洞,影响低于3.0.1220241106版本。漏洞出现在protocol=ssh和protocol=x11两种情况下,攻击者可通过构造恶意请求注入命令执行任意系统命令,可能导致服务器被完全控制。文章提供了详细的技术分析和POC验证,建议用户尽快升级到最新版本以修复此漏洞。
综合评分: 87
文章分类: 漏洞分析,漏洞预警,WEB安全,网络安全,应急响应
深信服运维安全管理系统 protocol/session 远程命令执行漏洞
xuzhiyang
玄武盾网络技术实验室
2025年11月21日 09:01
江西
免责声明:本文仅供安全研究与学习之用,严禁用于非法用途,违者后果自负。
每日资源分享:免杀工具集合黑客免杀资料汇总学习笔记分享 更多资源访问:www.xwdjs.ysepan.com
正文
漏洞简介
深信服运维安全管理系统 protocol/session 接口存在远程命令执行漏洞。攻击者可通过构造恶意的请求,利用该漏洞在目标服务器上执行任意命令,从而可能导致服务器被完全控制、敏感数据泄露等严重后果。
影响版本
低于 3.0.12 20241106
fofa语法
body="/fort/login" && header="FORTSESSIONID"
漏洞分析
直接看 com.sbr.isomp.protocol.controller.session.SessionController 的实现方式。
从上图可以看到要进入此方法的路径是 /protocol/session
ssh
然后继续看下面的实现。
当 protocol=ssh 时,尝试从请求参数中获取 keyPath(私钥文件的路径)。如果路径存在且当前不是 SSH Daemon 模式(sshd 参数为 false):
-
文件读取与类型检查
:它尝试读取用户提供的
keyPath指向的文件内容。 -
格式转换(如果需要)
:如果读取到的私钥内容不包含 PEM 格式的标识符(
RSA PRIVATE KEY或DSA PRIVATE KEY),代码会尝试使用ssh-keygen命令行工具对该私钥文件进行格式转换,将其转换为 PEM 格式。 -
命令行执行
:在格式转换过程中,它将用户提供的
keypassword参数(如果存在)直接拼接到ssh-keygen的命令行参数中执行。 -
会话存储
:无论是否发生异常,私钥文件的内容和私钥密码(
keypassword)最终都会被读取并存储到会话对象中。
命令注入的关键点在于用户提供的 keyPath 和 keypassword 两个参数在未经过任何严格的沙盒或转义处理的情况下,直接拼接进了 ShellExecutor.service().exe() 执行的系统命令字符串中。
攻击者可以通过在这些参数中注入分号或管道符等,造成任意命令注入漏洞,执行任意的操作系统命令。
x11
同样的问题也出现在当 protocol=x11 时,
首先尝试从 resolution 参数中解析出期望的会话宽度和高度,如果该参数为空,则使用默认值 1024×768。随后,它调用 ShellExecutor 执行一个 Bash 脚本 (/usr/local/bin/sh/x11vnc.sh),并传入解析出的宽度、高度以及用户提供的 hostname 和 port 参数作为脚本的命令行参数。脚本执行结果会被记录并解析,如果成功,它会将脚本返回的新端口号更新到会话中。
命令注入漏洞的关键在于处理用户提供的 hostname 和 port 参数,以及间接控制的 resolution 参数(如果解析失败或被恶意构造),都未经任何安全处理或转义,直接拼接到了 bash 命令的末尾。攻击者可以通过在 hostname 或 port 参数中注入 shell 元字符(如 ;、|、&),在执行 /usr/local/bin/sh/x11vnc.sh 脚本的同时,执行任意的附加系统命令,从而实现远程代码执行。
漏洞复现
POC
ssh
POST /isomp-protocol/protocol/session HTTP/1.1Host: osm.mrxn.netContent-Type: application/x-www-form-urlencodedprotocol=ssh&keyPath=/etc/group&sshd=1&keypassword=RCE_POC
获取到命令执行的结果
x11
POST /isomp-protocol/protocol/session HTTP/1.1Host: osm.mrxn.netContent-Type: application/x-www-form-urlencodedprotocol=x11&port=1337&hostname=RCE_POC
获取到命令执行的结果(两个参数hostname和port均存在同样的命令注入漏洞)
随手点个「推荐」吧!
声明:技术文章均收集于互联网,仅作为本人学习、记录使用。侵权删!!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:玄武盾网络技术实验室 xuzhiyang《深信服运维安全管理系统 protocol/session 远程命令执行漏洞》