WellinTech KingView 日志文件解析缓冲区溢出漏洞:CVE-2012-4711复现

WellinTech KingView 日志文件解析缓冲区溢出漏洞:CVE-2012-4711复现

时间:2022-07-14 作者:安帝科技


​威纶科技是一家总部位于中国的公司,在全球多个国家设有办事处,包括美国、日本、新加坡、台湾和欧洲。
受影响的产品Kingview是该公司推出的第一款针对中小型项目推出的用于监视与控制自动化设备和过程的SCADA产品,其广泛应用于电力、制造、供水和污水处理、楼宇自动化、采矿、环保、冶金等领域。

Part1 漏洞状态

Part2 漏洞描述

KingView中的KingMess.exe具有显示软件运行信息的功能,并且它会每隔一段时间就将软件运行信息以*.kvl形式保存成文件,当软件打开一个特殊构造的kvl文件,会造成栈溢出。

Part3 漏洞复现

1. 实验环境
实验主机:win xp sp3
软件版本:KingView 6.53
2.涉及工具
Python 3.9
3.复现步骤
第一步:Python3.9利用攻击脚本生成poc.kvl。

第二步:将攻击者通过实验主机中信息窗口打开poc.kvl

第三步:观察结果,发现此时发生了栈溢出,可成功执行shellcode,弹出计算器,如下图所示:

Part4 漏洞分析

OllyDbg加载软件KingMess.exe运行,插件下API断点(因为之前有很多读文件的操作)。


调试执行到返回,如下图所示:

读取文件头,如下图所示:

读取文件内容到栈区,如下图所示:

通过调试发现KingMess.exe会读取两次文件内容到栈区,然后崩溃,第二次读取长文件的时候,执行到返回,在内存地址下内存访问断点,如下图所示:

0x40E467 内部读取文件内容,并复制到堆栈上,导致溢出,如下图所示:

然后一路执行到返回,盯紧堆栈,最终返回到 被覆盖的堆栈位置(jmp esp),如下图所示:

总结:打开kvl文件之后,会把文件内的内容按照一定格式sprintf格式化后输出到UI界面,但是在sprintf执行的时候,没有校验用户输入的长度,导致堆栈溢出。

Part5 修复建议

安装补丁或升级至6.55以上的版本。
——————————————————-
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com