
Python PoC 漏洞利用代码,针对 CVE-2025-8110,通过符号链接操纵和 API 滥用演示从任意文件写入到 Gogs 中的远程代码执行。专为教育安全研究和授权实验室环境设计。
此仓库包含一个 Python 概念验证(PoC)脚本,用于演示和分析在自托管的 Git 服务 Gogs(版本 0.13.3 及更早版本)中记录的漏洞 CVE-2025-8110。
[!WARNING] 本软件仅供教育和安全研究目的使用。 未经所有者事先书面同意,将此材料用于目标是非法的。本仓库的作者不对因使用本代码造成的任何损害、损失或滥用负责。请自行承担风险,并仅在受控环境或授权的模拟(如 CTF 实验室)中使用。
CVE-2025-8110 是一个严重的任意文件写入漏洞,由于在通过 Gogs 的 PutContents API 处理符号链接(symlinks)时验证不足而引发。
一个经过身份验证的攻击者可以:
.git/config)。root 身份运行,文件写入可以升级为远程代码执行(RCE),方法是将所需命令注入 Git 配置文件的 sshCommand 属性。exploit.py)该脚本使用有效凭据和在 Gogs 网页界面中手动预先生成的 API 令牌来自动化整个利用过程:
┌──────────────────────────────────────────────┐
│ Máquina del Atacante (Kali) │
└──────────────────────┬───────────────────────┘
│
(1) Crea Repositorio │ (3) Sube Symlink (.git/config)
Malicioso vía API │ vía git push
▼
┌──────────────────────────────────────────────┐
│ Túnel SSH Local (puerto 8080) │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Servidor Víctima Gogs │
│ (Puerto 3001) │
└──────────────────────┬───────────────────────┘
│
│ (4) API PUT "contents"
│ Sigue Symlink y escribe
│ "sshCommand" en .git/config
▼
┌──────────────────────────────────────────────┐
│ Ejecución del Payload como ROOT │
└──────────────────────────────────────────────┘
create_malicious_repo:使用提供的访问令牌向 Gogs API (/api/v1/user/repos) 发送 POST 请求,以创建一个具有动态生成随机名称的新仓库。upload_malicious_symlink:
/tmp/。.git/config(服务器的 Git 配置文件)的符号链接。git push)将更改推送回服务器。exploit:利用 Git 的 sshCommand 属性中的注入技巧定义负载(payload)。通过 API 更新内容时,Gogs 被迫覆盖服务器上自身的 .git/config。当 Git 流程的最后部分被触发时,Gogs 系统执行终端命令(一个 Bash 反向 Shell),将连接返回给您的 Netcat 监听器。在运行脚本之前,请确保在 Git 中配置全局身份信息,以避免自动提交时出错:
git config --global user.email "[email protected]"
git config --global user.name "estudiante"