WellinTech KingView 日志文件解析缓冲区溢出漏洞:CVE-2012-4711分析
威纶科技总部位于中国,在全球多个国家设有办事处,包括美国、日本、新加坡等。受影响的产品Kingview是该公司推出的第一款针对中小型项目推出的用于监视与控制自动化设备和过程的SCADA产品,其广泛应用于电力、制造、供水和污水处理、楼宇自动化、采矿、环保、冶金等领域。
Part1漏洞状态
漏洞细节 | 漏洞POC | 漏洞EXP | 在野利用 |
有 | 有 | 有 | 未知 |
Part2 漏洞描述
KingView中的KingMess.exe具有显示软件运行信息的功能,并且它会每隔一段时间就将软件运行信息以*.kvl形式保存成文件,当软件打开一个特殊构造的kvl文件,会造成栈溢出。
漏洞名称 | WellinTech KingView 日志文件解析缓冲区溢出漏洞 |
CVE编号 | CVE-2012-4711 |
漏洞类型 | 本地缓冲区溢出漏洞 |
漏洞等级 | 10.0 高危 |
受影响产品 | KingView 6.52 (kingMess.exe 65.20.2003.10300),KingView 6.53 (kingMess.exe 65.20.2003.10400),KingView 6.55 (kingMess.exe 65.50.2011.18049). |
公开状态 | 公开 |
时间线 | 2012.08.28 – 分配CVE ID2012.12.03 – 漏洞补丁发布 |
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以上的版本。
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录