Gogs <= 0.13.x。经过身份验证的用户将符号链接提交到仓库中,然后调用“更新文件内容”API(PUT /api/v1/repos/<u>/<r>/contents/<path>)。Gogs 会跟随符号链接,并以 Gogs 进程的权限将攻击者控制的字节写入链接目标。当 Gogs 以 root 身份运行时,这便是一次任意的 root 文件写入——例如,将 NOPASSWD 规则放入 /etc/sudoers.d/ 以实现本地权限提升。
由 Wiz Research 报告。
CVE: CVE-2025-8110
python3 -m pip install requests pillow # gogs_register.py(验证码 OCR)
# 另外需要 PATH 中存在 `tesseract` 二进制文件(或修改 gogs_register.py 中的 R= 路径)
gogs_register.py - 绕过注册验证码获取经过身份验证的账户python3 gogs_register.py [用户名] [密码] # 默认值:pocuser / PocPass123!
# 目标为 http://127.0.0.1:3001 - 如需远程实例请修改 B=
gogs_symlink_root.sh - 符号链接写入./gogs_symlink_root.sh <gogs-用户> <gogs-密码> [sudo-用户]
# sudo-用户默认为当前用户;写入 /etc/sudoers.d/<sudo-用户>
# 在目标主机上运行(需具备 git 和 curl,Gogs 可通过 127.0.0.1:3001 访问)
仅用于授权的安全测试和教育目的。请仅对您拥有或已获得明确书面许可的系统运行此工具。
作者:r3vpwnx