Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-60004-PoC — Gitea 1.27.1 之前版本允许通过 diffpatch API 经由 Git hook 安装实现远程代码执行。 | Kitploit
工具/GitHubGitHub/erberkan/cve-2026-60004-poc
漏洞分析漏洞利用Web应用程序漏洞利用后渗透利用安全虚拟化渗透测试红队远程访问工具
GitHuberberkan/cve-2026-60004-poc

CVE-2026-60004-PoC

Gitea 1.27.1 之前版本允许通过 diffpatch API 经由 Git hook 安装实现远程代码执行。

查看仓库
2521天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
网站
分享

CVE-2026-60004:Gitea Diffpatch API 远程代码执行

[!WARNING] 本仓库仅供经授权的安全研究和受控实验室测试使用。请勿对您不拥有或未获得明确评估许可的系统运行该概念验证代码。

概述

CVE-2026-60004 是 Gitea 的 diffpatch API 中的一个严重远程代码执行漏洞。拥有仓库创建或写入权限的已认证用户可以提交一个精心构造的补丁,导致一个可执行的 Git 钩子被实体化到临时裸仓库中。当该钩子被触发时,攻击者控制的命令将以 Gitea 服务账户的权限执行。

如果启用了公开注册,未认证的攻击者可能能够创建一个账户并访问存在漏洞的已认证端点。

属性详情
标识符CVE-2026-60004
安全公告GHSA-rcr6-4jqh-j84m
严重程度严重 — CVSS 3.1:9.8
弱点CWE-94:对代码生成的不当控制
受影响版本Gitea 1.17.0 至 1.27.0
修复版本Gitea 1.27.1
所需访问权限仓库写入权限
执行上下文Gitea 操作系统账户
CISA KEV 日期2026-08-25

仓库内容

文件描述
gitea_diffpatch_rce.py仅使用标准库的概念验证脚本,用于认证、创建私有仓库、提交精心构造的补丁并获取命令输出。
payload.patch示例补丁,用于创建一个可执行的 hooks/post-index-change 钩子。
poc.png实验室验证期间捕获的截图。
README.md原始研究笔记。

测试环境

该概念验证在以下隔离环境中得到验证:

组件配置
Gitea1.27.0
Git2.47.2
部署方式名为 gitea-lab 的 Docker 容器
服务地址192.168.184.128:3000
观察到的身份uid=1000(git) gid=1000(git)

成功利用后产生的命令输出类似于:

uid=1000(git) gid=1000(git) groups=1000(git)
Linux 6.12.20-amd64 x86_64
/data/gitea/tmp/local-repo/upload.git630501597
[exit-status=0]

概念验证输出

前提条件

  • Python 3.8 或更高版本
  • 对目标 Gitea 实例的网络访问
  • 一个具有仓库创建和写入权限的有效 Gitea 账户,或一个启用了公开注册的目标实验室实例
  • 一个明确获得授权的测试环境

该脚本仅使用 Python 标准库,不需要额外的软件包。

使用方法

python3 gitea_diffpatch_rce.py <base_url> <username> <password> "<command>"

本地实验室实例的示例:

python3 gitea_diffpatch_rce.py \
  http://127.0.0.1:3000 \
  pocuser \
  'P@ssw0rd!' \
  'id; uname -a'

该脚本首先尝试进行 Web 注册,然后使用提供的凭据进行认证。这使得同一命令既可用于启用了开放注册的实例上的新账户,也可用于现有账户。

技术分析

利用链由四个阶段组成:

  1. 攻击者控制的补丁提交
    POST /api/v1/repos/{owner}/{repo}/diffpatch 在临时克隆中使用 git apply --index --recount --cached --binary --ignore-whitespace --whitespace=fix -3 应用提供的补丁内容。

  2. 钩子路径放置
    临时仓库被创建为裸的共享克隆。在裸仓库中,仓库根目录同时也是 $GIT_DIR;因此,补丁路径 hooks/post-index-change 会解析到 Git 的活动钩子目录内。

  3. 可执行钩子实体化
    同一个补丁被提交两次。第二次应用会产生 add/add 冲突,导致三方回退机制将该路径以 100755 模式实体化到磁盘上,尽管使用了 --cached。随后的索引更新会调用 post-index-change,以 Gitea 服务账户的身份执行注入的 shell 代码。

  4. Git 原生输出获取
    该钩子通过 objects/info/alternates 识别源仓库,将命令输出存储为 Git blob,创建 tree 和 commit,并更新 refs/heads/output-leak。随后,概念验证脚本通过 Gitea 的原始文件 API 获取结果。该技术不需要目标发起直接出站连接。

影响

成功利用后,攻击者可以以 Gitea 服务账户的权限执行命令。根据部署配置,攻击者可能能够访问:

  • app.ini 和数据库凭据
  • SECRET_KEY、INTERNAL_TOKEN 以及与 LFS 相关的密钥
  • Gitea 进程挂载或可读的仓库
  • 进程环境变量
  • 从 Gitea 主机或容器可访问的内部服务

已确认该实验室账户对 app.ini 具有读取权限。

入侵指标

防御者应调查以下痕迹和请求模式:

  • 在短时间内对 /api/v1/repos/*/*/diffpatch 的两次相同或几乎相同的请求
  • 名为 output-leak 的分支
  • 作者为 poc <[email protected]> 的提交
  • 裸仓库或临时克隆目录中出现名为 hooks/post-index-change 的意外可执行文件
  • /data/gitea/tmp/local-repo/upload.git* 等路径下的可疑活动

这些指标描述的是所包含的概念验证脚本,并非详尽无遗;经过修改的漏洞利用可能使用不同的路径、引用、身份或输出通道。

修复与缓解

  1. 升级到 Gitea 1.27.1 或更高版本。 这是推荐的修复措施。该修复将受影响的工作流改为使用非裸临时克隆。
  2. 在升级完成前,在反向代理处限制 diffpatch API,例如通过拒绝访问匹配的 /api/v1/.../diffpatch 路由。在部署前请针对合法集成验证该规则。
  3. 禁用公开注册,如果运营上不需要,可设置 DISABLE_REGISTRATION=true。这减少了未认证的可达性,但无法防范拥有仓库写入权限的现有用户。
  4. 检查日志和仓库引用以发现上述指标,如果怀疑遭到入侵,请轮换 Gitea 账户可访问的凭据或密钥。

对于本研究中使用的实验室容器,可以通过以下命令进行清理:

docker rm -f gitea-lab

负责任的使用

本材料旨在帮助防御者复现、理解、检测和修复该漏洞。运营人员应仅在隔离环境中进行测试,并遵守其组织的授权和披露要求。

下载工具