01.概述
CODESYS是可编程逻辑控制PLC的完整开发环境(CODESYS是Controlled Development System的缩写),在PLC程序员编程时,CODESYS为强大的IEC语言提供了一个简单的方法,系统的编辑器和调试器的功能是建立在高级编程语言的基础上。CODESYS支持IEC61131-3标准IL 、ST、 FBD 、LD、 CFC、 SFC 六种PLC编程语言,用户可以在同一项目中选择不同的语言编辑子程序,功能模块等。CODESYS的应用领域涉及工厂自动化、汽车自动化、嵌入式自动化、过程自动化和楼宇自动化等。
2020年3月25日Tenable披露了CODESYS V3未经身份验证的远程堆溢出漏洞及POC,漏洞编号CVE-2020-10245,CVSSv2评分为满分10分,可见漏洞易用好使,文章:https://mp.weixin.qq.com/s/B3t7S3rud3ngkCWaygXt5w已经对漏洞进行了复现和简单分析,但复现环境配置步骤未作说明。
本文主要详述了作者通过摸索尝试成功完成CODESYS V3环境搭建配置的完整过程。包括软件安装、参数配置、工程编译、服务开启等过程,使用32版本CODESYS软件即可进行漏洞复现与验证(本文使用的是64位软件)。以下内容已形成完整实验课程,并集成入“博智工控网络攻防实训平台”中使用。
02.环境配置
由于使用的是Win7 x64虚拟机,开始便下载了CODESYS V3.5.15.30 x64版本安装,软件安装约耗费半小时,后来缓过来漏洞POC是针对32位软件的,但是总体不影响环境配置,因此环境配置在x64版本下进行,32位软件可从:https://store.codesys.com/ftp_download/3S/CODESYS/300000/3.5.15.20/CODESYS%203.5.15.20.exe下载。漏洞存在于V3.5.15.40之前的版本中。
安装完成后,双击“CODESYS V3.5 SP15Patch 3”启动运行:
新建一个“test”的标准工程:
到系统服务中列表中,找到如下图所示的服务并手动启动:
点击界面左边列表中的Device,在Device标签中配置网关(将鼠标点击至右边计算机名册框中,回车,系统将自动扫描并激活节点):
右击界面左边列表中的Application,“添加对象”->“视图管理器”进行视图管理器添加(由于需要访问WebVisu服务,因此需要开启视图,并使用视图管理器对视图进行配置):
可对各参数进行配置:
继续“添加对象”->“视图”进行视图添加:
在视图标签中,可在“可视化工具箱”中选择各种图标、组件,并进行参数配置(此处即为组态画图的过程了),此处随便一个即可:
画图完成后,在主菜单栏中选择“编译”->“重新编译”对所有的代码进行编译,确保无报错即可。接着点击“Application[Device:PLC逻辑图]”右边的按钮“登录到”(或Alt+F8)快捷键:
将代码下载到Device中:
点击“启动”(或快捷键F5)启动设备运行:
运行成功后可以看到组态的界面了:
Cmd下执行netstat查看TCP Port 8080端口已经成功开启(8080端口为漏洞利用对应的业务端口):
在物理机中远程访问WebVisu服务:
03.漏洞复现
由于本环境配置使用的是CODESYS V3 x64版本,因此将无法进行漏洞复现。观察到POC代码中url = "/WebVisuV3":
而此处我们访问的URL为:/webvisu,对url值进行修改后尝试POC执行,结果出现报错:
因此最好安装32版本程序进行漏洞复现,同时发掘CODESYS V3更多漏洞吧。
本文内容已形成完整实验课程,并集成入“博智工控网络攻防实训平台”中使用。博智工控网络攻防实训平台基于云计算理念,以虚拟化技术为核心,面向复杂工控网络攻防技术,提供基于攻防场景的工控网络对抗虚拟实验平台攻防演练系统,提供面向多人的工控网络攻防训练场景,对真实环境的工控网络反震模拟以及演练场景的实时监控、态势分析和场景回放,并对参演人员的技能、攻防软件等进行量化评估。平台提供针对工业互联网安全涉及到的课程体系,提供对课件管理、课后习题练习、考试试题的上传下载答题等操作,满足学员理论课程学习和巩固,提高工控安全意识和相关岗位人员的知识、技能水平,助力提升我国工控行业整体安全防护建设水平。
“博智赛博空间非攻研究院”为博智安全旗下技术创新、安全研究的重要部门,部门拥有一支能力突出、技术过硬、业务精通、勇于创新的技术队伍,当前主要专注于应用安全、攻防渗透、工业互联网安全、物联网安全、电信安全和人工智能安全等方向。