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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2018-10933 | Kitploit
Инструменты/GitHubGitHub/silasspringer/cve-2018-10933
Анализ уязвимостейЭксплуатацияCTFОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubsilasspringer/cve-2018-10933

CVE-2018-10933

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

Популярное

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

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

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

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

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

CTF-задача Proof of Concept

Автор: Silas Springer

Основана на CVE-2018-10933

Предыстория

CVE-2018-10933 — это уязвимость, обнаруженная в некоторых версиях libSSH, которая может предоставить потенциально неограниченный доступ к машине. Уязвимость возникает из-за неправильной обработки заголовков пакетов во время процесса аутентификации: отправка специально сформированного пакета с байтом MSG_USERAUTH_SUCCESS может позволить любому обойти аутентификацию. После этого злоумышленник получает полный доступ к машине.

Основа этой задачи заключается в том, чтобы участники исследовали предоставленный образ Docker, обнаружили эту уязвимость, использовали её для получения доступа, а затем нашли ключ, скрытый в символической ссылке на машине.

Пример описания CTF-задачи

root@kitploit:~
Someone got into my machine via port 22...
It looks like they didnt even know my credentials.

Anyways, they made a file with an odd name, but it's gone now, 
I wonder if there's still some trace of the filename - 
it might be something symbolic of the attacker...

Can you figure out how they got in and help me find the filename?

Решение

Ниже приведено подробное описание предполагаемого решения:

Обратите внимание, что из описания задачи следует, что злоумышленник получил доступ через порт 22, порт, обычно зарезервированный для SSH. Также обратите внимание, что злоумышленник не использовал учётные данные для получения доступа.

Исходя из этого, если поискать прошлые ошибки, связанные с получением доступа к машине через SSH без учётных данных, вполне вероятна проблема с байтом MSG_USERAUTH_SUCCESS. В качестве альтернативы, установив соединение с портом 22, можно определить версию запущенного libSSH, а затем поискать распространённые эксплойты для этой версии.

Также из описания можно заметить, что имя файла, которое нужно найти (флаг), существует только как цель символической ссылки.

Теперь, зная, что доступ можно получить, используя эту уязвимость, можно написать свой или скопировать пример скрипта, который запускает этот эксплойт, и выполнить команду на целевой машине. Я адаптировал скрипт эксплуатации для этого решения и назвал его libsshauthbypass.py.

Чтобы запустить этот скрипт и получить флаг с машины (в случае демо-образа), можно выполнить команду, подобную следующей:

root@kitploit:~
./libsshauthbypass.py --host localhost -p 1337 -c 'find / -type l -exec stat {} + | grep "File:" | sed -E "s/.*\-> (.*)$/\1/g" | grep "definitelyarealCTF"'
-- Примечание: предполагается, что образ запускается локально, или установлен туннель к работающему контейнеру через localhost:1337

что даёт вывод, похожий на

root@kitploit:~
sspringer-fedora-CVE: ./libsshauthbypass.py --host localhost -p 1337 -c 'find / -type l -exec stat {} + | grep "File:" | sed -E "s/.*\-> (.*)$/\1/g" | grep "definitelyarealCTF"'
INFO:paramiko.transport:Connected (version 2.0, client libssh_0.8.1)
definitelyarealCTF{totally_a_REAL_flag}

Повторное использование

Чтобы использовать версию этой задачи для своего собственного CTF, настоятельно рекомендуется изменить Dockerfile, чтобы использовать другой путь, нежели предоставленный по умолчанию, изменить флаг в flag.txt (при этом он должен оставаться одной строкой), а затем пересобрать образ. Обратите внимание, что может потребоваться запускать новый контейнер для каждой попытки подключения, чтобы предотвратить выполнение кем-либо разрушительной команды, затрагивающей всех участников.

Чтобы пересобрать образ Docker с новым флагом (и протестировать его):

  • Обновите flag.txt новым флагом
  • Запустите ./build_run <image name>[:<version number] <port number>
  • Используйте ./libsshauthbypass.py или свой собственный скрипт для подключения к контейнеру с правильной полезной нагрузкой и командой, которую вы хотите выполнить.
  • После выхода из оболочки, предоставленной скриптом build_run, контейнер будет остановлен и удалён, но образ останется и будет помечен как <image name>

Видео

Proof of Concept: https://youtu.be/ELrOBm02ANg

Прохождение задачи https://youtu.be/Ii121piSZR0

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