信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

工控安全 3年前 (2022) admin
724 0 0

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

信捷电气股份有限公司(XINJE)是一家专注于工业自动化产品研发与应用的国内知名企业,该公司拥有可编程控制器(PLC)、人机界面(HMI)、工业信息化、伺服控制系统、变频步进等核心产品,在北京奥运会、上海工博会等国家重点工程项目上都有信捷产品的正式应用。

信捷PLC编程软件是一款功能强大的PLC编程软件,操作简单便利,能够帮助用户使用各种编程模式进行PLC的编程管理工作,让编程更加方便快捷,提高工作效率。

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

Part1
漏洞状态
漏洞细节
漏洞POC
漏洞EXP
在野利用


Part2
漏洞描述

信捷PLC编程软件V3.5.1存在zip slip漏洞,攻击者在打开特殊制作的项目文件时,可获得任意文件写入权限,该漏洞可以用伪造的含有目录遍历文件名(e.g. ../../evil.sh)的存档进行利用,其结果可导致攻击者在系统中任意写文件,甚至会导致远程命令执行或拒绝服务。

漏洞名称

信捷PLC编程软件zipslip漏洞

CVE编号

CVE-2021-34605

漏洞类型

zip slip

漏洞等级 高危(7.3)
公开状态 公开
影响产

V3.5.1(可能其他版本也存在)

时间线
2021.06.10– 获得CVE ID
Part3
漏洞复现
1. 实验环境
实验主机:win10
软件版本:信捷PLC编程软件V3.5.1
2. 涉及工具
Python3
010editor
Process Monitor
3. 漏洞复现
1)第一步首先需要构造恶意项目文件,根据如下脚本可以生成一个名为“poc.zip”文件,阅读脚本可知,一旦在有漏洞的环境加载“poc.zip”后,“hello.txt”文件会被解压至C:temp目录下。

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

poc.zip”压缩文件内容如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

2)将第一步生成的“poc.zip”重命名为“poc.xdp”。
3)使用信捷PLC编程软件打开“poc.xdp”项目文件,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

点击“打开”按钮后,应用程序报错,同时查看C:temp目录,发现文件被成功解压至此,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

Part4
漏洞分析

当用信捷PLC编程软件打开项目文件时,程序会提示项目文件的类型为*.xdp*.xcp文件。

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

通过程序的导出下载文件功能下载PLC项目文件,并用010editor打开,发现项目文件的文件头为PKx03x04,文件头与zip格式的文件头一致,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

而且该文件类型几乎可以被任何压缩工具(例如7z、zip)提取。更有趣的是,通过Process Monitor发现当程序打开一个项目文件时,它会立即将其解压缩到安装目录下的一个临时目录,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

种行为表明程序假定它是用管理员权限执行的。再加上被提取的文件是zip文件,这立即使人怀疑是否可以利用zip slip漏洞(任意文件覆盖漏洞)来获得任意的写权限。

使用ProcessMonitor查看解压文件(C:temphello.txt)进程的详细信息,发现该进程加载了ICSharpCode.SharpZipLib.dll库文件,该库文件可用于C#实现文件压缩解压功能,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

使用dnspy 反编译工具对信捷PLC编程软件进行分析,在ICSharpCode.SharpZipLib.dll下的ZipInputStream中的第77行代码处加断点,该行执行完成之后会将解压文件的路径与文件名长度之和赋值“num4”,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

跟入,首先代码会将文件名赋值给“ClearText”、“RawDate”,将文件名的长度赋值给“cleartextlength”,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

经过一系列操作,最终会将待解压文件路径的长度赋值“num4”,其值为0x2c(十进制为44),如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

第81行执行完将解压文件路径及文件名赋值给数组array,其长度为“num4”即0x2c。

第82行执行完会将数组“array”转换为字符串并赋值给“name”,其值为“../../../../../../../../../../temp/hello.txt”,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

第83行,当执行到ZipEntry的第39行时,将“name”赋值给Entry.name,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

这里没有对目录回退符进行检查,通过一系列操作将“..”赋值给“folderName”,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

通过一系列操作最终将目录会回退符拼接至解压路径,如下图所示:

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

Part5
修复建议

联系厂商进行修复。

SAFE
获取更多情报

联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601

邮箱:[email protected]

漏洞分析回顾
信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究


北京安帝科技有限公司是新兴的工业网络安全能力供应商,专注于网络化、数字化、智能化背景下的工业网络安全技术、产品、服务的创新研究和实践探索,基于网络空间行为学理论及工业网络系统安全工程方法,围绕工业网络控制系统构建预防、识别、检测、保护、响应、恢复等核心能力优势,为电力、水利、石油石化、轨道交通、烟草、钢铁冶金、智能制造、矿业等关键信息基础设施行业提供安全产品、服务和综合解决方案。坚持IT安全与OT安全融合发展,坚持产品体系的自主可控,全面赋能客户构建“业务应用紧耦合、用户行为强相关、安全风险自适应、网络弹性稳增强”的主动防御和纵深防御相结合的安全保障体系。截至2021年底,公司主要产品已应用于数千家“关基”企业,其中工业网络安全态势感知平台已部署4000余家客户,虚实结合工业网络靶场服务超过50家客户。

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

点击“在看”鼓励一下吧

信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

原文始发于微信公众号(安帝Andisec):信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究

版权声明:admin 发表于 2022年5月19日 下午12:01。
转载请注明:信捷PLC编程软件zip slip漏洞:CVE-2021-34605研究 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...