CVE-2013-0662:施耐德 ModBus串行驱动远程代码执行漏洞分析

CVE-2013-0662:施耐德 ModBus串行驱动远程代码执行漏洞分析

时间:2022-02-24 作者:安帝科技

Part1 漏洞状态

Part2 漏洞描述

Part3 受影响版本

Version: 1.10 – 3.2

Part4 漏洞复现环境

系统环境:
Windows xp sp3
软件:
Schneider Electric Modbus Serial Driver 3.2

Part5 漏洞复现

安装软件:

软件路径:
C:\WINDOWS\system32\ModbusDrv.exe
查看进程ID:

查看ID绑定端口:

监控 27700 端口
关闭防火墙:

Python运行脚本:

攻击结果:
进程退出,弹出计算器

Part6 漏洞细节分析



首先在这里接收7个字节的数据

会有数据校验,这块数据必须是 0xFFFF
再次接收数据:


这些就是研究者在poc中构建的数据

这里有数据校验,必须是0x0064 否则不会走正常函数流程

这个函数就是漏洞触发的关键函数,步入查看细节

Esp 是 0x00F2F308 返回地址是 0x409983

这一块就是 漏洞触发的点,因为没有自己校验长度,把用户数据当接收长度,导致栈上数据被覆盖。

这是这段循环前,返回值堆栈附近的情况。

循环执行之后,堆栈已经完全被研究者构造的数据覆盖了。
执行到返回

看这里返回地方的堆栈。
返回地址是:

Jmp esp xp中常用的动态定位shell code的方法
堆栈中划线的是 0x90 nop指令
单步返回,然后再单步一次,程序就直接跑到 shellcode位置。

放开程序运行

弹出计算器,退出进程。

Part7 修复建议

1. 把软件升级到最新版本。
2. 不要把软件监听的端口27700暴露在外网。
3. 内网维护人员设置可信IP访问。
4. 安全维护人员进行主机加固,如安装杀毒软件,主机卫士等。

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