【漏洞复现】CODESYS远程代码执行漏洞

【漏洞复现】CODESYS远程代码执行漏洞


01

概述

CoDeSys是可编程逻辑控制PLC的完整开发环境(CoDeSys是Controlled Development System的缩写),它支持IEC61131-3标准IL 、ST、 FBD 、LD、 CFC、 SFC 六种PLC编程语言,用户可以在同一项目中选择不同的语言编辑子程序,功能模块等。在PLC程序员编程时,CoDeSys为强大的IEC语言提供了一个简单的方法,系统的编辑器和调试器的功能是建立在高级编程语言的基础上(如Visual C++)。

CODESYS GmbH CODESYS Development System 3.5.11.0至3.5.19.20版本中存在一个由于完整性检查缺陷而引起的远程代码执行漏洞,无需认证但需要处于相邻网络:
【漏洞复现】CODESYS远程代码执行漏洞
02

漏洞复现

根据漏洞相关描述,下载安装符合要求的CODESYS版本,在博智靶场平台中开启虚拟环境安装和配置,进行分析复现:

【漏洞复现】CODESYS远程代码执行漏洞

【漏洞复现】CODESYS远程代码执行漏洞

结合更多的漏洞信息,如CISA中对漏洞的描述:

【漏洞复现】CODESYS远程代码执行漏洞

可知此漏洞与CODESYS软件的“通知”功能有关,正常运行软件,可见右侧有“通知”栏:

【漏洞复现】CODESYS远程代码执行漏洞

至于触发漏洞的“LearnMoreAction”功能,则是对应到每个具体通知,旁边有一个按钮点击“获取更多…”,用户点击按钮后,通过向 http://notifications.codesys.com/api/1/notifications/?last_id=0发送GET请求获得通知,返回为一个Json数组通知,例如:
[
 {
   “id”: 1002,
   “default_text”: “New version is available, click to update”,
   “link_url:”: “ADupdate.exe”
 }
]
点击LearnMoreAction会启动link_url所指定的进程:

【漏洞复现】CODESYS远程代码执行漏洞

因此,当处于相邻网络,便可劫持通知中心,当用户点击“获取更多…”的时候便会导致命令注入从而实现任意代码执行。劫持攻击的方式可以是dns欺骗,重定向notifications.codesys.com,指向恶意攻击地址,启动一个http server,返回的内容是恶意通知Jason,如将”link_url”的值指向某个特定文件。

最终,通过构造漏洞触发环境,实现了代码执行,效果如下演示:
03
参考资料

1. https://www.zerodayinitiative.com/advisories/ZDI-23-1105

2.https://www.cisa.gov/news-events/ics-advisories/icsa-23-236-05

【漏洞复现】CODESYS远程代码执行漏洞


原文始发于微信公众号(博智非攻研究院):【漏洞复现】CODESYS远程代码执行漏洞

版权声明:admin 发表于 2024年2月2日 下午4:09。
转载请注明:【漏洞复现】CODESYS远程代码执行漏洞 | CTF导航

相关文章