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