carlospolop/PurplePanda
GitHub: carlospolop/PurplePanda
PurplePanda 是一款基于图数据库的云与 SaaS 权限分析工具,用于识别云环境及跨平台配置中的提权路径与危险权限。
Stars: 718 | Forks: 88
# PurplePanda

该工具从不同的云/SaaS 应用程序中获取资源,重点关注权限,以便**识别云/SaaS 配置中的提权路径和危险权限**。请注意,PurplePanda 同时搜索**平台内部和跨平台的提权路径**。
这个名字来源于动物 **Red Panda**(小熊猫)。这种熊猫吃豌豆,就像 Purple Panda 可以摄入由这些 **[PEASS](https://github.com/carlospolop/PEASS-ng)** 发现的 API 密钥/令牌一样。颜色被改为紫色,是因为该工具主要面向 **Purple Teams**(紫队)(因为它对 **Blue Teams(蓝队)和 Red Teams(红队)都非常有用**)。
## 如何使用
`/intel` 内的每个文件夹定义了一个可以被枚举的平台,并且**包含一个 README.md 文件,解释了如何使用该特定模块**。
下载 **[Neo4jDesktop](https://neo4j.com/download-center/#desktop)** 并创建一个数据库。然后**导出环境变量 `PURPLEPANDA_NEO4J_URL` 和 `PURPLEPANDA_PWD`**,填入 neo4j 数据库的 URL 和密码。
如果你希望在枚举过程中针对发现的公网 IP 使用 **shodan**,请**导出一个名为 *SHODAN_KEY* 的环境变量,其中包含一个有效的 shodan api key**。
然后只需安装并启动程序,用逗号分隔指示你想要枚举的平台。
### 本地安装
```
git clone https://github.com/carlospolop/PurplePanda
cd PurplePanda
python3 -m venv .
source bin/activate
python3 -m pip install -r requirements.txt
export PURPLEPANDA_NEO4J_URL="bolt://neo4j@localhost:7687"
export PURPLEPANDA_PWD="s3cr3tpassword"
# 如果您打算使用 GCP,请安装此程序
gcloud components install gke-gcloud-auth-plugin
python3 main.py -h # Get help
python3 main.py -e -p google,github,k8s --github-only-org --k8s-get-secret-values --gcp-get-secret-values # Enumerate google, github and k8s
```
### Docker
```
# 考虑在 Dockerfile 中添加 API keys
docker rm -f purplepanda
docker build --tag=purplepanda .
# 执行 -h
## 将 -h 更改为您想要运行 purplepanda 的参数
docker run -t \
-e PURPLEPANDA_NEO4J_URL="bolt://neo4j@host.docker.internal:7687" \
-e PURPLEPANDA_PWD="s3cr3tpassword" \
-e GOOGLE_DISCOVERY=... \
-e GITHUB_DISCOVERY=... \
-e K8S_DISCOVERY=... \
-e CONCOURSE_DISCOVERY=... \
-e CIRCLECI_DISCOVERY=... \
purplepanda python3 main.py -h
## 需要 -t 才能正确查看输出
## 如果您使用 Neo4Desktop 连接到数据库,请使用域名 host.docker.internal
## 您可能需要使用 '-v' 选项来挂载包含配置的文件
```
PurplePanda 有 **2 种分析模式**:
- `-e` (*enumerate* / 枚举):这是**主要模式**,它将尝试收集数据并进行分析。
- `-a` (*analyze* / 分析):这将执行对**所提供凭据的快速分析**。
### 视频教程
查看如何使用和检查 PurplePanda 收集的数据:
[](https://www.youtube.com/watch?v=zl5NdvoWHX4)
### 对于 Blue/Purple Teams
使用每个平台的凭据,且该凭据至少对平台的所有资源具有**管理员读取权限**。这将帮助你准确地看到可以在每个平台配置中以及跨平台滥用的**提权路径**。
### 对于 Red Teams
PurplePanda 也**专为 Red Teams(红队)设计**。通常,云/SaaS 平台**不会给予所有人读取平台配置的权限**,这就是为什么 PurplePanda 支持为**同一平台使用多个密钥**,以便尝试利用你获取的所有密钥枚举所有内容,从而获得平台配置最准确的视图。
## 支持的平台
- **Google Cloud Platform (GCP)**:要了解 GCP 安全的工作原理以及如何滥用角色和权限,**请阅读 https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security**
- **Github**:要了解 Github 安全的工作原理以及如何绕过分支保护、窃取机密、提权……**请阅读 https://cloud.hacktricks.xyz/pentesting-ci-cd/github-security**
- **Kubernetes (K8s)**:要了解 Kubernetes RBAC 安全的工作原理以及如何滥用角色、提权到其他云……**请阅读 https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security**
## 如何使用数据
**使用 `-d` 参数**指示一个目录。然后,**PurplePanda 将在该目录中以 `csv` 格式写入若干有趣的分析**,内容涉及从所有平台获得的信息。建议是**在这些文件中寻找有趣和意想不到的东西**,然后转而**利用图表分析那些有趣的案例**。
`/intel` 内的每个文件夹定义了一个可以被枚举的平台,并且**包含一个 README.md 文件,解释了如何使用该特定模块**。此外,每个文件夹还包含一个 `HOW_TO_USE.md` 文件和一个 `QUERIES.md` 文件。
在 `HOW_TO_USE.md` 文件中,你可以找到**用于调查如何提升权限的最佳查询**(*适用于 Purple、Blue 和 Red Teams*)。
在 `QUERIES.md` 文件中,你将找到**所有建议的查询**,以便更轻松地调查数据。
### 如何在图表中可视化数据
遵循 **[VISUALIZE_GRAPHS.md](https://github.com/carlospolop/PurplePanda/blob/master/VISUALIZE_GRAPHS.md)** 中指示的说明。
## 如何贡献
在**根文件夹和 `intel/` 内的每个文件夹**中,你都会找到一个 **`TODO.md` 文件**。你可以在这些文件中找到你可以提供帮助的方式。只需**发送一个包含补充内容的 PR**。
**包含修复的 PR** 也欢迎 :)
此外,如果你有那些 TODO 文件中没有列出的**其他想法**,欢迎随时发送 PR。
By Carlos PolopTM
标签:API密钥, GCP, IAM, Neo4j, PEASS, SaaS, StruQ, Web报告查看器, 协议分析, 危险权限检测, 攻击路径分析, 数据展示, 权限提升, 权限枚举, 紫队, 红队, 请求拦截, 身份与访问管理, 逆向工具