Skip to content

ere6u5/vulnerable-python-poc-exploit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Отчет по анализу уязвимостей Python приложения

vulnerable_python | 2025-09-10

Project Overview

Уязвимое Python приложение - специально созданное веб-приложение для демонстрации и обучения эксплуатации распространенных уязвимостей:

  • Pickle Deserialization RCE - Удаленное выполнение кода через десериализацию
  • YAML Injection - Инъекция кода через парсинг YAML
  • XXE Injection - XML External Entity обработка
  • Eval() RCE - Выполнение кода через eval()
  • Subprocess Command Injection - Инъекция команд в subprocess

Настройка окружения

Развертывание уязвимого приложения

Тестовое окружение

# Запуск уязвимого приложения
docker run --name vuln_python_server --rm -ti -p 5000:5000 egonzalez90/vuln_python_server:latest

# Доступные эндпоинты
http://localhost:5000/          # Главная страница
http://localhost:5000/eval      # Eval RCE
http://localhost:5000/pickle    # Pickle deserialization  
http://localhost:5000/yaml      # YAML injection
http://localhost:5000/xml       # XXE injection
http://localhost:5000/subprocess # Command injection

Приложение доступно по адресу: http://localhost:5000

Результаты тестирования

Сводная таблица уязвимостей по CVSS v3.1

Уязвимость Уровень риска CVSS Score Вектор Exploitability Impact
Eval() RCE Критический 10.0 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H Легкий Критический
Pickle Deserialization RCE Критический 9.8 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Легкий Критический
YAML Injection Критический 9.8 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Легкий Критический
XXE Injection Высокий 8.2 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N Легкий Высокий
Subprocess Command Injection Высокий 8.6 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L Легкий Высокий

1. Eval() Remote Code Execution

Эндпоинт: POST /eval
Уровень риска: Критический

Суть проблемы:

  • Прямое выполнение пользовательского ввода через eval()
  • Отсутствие любой валидации или санитизации
  • Полный контроль над интерпретатором Python

Эксплуатация:

# Через веб-интерфейс
__import__('os').system('ls -la /')

Визуальные доказательства:

Eval RCE Activation

Активация шела через браузер

Eval RCE Use

Успешное подключение

Eval Browser LS

Просмотр файловой системы

Eval LS Demo

Демонстрация выполнения в терминале ls

Воздействие:

  • Выполнение произвольного Python кода
  • Полный контроль над сервером
  • Компрометация всей системы

Рекомендации:

  • Полностью отказаться от использования eval() с пользовательским вводом
  • Использовать ast.literal_eval() для безопасной десериализации
  • Реализовать строгую валидацию входных данных

2. Pickle Deserialization RCE

Эндпоинт: POST /pickle
Уровень риска: Критический

Суть проблемы:

  • Десериализация непроверенных данных через pickle.loads()
  • Возможность выполнения произвольных команд через метод __reduce__
  • Отсутствие проверки целостности и валидации данных

Эксплуатация:

import pickle
import base64
import os

class Exploit(object):
    def __reduce__(self):
        return (os.system, ('cat /etc/passwd',))

payload = base64.b64encode(pickle.dumps(Exploit())).decode()

Визуальные доказательства:

Pickle Browser

Веб-интерфейс Pickle уязвимости

Pickle Terminal

Выполнение эксплойта через терминал

Воздействие:

  • Выполнение произвольных системных команд
  • Чтение и модификация файлов на сервере
  • Полный контроль над системой

Рекомендации:

  • Избегать десериализации непроверенных данных
  • Использовать JSON вместо pickle для сериализации
  • Реализовать цифровую подпись для сериализованных данных

3. YAML Injection

Эндпоинт: POST /yaml
Уровень риска: Критический

Суть проблемы:

  • Использование небезопасного yaml.load() вместо yaml.safe_load()
  • Возможность выполнения произвольных команд через YAML теги
  • Отсутствие валидации YAML содержимого

Эксплуатация:

!!python/object/apply:os.system
- 'cat /etc/passwd'

Визуальные доказательства:

YAML Browser

Веб-интерфейс YAML уязвимости

YAML Terminal

Результат выполнения эксплойта

Воздействие:

  • Выполнение системных команд через инъекцию YAML
  • Обход механизмов безопасности
  • Компрометация системы

Рекомендации:

  • Использовать yaml.safe_load() вместо yaml.load()
  • Валидировать и санитизировать YAML входные данные
  • Ограничить доступные YAML теги

4. XXE Injection

Эндпоинт: POST /xml
Уровень риска: Высокий

Суть проблемы:

  • Обработка XML с включенными внешними entities
  • Возможность чтения локальных файлов через XXE
  • Отсутствие ограничений на обработку XML

Эксплуатация:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
  <!ELEMENT foo ANY>
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<foo>&xxe;</foo>

Визуальные доказательства:

XXE Browser

Веб-интерфейс XXE уязвимости

XXE Terminal

Результат чтения файла через XXE

Воздействие:

  • Чтение произвольных файлов на сервере
  • Server Side Request Forgery (SSRF)
  • Раскрытие конфиденциальной информации

Рекомендации:

  • Отключить обработку внешних entities в XML парсерах
  • Использовать безопасные XML парсеры (defusedxml)
  • Валидировать XML структуру перед обработкой

5. Subprocess Command Injection

Эндпоинт: POST /subprocess
Уровень риска: Высокий

Суть проблемы:

  • Использование shell=True с пользовательским вводом
  • Конкатенация команд без экранирования
  • Отсутствие валидации входных данных

Эксплуатация:

127.0.0.1; cat /etc/passwd

Визуальные доказательства:

Subprocess Browser

Веб-интерфейс Subprocess уязвимости

Subprocess Terminal

Результат выполнения command injection

Воздействие:

  • Выполнение произвольных системных команд
  • Чтение системных файлов
  • Эскалация привилегий

Рекомендации:

  • Избегать использования shell=True
  • Использовать параметризованные вызовы: subprocess.run(['ping', '-c', '1', ip])
  • Валидировать и экранировать пользовательский ввод

Инструменты автоматизации

Скрипты для автоматизации тестирования

Проект включает два основных скрипта для автоматизации процесса тестирования:

1. Запуск всех эксплойтов - scripts/run_all_scripts.sh

Данный скрипт автоматически выполняет все эксплойты последовательно:

Функциональность:

  • Автоматическое создание директории для логов
  • Последовательный запуск всех 5 эксплойтов
  • Логирование результатов в отдельные файлы

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

chmod +x scripts/run_all_scripts.sh
./scripts/run_all_scripts.sh

Выходные данные:

  • logs/exploitation_*.log - Основной лог-файл
  • logs/EVAL_*.log - Лог для Eval уязвимости
  • logs/PICKLE_*.log - Лог для Pickle уязвимости
  • logs/YAML_*.log - Лог для YAML уязвимости
  • logs/XXE_*.log - Лог для XXE уязвимости
  • logs/SUBPROCESS_*.log - Лог для Subprocess уязвимости

2. Генерация HTML отчета - scripts/generate_reports.sh

Скрипт для создания красивого HTML отчета на основе логов:

Функциональность:

  • Анализ последнего лог-файла
  • Генерация структурированного HTML отчета
  • Разделение по типам уязвимостей
  • Визуальное оформление с CSS
  • Автоматическое открытие в браузере

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

chmod +x scripts/generate_reports.sh
./scripts/generate_reports.sh

Выходные данные:


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors