2023-12-26 17:51:30 +00:00
# FreeIPA 渗透测试
2022-10-22 14:44:59 +00:00
< details >
2024-02-05 02:56:36 +00:00
< summary > < strong > 从零开始学习 AWS 黑客技术,成为专家< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE( HackTricks AWS 红队专家)< / strong > < / a > < strong > ! < / strong > < / summary >
2022-10-22 14:44:59 +00:00
2023-12-30 22:37:12 +00:00
支持 HackTricks 的其他方式:
2024-02-06 14:25:48 +00:00
- 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
2024-02-05 02:56:36 +00:00
- 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
- 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
2024-02-07 05:49:16 +00:00
- **加入** 💬 [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**电报群组** ](https://t.me/peass ) 或在 **Twitter** 🐦 [**@hacktricks_live** ](https://twitter.com/hacktricks_live )** 上关注**我们。
2024-02-05 02:56:36 +00:00
- 通过向 [**HackTricks** ](https://github.com/carlospolop/hacktricks ) 和 [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github 仓库提交 PR 来分享您的黑客技巧。
2022-10-22 14:44:59 +00:00
< / details >
2023-08-03 19:12:22 +00:00
## 基本信息
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
FreeIPA 是 Microsoft Windows Active Directory 的开源**替代品**,主要用于**Unix**环境。它将完整的**LDAP 目录**与 MIT **Kerberos**密钥分发中心相结合,用于类似 Active Directory 的管理。利用 Dogtag **证书系统**进行 CA 和 RA 证书管理,支持包括智能卡在内的**多因素**身份验证。SSSD 用于 Unix 认证流程的集成。
2022-10-22 14:44:59 +00:00
2023-08-03 19:12:22 +00:00
## 指纹
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
### 文件和环境变量
2024-02-07 05:49:16 +00:00
- 位于 `/etc/krb5.conf` 的文件存储着 Kerberos 客户端信息,用于域注册所需。其中包括 KDC 和管理员服务器的位置、默认设置和映射。
2024-02-05 02:56:36 +00:00
- 位于 `/etc/ipa/default.conf` 的文件设置了 IPA 客户端和服务器的系统范围默认值。
- 域内的主机必须在 `/etc/krb5.keytab` 处拥有一个 `krb5.keytab` 文件,用于认证流程。
2024-02-06 14:25:48 +00:00
- 各种环境变量(`KRB5CCNAME`、`KRB5_KTNAME`、`KRB5_CONFIG`、`KRB5_KDC_PROFILE`、`KRB5RCACHETYPE`、`KRB5RCACHEDIR`、`KRB5_TRACE`、`KRB5_CLIENT_KTNAME`、`KPROP_PORT`)用于指向与 Kerberos 认证相关的特定文件和设置。
2022-10-22 14:44:59 +00:00
2023-08-03 19:12:22 +00:00
### 二进制文件
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
诸如 `ipa` 、`kdestroy`、`kinit`、`klist`、`kpasswd`、`ksu`、`kswitch` 和 `kvno` 等工具对于管理 FreeIPA 域、处理 Kerberos 凭据、更改密码以及获取服务票据等功能至关重要。
2023-12-26 17:51:30 +00:00
2023-08-03 19:12:22 +00:00
### 网络
2022-10-22 15:26:54 +00:00
2024-02-05 02:56:36 +00:00
提供了一个示例来描述典型的 FreeIPA 服务器设置。
2022-10-22 15:26:54 +00:00
2023-08-03 19:12:22 +00:00
## 认证
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
FreeIPA 中的认证利用**Kerberos**,与**Active Directory**中的认证类似。访问域资源需要有效的 Kerberos 凭据,这些凭据可以根据 FreeIPA 域配置的不同存储在不同位置。
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
### **CCACHE 凭据文件**
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
CCACHE 文件通常存储在 ** `/tmp` ** 中,权限为 **600** ,是用于存储 Kerberos 凭据的二进制格式,由于其可移植性,对于无需用户明文密码进行认证很重要。使用 `klist` 命令可以解析 CCACHE 凭据,重用有效的 CCACHE 凭据涉及将 `KRB5CCNAME` 导出到凭据文件的路径。
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
### **Unix 密钥环**
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
另外, CCACHE 凭据可以存储在 Linux 密钥环中,提供对凭据管理的更多控制。凭据存储的范围不同(`KEYRING:name`、`KEYRING:process:name`、`KEYRING:thread:name`、`KEYRING:session:name`、`KEYRING:persistent:uidnumber`) , `klist` 能够解析用户的此信息。然而,从 Unix 密钥环中重用 CCACHE 凭据可能会带来挑战,可使用类似 **Tickey** 的工具来提取 Kerberos 凭据。
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
### Keytab
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
包含 Kerberos 主体和加密密钥的 Keytab 文件对于获取有效的票据授予票据( TGT) 而无需主体密码至关重要。使用类似 `klist` 和 **KeytabParser** 的实用程序可以轻松地解析和重用来自 Keytab 文件的凭据。
2022-10-22 14:44:59 +00:00
2024-02-06 14:25:48 +00:00
### 备忘单
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
您可以在以下链接中找到有关如何在 Linux 中使用凭据的更多信息:
2022-10-22 14:44:59 +00:00
{% content-ref url="privilege-escalation/linux-active-directory.md" %}
[linux-active-directory.md ](privilege-escalation/linux-active-directory.md )
{% endcontent-ref %}
2023-08-03 19:12:22 +00:00
## 枚举
2022-10-22 14:44:59 +00:00
2022-10-22 15:26:54 +00:00
{% hint style="warning" %}
2024-02-07 05:49:16 +00:00
您可以通过**ldap**和其他**二进制**工具执行**枚举**,或**连接到 FreeIPA 服务器的端口 443 上的网页**进行枚举。
2022-10-22 15:26:54 +00:00
{% endhint %}
2023-08-03 19:12:22 +00:00
### 主机、用户和组 <a href="#4b3b" id="4b3b"></a>
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
可以创建**主机**、**用户**和**组**。主机和用户被分类到分别称为“**主机组**”和“**用户组**”的容器中。这类似于**组织单位**( OU) 。
2022-10-22 14:44:59 +00:00
2024-02-07 05:49:16 +00:00
在 FreeIPA 中, 默认情况下, LDAP 服务器允许**匿名绑定**,并且大量数据可以在**未经身份验证**的情况下枚举。这可以枚举所有可用的未经身份验证的数据:
2022-10-22 14:44:59 +00:00
```
2023-08-03 19:12:22 +00:00
ldapsearch -x
2022-10-22 14:44:59 +00:00
```
2024-02-07 05:49:16 +00:00
要获取**更多信息**,您需要使用一个**经过身份验证**的会话(请查看身份验证部分以了解如何准备经过身份验证的会话)。
2022-10-22 14:44:59 +00:00
```bash
# Get all users of domain
ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local"
# Get users groups
ldapsearch -Y gssapi -b "cn=groups,cn=accounts,dc=domain_name,dc=local"
# Get all the hosts
ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=domain_name,dc=local"
# Get hosts groups
2023-08-03 19:12:22 +00:00
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"
2022-10-22 14:44:59 +00:00
```
2024-02-06 14:25:48 +00:00
从加入域的计算机,您可以使用**已安装的二进制文件**来枚举域:
2022-10-22 14:44:59 +00:00
```bash
ipa user-find
ipa usergroup-find
ipa host-find
ipa host-group-find
-------------------
ipa user-show < username > --all
ipa usergroup-show < user group > --all
ipa host-find < host > --all
ipa hostgroup-show < host group > --all
```
2022-10-22 15:26:54 +00:00
{% hint style="info" %}
2024-02-07 05:49:16 +00:00
**FreeIPA**的**管理员**用户相当于**AD**中的**域管理员**。
2022-10-22 15:26:54 +00:00
{% endhint %}
2024-02-05 02:56:36 +00:00
### Hashes <a href="#482b" id="482b"></a>
2022-10-22 15:26:54 +00:00
2024-02-07 05:49:16 +00:00
**IPA服务器**的**root**用户可以访问密码**哈希**。
2022-10-22 15:26:54 +00:00
2024-02-07 05:49:16 +00:00
* 用户的密码哈希以**base64**形式存储在“**userPassword**”**属性**中。该哈希可能是**SSHA512**( 旧版本的FreeIPA) 或**PBKDF2\_SHA256**。
* 如果系统与**AD**集成,密码的**Nthash**以**base64**形式存储在“**ipaNTHash**”中。
2022-10-22 15:26:54 +00:00
2023-12-30 22:37:12 +00:00
要破解这些哈希:
2022-10-22 15:26:54 +00:00
2024-02-07 05:49:16 +00:00
• 如果FreeIPA与AD集成, **ipaNTHash**容易破解:您应该**解码** **base64** -> 重新编码为**ASCII**十六进制 -> John The Ripper或**hashcat**可以帮助您快速破解
2022-10-22 15:26:54 +00:00
2024-02-07 05:49:16 +00:00
• 如果使用旧版本的FreeIPA, 那么使用**SSHA512**:您应该解码**base64** -> 找到SSHA512 **哈希** -> John The Ripper或**hashcat**可以帮助您破解
2022-10-22 15:26:54 +00:00
2024-02-07 05:49:16 +00:00
• 如果使用新版本的FreeIPA, 那么使用**PBKDF2\_SHA256**:您应该解码**base64** -> 找到PBKDF2\_SHA256 -> 其**长度**为256字节。John可以处理256位( 32字节) -> SHA-265用作伪随机函数, 块大小为32字节 -> 您只能使用PBKDF2\_SHA256哈希的前256位 -> John The Ripper或hashcat可以帮助您破解
2022-10-22 15:26:54 +00:00
2022-10-24 09:15:22 +00:00
< figure > < img src = "../.gitbook/assets/image (33).png" alt = "" > < figcaption > < / figcaption > < / figure >
2022-10-22 15:26:54 +00:00
2024-02-07 05:49:16 +00:00
要提取哈希,您需要成为**FreeIPA服务器**中的**root**用户,然后可以使用工具**`dbscan`**来提取它们:
2022-10-22 15:26:54 +00:00
< figure > < img src = "../.gitbook/assets/image (196).png" alt = "" > < figcaption > < / figcaption > < / figure >
2023-12-26 17:51:30 +00:00
### HBAC-Rules <a href="#482b" id="482b"></a>
2022-10-22 14:44:59 +00:00
2023-12-30 22:37:12 +00:00
这些规则授予用户或主机对资源(主机、服务、服务组等)的特定权限。
2022-10-22 14:44:59 +00:00
```bash
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local"
# Using ipa
ipa hbacrule-find
# Show info of rule
ipa hbacrule-show < hbacrule > --all
```
2024-02-05 02:56:36 +00:00
#### Sudo规则
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
FreeIPA通过sudo规则实现对**sudo权限**的集中控制。这些规则允许或限制在域内的主机上使用sudo执行命令。攻击者可能通过检查这些规则集来识别适用的主机、用户和允许的命令。
2022-10-22 14:44:59 +00:00
```bash
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local"
# Using ipa
ipa sudorule-find
# Show info of rule
ipa sudorule-show < sudorule > --all
```
2023-08-03 19:12:22 +00:00
### 基于角色的访问控制
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
一个**角色**由各种**特权**组成,每个特权包含一组**权限**。这些角色可以分配给用户、用户**组**、**主机**、主机组和服务。例如, 考虑默认的FreeIPA中的“用户管理员”角色来说明这种结构。
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
`用户管理员` 角色具有以下特权:
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
- **用户管理员**
- **组管理员**
- **阶段用户管理员**
2022-10-22 14:44:59 +00:00
2024-02-06 14:25:48 +00:00
使用以下命令可以枚举角色、特权和权限:
2022-10-22 14:44:59 +00:00
```bash
# Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
# Using ipa binary
ipa role-find
ipa role-show < role > --all
2023-08-03 19:12:22 +00:00
ipa privilege-find
2022-10-22 14:44:59 +00:00
ipa privilege-show < privilege > --all
ipa permission-find
ipa permission-show < permission > --all
```
2023-08-03 19:12:22 +00:00
### 攻击场景示例
2022-10-22 14:44:59 +00:00
2024-02-06 14:25:48 +00:00
在[https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e)中,您可以找到一个简单的示例,说明如何滥用某些权限来 compromise 域。
2022-10-22 14:44:59 +00:00
2023-12-26 17:51:30 +00:00
### Linikatz/LinikatzV2
2023-05-12 09:08:05 +00:00
2023-12-26 17:51:30 +00:00
* [https://github.com/Orange-Cyberdefense/LinikatzV2 ](https://github.com/Orange-Cyberdefense/LinikatzV2 )
* [https://github.com/CiscoCXSecurity/linikatz ](https://github.com/CiscoCXSecurity/linikatz )
2023-05-12 09:08:05 +00:00
2024-02-05 02:56:36 +00:00
## 提权
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
### ~~root 用户创建~~
2022-10-22 14:44:59 +00:00
{% hint style="warning" %}
2024-02-06 14:25:48 +00:00
如果您可以**创建一个名为 `root` 的新用户**,您可以冒充他,然后能够**以 root 身份 SSH 进入任何机器**。
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
**此问题已修复。**
2022-10-22 14:44:59 +00:00
{% endhint %}
2024-02-06 14:25:48 +00:00
您可以在[https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)中查看详细说明。
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
# 参考资料
* [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b ](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b )
* [https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a ](https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a )
* [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1 ](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1 )
* [https://www.youtube.com/watch?v=9dOu-7BTwPQ ](https://www.youtube.com/watch?v=9dOu-7BTwPQ )
2022-10-22 14:44:59 +00:00
< details >
2024-02-05 02:56:36 +00:00
< summary > < strong > 从零开始学习 AWS 黑客技术,成为专家< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2023-12-30 22:37:12 +00:00
2024-02-05 02:56:36 +00:00
支持 HackTricks 的其他方式:
2022-10-22 14:44:59 +00:00
2024-02-05 02:56:36 +00:00
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
2024-02-07 05:49:16 +00:00
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
2024-02-06 14:25:48 +00:00
* **加入** 💬 [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**电报群组** ](https://t.me/peass ) 或在 **Twitter** 🐦 [**@hacktricks_live** ](https://twitter.com/hacktricks_live )** 上关注我们**。
2024-02-05 02:56:36 +00:00
* 通过向 [**HackTricks** ](https://github.com/carlospolop/hacktricks ) 和 [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github 仓库提交 PR 来分享您的黑客技巧。
2022-10-22 14:44:59 +00:00
< / details >