春秋云境 MagicRelay WP
字数 2196 2025-08-29 08:30:24

Redis DLL劫持与域渗透实战:从Redis未授权到域控提权

1. 知识点概述

本实战案例涉及以下关键知识点:

  • Redis DLL劫持攻击
  • 向日葵远程代码执行(RCE)
  • Pass the Certificate攻击技术
  • CVE-2022-26923 (Certifried)域权限提升漏洞
  • 内网渗透中的信息收集与横向移动

2. 工具准备

3. Flag01获取:Redis DLL劫持

3.1 信息收集与Redis未授权访问

  1. 发现Redis 3.x版本运行在Windows Server 2019上
  2. 确认Redis未授权访问漏洞存在
  3. 尝试常见利用方式:
    • 主从同步:Redis 3.x不支持
    • 写计划任务/公钥:Linux特有方式
    • 写webshell:80端口未开放
    • 写启动项:需要重启服务器
    • 写入MOF:仅适用于Win2003

3.2 DLL劫持攻击实施

  1. 获取Redis安装路径

    info
    

    返回路径:C:\Program Files\Redis\redis.windows-service.conf

  2. 准备恶意DLL

    • 从本地system32提取dbghelp.dll(建议使用WinServer 2019 build 17763版本)
    • 使用修改版的dllHijack脚本生成Visual Studio项目文件
    • 使用VS2019打开项目(VS2022兼容性未测试)
  3. 生成CS Payload

    • 在Cobalt Strike中生成C格式的shellcode
    • 替换VS项目中的dllmain.cpp内容为生成的shellcode
    • 选择Release x64配置生成DLL文件
  4. 上传并执行攻击

    • 将生成的DLL和RedisWriteFile.py上传到VPS
    • 开放VPS的16379端口
    • 执行脚本将恶意DLL写入目标Redis服务器
  5. 获取Flag

    • 成功上线CS后,直接以本地管理员权限获取flag01

4. Flag02获取:内网横向移动

4.1 权限提升与内网代理

  1. SweetPotato提权

    • 检查当前权限:whoami /priv
    • 确认有SeImpersonatePrivilege权限
    • 上传并执行SweetPotato进行提权
  2. 内网代理搭建

    • 使用Stowaway建立内网代理通道
    • 通过代理进行内网扫描和信息收集

4.2 向日葵RCE利用

  1. 内网扫描发现

    • 使用Fscan扫描发现172.22.12.31主机安装向日葵
    • 确认向日葵版本较低,存在RCE漏洞
  2. 执行攻击

    • 使用sunloginrce工具直接获取flag02
    • 注意:该主机未加入域,无需上线CS

5. Flag03获取:域渗透与权限提升

5.1 域信息收集

  1. SharpHound收集

    • 以系统权限执行SharpHound收集域信息
    • 重点关注CA服务器和域控信息
  2. BloodHound分析

    • 上传收集的数据到BloodHound
    • 分析发现CA服务器:172.22.12.12
    • 确认CA名称为:xiaorang-WIN-AUTHORITY-CA

5.2 CVE-2022-26923 (Certifried)利用

  1. 漏洞原理

    • 通过AD CS请求具有任意DNS主机名的计算机证书
    • 使任何计算机帐户可模拟域控制器
    • 实现完全的域接管
  2. 攻击步骤

    • 使用抓取的机器账号hash(WIN-YUYAOX9Q$)
    • 创建新的机器账号用于冒充域管
    • 申请伪造的计算机证书
  3. 遇到的问题

    • 报错"KDC_ERR_PADATA_TYPE_NOSUPP"
    • 原因:获取的证书缺少智能卡登录EKU

5.3 Pass the Certificate攻击

  1. 提取密钥与证书

    • 从失败的Certifried攻击中提取有效部分
  2. 配置RBCD

    • 将证书配置到域控的基于资源的约束委派(RBCD)
  3. 申请服务票据

    • 申请cifs服务的服务票据(ST)
    • 导入票据进行传递票据攻击(PTT)

5.4 最终权限获取

  1. SAM转储

    • 获取域控的SAM数据库
  2. 密码喷涂

    • 对收集的哈希进行密码喷射攻击
  3. SMB访问

    • 使用获取的凭证通过SMB访问域控
    • 最终获取flag03

6. 关键注意事项

  1. DLL版本匹配

    • 确保使用的dbghelp.dll与目标系统版本匹配
    • 不同Windows版本可能导致攻击失败
  2. Certipy使用技巧

    • 注意证书的EKU属性
    • 准备好备用方案如Pass the Certificate
  3. 内网代理稳定性

    • 确保代理通道稳定,避免扫描过程中断
  4. 时间同步问题

    • 域渗透中确保所有机器时间同步
    • Kerberos攻击对时间敏感
  5. 日志清理

    • 渗透完成后注意清理痕迹
    • 特别是AD CS和域控上的操作日志

本教学文档详细记录了从Redis未授权访问到最终域控提权的完整过程,涵盖了Windows DLL劫持、内网横向移动和高级域渗透技术。实施时请确保获得合法授权,并注意操作的隐蔽性和日志清理。

Redis DLL劫持与域渗透实战:从Redis未授权到域控提权 1. 知识点概述 本实战案例涉及以下关键知识点: Redis DLL劫持攻击 向日葵远程代码执行(RCE) Pass the Certificate攻击技术 CVE-2022-26923 (Certifried)域权限提升漏洞 内网渗透中的信息收集与横向移动 2. 工具准备 Certipy : 用于AD CS攻击 GitHub - ly4k/Certipy 向日葵RCE工具 : GitHub - Mr-xn/sunloginrce SweetPotato : 本地提权工具 Stowaway : 内网代理工具 Fscan : 内网扫描工具 SharpHound : 域信息收集工具 3. Flag01获取:Redis DLL劫持 3.1 信息收集与Redis未授权访问 发现Redis 3.x版本运行在Windows Server 2019上 确认Redis未授权访问漏洞存在 尝试常见利用方式: 主从同步:Redis 3.x不支持 写计划任务/公钥:Linux特有方式 写webshell:80端口未开放 写启动项:需要重启服务器 写入MOF:仅适用于Win2003 3.2 DLL劫持攻击实施 获取Redis安装路径 : 返回路径: C:\Program Files\Redis\redis.windows-service.conf 准备恶意DLL : 从本地system32提取 dbghelp.dll (建议使用WinServer 2019 build 17763版本) 使用修改版的dllHijack脚本生成Visual Studio项目文件 使用VS2019打开项目(VS2022兼容性未测试) 生成CS Payload : 在Cobalt Strike中生成C格式的shellcode 替换VS项目中的 dllmain.cpp 内容为生成的shellcode 选择 Release x64 配置生成DLL文件 上传并执行攻击 : 将生成的DLL和 RedisWriteFile.py 上传到VPS 开放VPS的16379端口 执行脚本将恶意DLL写入目标Redis服务器 获取Flag : 成功上线CS后,直接以本地管理员权限获取flag01 4. Flag02获取:内网横向移动 4.1 权限提升与内网代理 SweetPotato提权 : 检查当前权限: whoami /priv 确认有 SeImpersonatePrivilege 权限 上传并执行SweetPotato进行提权 内网代理搭建 : 使用Stowaway建立内网代理通道 通过代理进行内网扫描和信息收集 4.2 向日葵RCE利用 内网扫描发现 : 使用Fscan扫描发现172.22.12.31主机安装向日葵 确认向日葵版本较低,存在RCE漏洞 执行攻击 : 使用 sunloginrce 工具直接获取flag02 注意:该主机未加入域,无需上线CS 5. Flag03获取:域渗透与权限提升 5.1 域信息收集 SharpHound收集 : 以系统权限执行SharpHound收集域信息 重点关注CA服务器和域控信息 BloodHound分析 : 上传收集的数据到BloodHound 分析发现CA服务器:172.22.12.12 确认CA名称为: xiaorang-WIN-AUTHORITY-CA 5.2 CVE-2022-26923 (Certifried)利用 漏洞原理 : 通过AD CS请求具有任意DNS主机名的计算机证书 使任何计算机帐户可模拟域控制器 实现完全的域接管 攻击步骤 : 使用抓取的机器账号hash(WIN-YUYAOX9Q$) 创建新的机器账号用于冒充域管 申请伪造的计算机证书 遇到的问题 : 报错"KDC_ ERR_ PADATA_ TYPE_ NOSUPP" 原因:获取的证书缺少智能卡登录EKU 5.3 Pass the Certificate攻击 提取密钥与证书 : 从失败的Certifried攻击中提取有效部分 配置RBCD : 将证书配置到域控的基于资源的约束委派(RBCD) 申请服务票据 : 申请cifs服务的服务票据(ST) 导入票据进行传递票据攻击(PTT) 5.4 最终权限获取 SAM转储 : 获取域控的SAM数据库 密码喷涂 : 对收集的哈希进行密码喷射攻击 SMB访问 : 使用获取的凭证通过SMB访问域控 最终获取flag03 6. 关键注意事项 DLL版本匹配 : 确保使用的dbghelp.dll与目标系统版本匹配 不同Windows版本可能导致攻击失败 Certipy使用技巧 : 注意证书的EKU属性 准备好备用方案如Pass the Certificate 内网代理稳定性 : 确保代理通道稳定,避免扫描过程中断 时间同步问题 : 域渗透中确保所有机器时间同步 Kerberos攻击对时间敏感 日志清理 : 渗透完成后注意清理痕迹 特别是AD CS和域控上的操作日志 本教学文档详细记录了从Redis未授权访问到最终域控提权的完整过程,涵盖了Windows DLL劫持、内网横向移动和高级域渗透技术。实施时请确保获得合法授权,并注意操作的隐蔽性和日志清理。