1. 环境配置
1.1 环境准备
攻击机kali:192.168.7.129
靶机win xp sp3 CH:192.168.7.45
工业软件:KingView 6.53
OD(无插件原版)
1.2 软件安装
下载地址:http://www.icpdas-usa.com/documents/king/kingview6.53_EN.rar
软件介绍:https://www.icpdas-usa.com/documents/KingView_Quick_Start_Manual.pdf
下载后解压,选择Setup

安装 Kingview,一路默认即可


安装完成后选择Exit,退出即可(退出后会提示安装driver,选择安装就好)


安装完成后HistorySvr.exe进程会自动运行,同时打开TCP 777端口。

2. 漏洞复现
2.1 测试poc导入
由于Poc只包含Win_xp_sp1以及Win_xp_sp3_EN系统,而我们测试的系统为Win_xp_sp3_CH,因此需对Poc进行需求更改。
需要更改的地方有两处,先复制一行Targets出来,Ret地址可暂时随意填写(这里为了方便,直接选择了EN地址)

第二处为exploit,我们需要复制出来一个Targets指向的shellcode。此处代码可考虑复制EN处,ABCD为方便快速定位shellcode所随意填写的字符串,可更改。

最后将我们的poc按照msf命名规则命名后导入msf,然后reload_all加载模块即可



加载模块不报错即可,报错可根据提示查看报错日志,定位错误。
2.2 shellcode定位
接下来就是我们shellcode位置的确定了,由于我们不知道具体shellcode位置,此处需要用到OD,来判断异常位置。这里我们采用原版OD(之所以不用吾爱上的是因为插件过多,会出现如下报错,貌似是因为插件的原因导致)

当然,我们使用OD之前也需要配置一下。这里采用的是英文原版OD,吾爱上也可以搞到。
打开后会直接报错,是因为路径导致的错误,不修改也只是没有办法保存调试历史,无伤大雅。

想要更改的话,修改Options -> Appearance -> Directories下的路径即可
我们想要借助OD来判断shellcode位置,需要打开我们的实时调试,从而附加我们的异常进程。
Options -> Just-in-time-debugging,打开Make OllyDbg...即可

接下来就是借助msf来进行攻击了。

1 | use exploit/windows/scada/kingview_overflow_attack //选择攻击模块 |
此时OD捕获到了异常进程,断在了0x00384342处

在内存中搜索字符串ABCD,定位到地址为0x013004C0

1 | shellcode地址:0x013004C0 + 0x4 = 0x013004C4 |
1 | Ret地址:0x013004C0 - 0xC = 0x013004B4 |
2.3 正式poc构造
根据上一步得到的shellcode地址以及Ret地址来修改我们的Poc


2.4 msf反弹shell
修改完Poc后,将我们更改后的Poc重新导入msf,然后进行攻击(记得重新开启靶机的HistorySvr.exe服务,开启这个服务后777端口也会自动开启)

msf反弹shell成功,并用getsystem成功提到root权限

发布时间: 2021-12-27
最后更新: 2023-04-03
本文标题: 工业Scada软件-KingView_6.35 RCE漏洞复现
本文链接: https://foxcookie.github.io/2021/12/27/工业Scada软件-KingView-6-35-RCE漏洞复现/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!