信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

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

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

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

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

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

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


Part2
漏洞描述
信捷PLC编程软件V3.5.1存在DLL劫持漏洞,该漏洞源于DLL搜索顺序劫持,结合信捷PLC编程软件zip slip漏洞 ,本地攻击者可以通过打开项目文件方式将恶意DLL 文件写入信捷PLC编程软件所在目录,其结果可导致攻击者执行任意命令。
漏洞名称

信捷PLC编程软件DLL劫持漏洞

CVE编号

CVE-2021-34606

漏洞类型

DLL劫持

漏洞等级 中危(6.9)
公开状态 公开
影响产

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

时间线
2021.06.10– 获得CVE ID
Part3
漏洞复现

1. 实验环境

实验主机:win7 32  
软件版本:信捷PLC编程软件V3.5.1
2.涉及工具
Python2.7
VC++ 6.0
Process monitor
3.漏洞复现
1)第一步通过Processmonitor寻找可以劫持的dll 文件,打开PLC项目文件后,点击打开Process monitor并设置几个过滤条件,分别是进程名、路径以及结果,如下图所示:

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

然后点击“添加TCP/IP设备设置”,发现有两个dll文件被加载,如下如所示:

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

其中,加载rasadhlp.dll在程序所在目录没找到后,在C:WindowsSystem32目录下面查找,如下图所示:

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

且与注册表对比,rasadhlp.dll不是受保护的dll文件,说明rasadhlp.dll可以被劫持,如下图所示:

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

2)生成源码CPP文件和dll文件。

首先要配置Python2.7环境,安装好后,pip下载所需要的包pefile,并借助DLL_Hijacker.py获取rasadhlp.dll的导出函数,生成源码cpp文件在命令行中执行如下命令:
python DLL_Hijacker.py C:WindowsSystem32rasadhlp.dll
在该目录下,rasadhlp.cpp文件也已经生成,如下图所示:

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

然后使用VC++6.0将rasadhlp.cpp编译为rasadhlp.dll。
首先在VC++6.0中新建一个Win32 Dynamic-Link Library工程,如下图所示:

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

然后将rasadhlp.cpp中的代码复制到该工程Source File文件夹下的rasadhlp.cpp文件中。

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

更改程序,将代码中劫持成功后为弹窗改为弹出计算器,如上图所示。
通过点击“组建–>组建rasadhlp.cpp”,编译,编译无误后,点击“组建–>组建rasadhlp.dll”,正确完成后,可以在工程目录下的Debug文件夹下找到生成的dll文件。

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

3)结合信捷PLC编程软件zip slip漏洞,将该dll文件压缩成恶意项目文件,根据如下脚本可以生成一个名为“poc.zip”文件,阅读脚本可知,一旦在有漏洞的环境加载“poc.zip”后,“rasadhlp.dll”文件会被解压到程序所在目录下。

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

将生成的“poc.zip”重命名为“poc.xdp”。

4)使用信捷PLC编程软件打开“poc.xdp”项目文件,此时发现恶意dll已被成功解压至程序所在目录,如下图所示:

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

之后关闭程序,再次打开程序,之后点击选项下的“添加TCP/IP设备设置”,进行添加,此时会弹出计算器,劫持成功,说明此时加载的是C:UsersadminDesktopxinjieplcbcrj_xz7.comXDPProrasadhlp.dll,如下图所示:

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

Part4
漏洞分析
DLL劫持之所以被称为漏洞,要从负责加载DLL的系统API LoadLibrary来看,调用LoadLibrary时可以使用DLL的相对路径。这时,系统会按照特定的顺序搜索一些目录,以确定DLL的完整路径。而所谓的劫持,就发生在系统按照顺序搜索这些特定目录时,只要攻击者能够将恶意的DLL放在优先于正常DLL所在的目录,就能够欺骗系统优先加载恶意DLL,来实现“劫持”。
从上面的原理来看,LoadLibrary API并不会去检查即将要加载进来的DLL是否为恶意,微软为了防御DLL劫持漏洞,提供了“安全DLL搜索模式”和“KnownDLLs注册表项”机制保护DLL。但是这些还不够,开发人员必须采取更多额外措施来保护应用程序,开发过程中,调用LoadLibrary、LoadLibraryEx等会进行模块加载操作的函数时,使用模块的物理路径作为参数。在程序调用DLL时使用“白名单”+ “签名”进行DLL的验证,或者在开发应用程序时,在代码开头调用SetDllDirectory函数,把当前目录从DLL的搜索顺序列表中删除。
Part5
修复建议
联系厂商进行修复。
SAFE
获取更多情报

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

邮箱:[email protected]

漏洞分析回顾
信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现


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

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

点击“在看”鼓励一下吧

信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

原文始发于微信公众号(安帝Andisec):信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现

版权声明:admin 发表于 2022年5月26日 下午12:01。
转载请注明:信捷PLC编程软件DLL劫持漏洞:CVE-2021-34606复现 | CTF导航

相关文章

暂无评论

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