# Raport z testów bezpieczeństwa

## Metadane raportu

| Pole                     | Wartość                                   |
|---------------------------|--------------------------------------------|
| Nazwa projektu / systemu  | Test penetracyjny – środowisko laboratoryjne (maszyna Cap) |
| Adres IP hosta docelowego | 10.129.117.225                             |
| Typ testów                | Black-box, test penetracyjny aplikacji webowej, usług sieciowych oraz konfiguracji systemu operacyjnego |
| Zakres                    | Środowisko laboratoryjne platformy Hack The Box |
| Data przygotowania raportu | 2026-10-05                                 |
| Autor                     | slummer87                                  |

## 1. Wprowadzenie

Niniejszy raport przedstawia wyniki technicznego testu bezpieczeństwa (testu penetracyjnego) przeprowadzonego w ramach ćwiczeń laboratoryjnych na platformie Hack The Box (maszyna Cap). Badanie miało na celu kompleksową ocenę odporności hosta docelowego oraz działających na nim usług na ataki ukierunkowane na przejęcie kontroli nad systemem operacyjnym.

Zakres testów obejmował rekonesans infrastruktury sieciowej, identyfikację otwartych portów i wersji usług, analizę bezpieczeństwa aplikacji webowej służącej do monitorowania parametrów sieciowych, weryfikację bezpieczeństwa transmisji danych oraz audyt konfiguracji mechanizmów kontroli uprawnień w systemie Linux. Testy zrealizowano zgodnie z metodyką black-box, symulując działania potencjalnego zewnętrznego atakującego bez początkowej wiedzy o architekturze wewnętrznej i bez posiadania poświadczeń dostępowych.

## 2. Metodyka

Test penetracyjny przeprowadzono w następujących fazach:

1. **Rekonesans sieciowy i pełne skanowanie portów TCP** – identyfikacja aktywnego hosta oraz badanie wszystkich 65535 portów TCP za pomocą narzędzia `nmap` w celu wykrycia uruchomionych usług.
2. **Identyfikacja i analiza wersji usług** – ustalenie typu oraz wersji oprogramowania serwerowego (FTP, SSH, HTTP/Gunicorn) pod kątem znanych podatności i błędów konfiguracyjnych.
3. **Analiza bezpieczeństwa aplikacji webowej** – badanie logiki biznesowej panelu administracyjnego do monitorowania sieci oraz mechanizmów kontroli dostępu do wygenerowanych zrzutów ruchu sieciowego (identyfikacja podatności IDOR).
4. **Analiza przechwyconych danych i ekstrakcja poświadczeń** – inspekcja nieautoryzowanie pobranego pliku PCAP (`0.pcap`) oraz wykrycie nieszyfrowanych danych uwierzytelniających przesyłanych w protokole FTP.
5. **Weryfikacja poświadczeń i uzyskanie początkowego dostępu (Initial Access)** – uwierzytelnienie w usłudze FTP oraz weryfikacja możliwości ponownego wykorzystania hasła (Password Reuse) w usłudze SSH w celu uzyskania interaktywnej powłoki systemowej jako użytkownik `nathan` (odczyt pliku dowodowego `user.txt`).
6. **Audyt konfiguracji systemu i lokalna eskalacja uprawnień (Privilege Escalation)** – zbadanie uprawnień i konfiguracji jądra za pomocą skryptu LinPEAS oraz weryfikacja uprawnień procesów za pomocą narzędzia `getcap` (identyfikacja uprawnienia `cap_setuid` na interpreterze Pythona), a następnie wykonanie kodu eskalującego uprawnienia do poziomu administratora `root` (odczyt pliku dowodowego `root.txt`).
7. **Analiza ryzyka i opracowanie rekomendacji** – ocena wpływu wykrytych podatności na bezpieczeństwo środowiska oraz sformułowanie kompleksowych zaleceń naprawczych.

## 3. Przebieg testów

### 3.1. Rekonesans sieciowy i skanowanie portów

W początkowej fazie wykonano pełne skanowanie wszystkich portów TCP na adresie IP badanego hosta:

```bash
nmap -p- --open -sV 10.129.117.225
```

Zastosowane parametry:
- `-p-` – skanowanie pełnego zakresu portów TCP (od 1 do 65535),
- `--open` – raportowanie wyłącznie portów w stanie otwartym,
- `-sV` – detekcja wersji i nazw działających usług.

**Wynik skanowania:**

```text
Nmap scan report for 10.129.117.225
Host is up (0.066s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Gunicorn
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
```

Na badanym hoście **10.129.117.225** zidentyfikowano trzy otwarte porty TCP:
- **21/tcp** – serwer FTP (`vsftpd 3.0.3`),
- **22/tcp** – serwer SSH (`OpenSSH 8.2p1 Ubuntu 4ubuntu0.2`),
- **80/tcp** – serwer HTTP obsługiwany przez serwer WSGI `Gunicorn` (aplikacja w języku Python).

### 3.2. Rekonesans aplikacji webowej i eksploatacja podatności IDOR

Pod adresem `http://10.129.117.225` zidentyfikowano aplikację webową pełniącą funkcję panelu monitorowania parametrów sieciowych serwera. Jedną z głównych funkcjonalności aplikacji była opcja *Security Snapshot*, umożliwiająca generowanie i pobieranie zrzutów ruchu sieciowego w formacie PCAP.

Podczas analizy ruchu HTTP w proxy przechwytującym (Burp Suite) zaobserwowano, że aplikacja odwołuje się do zrzutów za pomocą numerycznych identyfikatorów w ścieżkach URL:
- Wyświetlanie szczegółów zrzutu: `GET /data/1`
- Pobieranie pliku zrzutu: `GET /download/1`

Aplikacja nie weryfikowała uprawnień użytkownika ani sesji przy żądaniu konkretnego identyfikatora. Przeprowadzono test polegający na modyfikacji identyfikatora w żądaniu z wartości `1` na wartość `0`:

```http
GET /download/0 HTTP/1.1
Host: 10.129.117.225
```

Serwer bez jakiejkolwiek autoryzacji zwrócił wcześniejszy plik zrzutu ruchu sieciowego (`0.pcap`), zarejestrowany podczas inicjalizacji systemu.

### 3.3. Analiza ruchu sieciowego i ekstrakcja danych uwierzytelniających

Pobrany plik `0.pcap` poddano analizie pod kątem obecności poufnych danych przesyłanych w nieszyfrowanych protokołach sieciowych. W zrzucie pakietów zidentyfikowano nieszyfrowaną sesję protokołu FTP (port 21/tcp), w której zarejestrowano proces logowania użytkownika systemowego:
- **Użytkownik:** `nathan`
- **Hasło:** ujawnione w pakiecie `PASS` w postaci otwartego tekstu (plain text).

### 3.4. Weryfikacja poświadczeń i uzyskanie dostępu do systemu (Initial Foothold)

W celu weryfikacji poprawności przechwyconych danych uwierzytelniających podjęto próbę logowania do usługi FTP:

```bash
ftp nathan@10.129.117.225
```

Uwierzytelnienie zakończyło się sukcesem. Wylistowanie zawartości katalogu domowego poleceniem `ls` wykazało obecność pliku dowodowego `user.txt`.

Następnie sprawdzono podatność środowiska na zjawisko ponownego wykorzystania poświadczeń (Password Reuse), podejmując próbę zalogowania się na konto systemowe za pośrednictwem protokołu SSH:

```bash
ssh nathan@10.129.117.225
```

Serwer SSH zaakceptował poświadczenia użytkownika `nathan`. Tester uzyskał bezpośrednią interaktywną powłokę systemową (shell) w systemie operacyjnym Ubuntu Linux i odczytał zawartość flagi użytkownika z pliku `/home/nathan/user.txt`.

### 3.5. Audyt systemu i lokalna eskalacja uprawnień (Privilege Escalation)

Po uzyskaniu dostępu do konta `nathan` przeprowadzono audyt konfiguracji systemu operacyjnego pod kątem możliwości eskalacji uprawnień. Na badaną maszynę przesłano skrypt audytujący LinPEAS:

```bash
scp linpeas.sh nathan@10.129.117.225:/home/nathan
```

Uruchomienie skryptu wskazało niebezpieczną konfigurację mechanizmu uprawnień jądra (Linux Capabilities) przypisaną do interpretera języka Python. Wynik ten zweryfikowano bezpośrednio za pomocą systemowego narzędzia `getcap`:

```bash
getcap -r / 2>/dev/null
```

Polecenie ujawniło następujące uprawnienie:
```text
/usr/bin/python3.8 = cap_setuid+eip
```

Uprawnienie `cap_setuid` umożliwia procesowi dowolną modyfikację identyfikatora użytkownika (UID), w tym przyjęcie tożsamości roota (UID 0). Ze względu na to, że uprawnienie zostało przypisane do pełnego interpretera języka programowania (`python3.8`), użytkownik `nathan` uruchomił interpreter i wykonał następujący kod:

```python
import os
os.setuid(0)
os.system("/bin/bash")
```

Wywołanie funkcji `os.setuid(0)` zmieniło kontekst bezpieczeństwa procesu na konto `root` (UID 0). Tester uzyskał nadrzędne uprawnienia administracyjne w systemie, co pozwoliło na wylistowanie zawartości katalogu `/root` oraz odczytanie flagi dowodowej z pliku `/root/root.txt`, potwierdzając całkowite przejęcie kontroli nad serwerem.

## 4. Zidentyfikowane podatności

### 4.1. Nieautoryzowane bezpośrednie odwołania do obiektów (IDOR) w aplikacji webowej

| Parametr           | Opis |
|---------------------|------|
| **ID podatności**   | VULN-001 |
| **Host/port**       | 10.129.117.225 : 80/tcp |
| **Kategoria**       | Niewłaściwa kontrola dostępu / IDOR (CWE-639: Authorization Bypass Through User-Controlled Key, OWASP Top 10: A01:2021 – Broken Access Control) |
| **Krytyczność**     | **Wysoka (High)** |
| **Opis**            | Endpointy `/data/<id>` oraz `/download/<id>` aplikacji webowej nie weryfikują uprawnień użytkownika do wnioskowanego zasobu. Zmiana parametru numerycznego (np. na `/download/0`) pozwala dowolnemu użytkownikowi na pobranie archiwalnych zrzutów ruchu sieciowego innych sesji i procesów systemowych. |
| **Dowód (PoC)**      | Wysłanie żądania `GET /download/0` skutkuje zwróceniem pełnego pliku `0.pcap` zawierającego zrzut ruchu sieciowego z etapu startu systemu bez jakiegokolwiek uwierzytelnienia. |
| **Wpływ**            | Naruszenie poufności przetwarzanych danych sieciowych, w tym ujawnienie wrażliwych informacji przesyłanych w nieszyfrowanych protokołach (poświadczenia, tokeny, dane sesyjne). |
| **Prawdopodobieństwo wykorzystania** | Bardzo wysokie – luka jest łatwa do wykrycia i eksploatacji za pomocą standardowej przeglądarki internetowej lub narzędzi typu `curl`/`Burp Suite`. |

### 4.2. Przesyłanie poświadczeń w postaci jawnej w protokole FTP

| Parametr           | Opis |
|---------------------|------|
| **ID podatności**   | VULN-002 |
| **Host/port**       | 10.129.117.225 : 21/tcp |
| **Kategoria**       | Nieszyfrowana transmisja danych wrażliwych (CWE-319: Cleartext Transmission of Sensitive Information, CWE-523: Unprotected Transport of Credentials) |
| **Krytyczność**     | **Średnia (Medium)** |
| **Opis**            | Usługa FTP (`vsftpd 3.0.3`) realizuje transmisję poleceń i danych uwierzytelniających jawnym tekstem, bez wymuszenia bezpiecznego kanału TLS/SSL. W sytuacji, gdy ruch sieciowy zostanie przechwycony (np. poprzez zrzut pakietów PCAP lub podsłuch w sieci LAN), poświadczenia logowania stają się natychmiast dostępne dla osób nieuprawnionych. |
| **Dowód (PoC)**      | Ekstrakcja danych uwierzytelniających użytkownika `nathan` (polecenia `USER nathan` oraz `PASS <haslo>`) z przechwyconego pliku zrzutu ruchu `0.pcap`. |
| **Wpływ**            | Ujawnienie loginów i haseł użytkowników, umożliwiające nieautoryzowany dostęp do zasobów serwera FTP oraz innych usług wykorzystujących te same poświadczenia. |
| **Prawdopodobieństwo wykorzystania** | Wysokie – w połączeniu z podatnością IDOR pozwalającą na pobieranie zrzutów ruchu, eksploatacja jest natychmiastowa. |

### 4.3. Ponowne użycie tego samego hasła w wielu usługach (Password Reuse)

| Parametr           | Opis |
|---------------------|------|
| **ID podatności**   | VULN-003 |
| **Host/port**       | 10.129.117.225 : 21/tcp, 22/tcp |
| **Kategoria**       | Niewłaściwe zarządzanie poświadczeniami (CWE-521: Weak Password Requirements, CWE-1391: Use of Weak Credentials) |
| **Krytyczność**     | **Średnia (Medium)** |
| **Opis**            | Hasło wykorzystywane przez użytkownika `nathan` w nieszyfrowanej usłudze FTP było identyczne z hasłem do systemowego konta powłoki SSH. Pozwoliło to na natychmiastową eskalację wektora ataku z poziomu usługi transferu plików do pełnego dostępu powłoki w systemie operacyjnym. |
| **Dowód (PoC)**      | Pomyślne uwierzytelnienie za pomocą polecenia `ssh nathan@10.129.117.225` przy użyciu hasła pozyskanego z transmisji FTP i uzyskanie interaktywnej sesji powłoki Linux. |
| **Wpływ**            | Rozszerzenie wektora ataku – kompromitacja poświadczeń w jednej usłudze o niższym poziomie zaufania prowadzi do bezpośredniego naruszenia bezpieczeństwa innych krytycznych usług systemowych. |
| **Prawdopodobieństwo wykorzystania** | Bardzo wysokie – standardowa technika sprawdzania współdzielenia haseł przez atakujących (Credential Stuffing / Password Reuse). |

### 4.4. Nadmiarowe uprawnienia (Linux Capabilities) przypisane do interpretera Pythona

| Parametr           | Opis |
|---------------------|------|
| **ID podatności**   | VULN-004 |
| **Host/port**       | 10.129.117.225 (lokalnie w systemie plików) |
| **Kategoria**       | Naruszenie zasady najmniejszych uprawnień / Błędna konfiguracja uprawnień (CWE-250: Execution with Unnecessary Privileges, CWE-276: Incorrect Default Permissions, CWE-732: Incorrect Permission Assignment for Critical Resource) |
| **Krytyczność**     | **Krytyczna (Critical)** |
| **Opis**            | Do pliku wykonywalnego interpretera `/usr/bin/python3.8` przypisano uprawnienie `cap_setuid+eip`. Mechanizm ten umożliwia procesowi dowolną zmianę efektywnego identyfikatora UID. Ponieważ Python jest językiem skryptowym o charakterze ogólnym, każdy lokalny użytkownik posiadający prawa do uruchomienia interpretera może wywołać `os.setuid(0)` i natychmiast przejąć uprawnienia konta root. |
| **Dowód (PoC)**      | Wykonanie w konsoli Pythona poleceń `import os; os.setuid(0); os.system("/bin/bash")`, skutkujące uzyskaniem powłoki systemowej z uprawnieniami `uid=0(root) gid=0(root)` i odczytem pliku `/root/root.txt`. |
| **Wpływ**            | Całkowite przejęcie kontroli nad systemem operacyjnym (kompromitacja poufności, integralności i dostępności całego serwera) przez dowolnego nieuwierzytelnionego administratora lokalnego. |
| **Prawdopodobieństwo wykorzystania** | Bardzo wysokie – podatność nie wymaga specjalistycznych exploitów binarnych, a jej wykorzystanie polega na wykonaniu dwóch standardowych instrukcji w Pythonie. |

## 5. Rekomendacje

W celu wyeliminowania zidentyfikowanych zagrożeń i zabezpieczenia systemu przed ponowną kompromitacją zaleca się wdrożenie następujących działań naprawczych:

1. **Zabezpieczenie aplikacji webowej przed podatnościami IDOR:**
   - Wdrożyć rygorystyczne mechanizmy autoryzacji oparte na rolach (RBAC) na poziomie każdego endpointu kontrolera (`/data/*`, `/download/*`).
   - Zastąpić przewidywalne, inkrementowane identyfikatory numeryczne losowymi, trudnymi do odgadnięcia identyfikatorami (np. UUID v4) powiązanymi ściśle z sesją zalogowanego użytkownika.
   - Wymusić uwierzytelnianie przed udostępnieniem jakichkolwiek funkcji diagnostycznych i pobieraniem zrzutów ruchu sieciowego.

2. **Wycofanie nieszyfrowanych protokołów transferu danych:**
   - Wyłączyć tradycyjną usługę FTP (`vsftpd`) i zastąpić ją bezpiecznym protokołem **SFTP** (w ramach SSH) lub wdrożyć **FTPS** (FTP over TLS) z wymuszeniem szyfrowania kanału kontrolnego i kanału danych.
   - Zablokować przesyłanie poświadczeń otwartym tekstem w obrębie sieci.

3. **Wdrożenie polityki zarządzania tożsamością i hasłami:**
   - Wymusić separację poświadczeń – konta usługowe oraz konta systemowe muszą posiadać unikalne, niezależne hasła o wysokiej entropii.
   - W usłudze SSH wdrożyć uwierzytelnianie wyłącznie w oparciu o asymetryczne klucze kryptograficzne (edycja `/etc/ssh/sshd_config`: `PasswordAuthentication no`), co eliminuje ryzyko ataków typu Password Reuse i Brute Force.

4. **Usunięcie nadmiarowych uprawnień Linux Capabilities:**
   - Usunąć flagę `cap_setuid` z pliku wykonywalnego interpretera Pythona za pomocą polecenia:
     ```bash
     sudo setcap -r /usr/bin/python3.8
     ```
   - Przestrzegać zasady najmniejszych uprawnień (*Principle of Least Privilege*) – nie należy przypisywać uprawnień z grupy `capabilities` ani bitów SUID binariom ogólnego przeznaczenia (interpreterom, edytorom tekstu, powłokom). W razie potrzeby uruchamiania dedykowanych skryptów administracyjnych należy stosować precyzyjnie skonfigurowane reguły `sudoers`.

5. **Audyt i monitorowanie uprawnień w systemie:**
   - Wdrożyć regularne skanowanie integralności systemu plików (np. za pomocą narzędzi AIDE, Tripwire lub Lynis) w celu wykrywania nieautoryzowanych zmian w atrybutach plików, uprawnieniach SUID/SGID oraz Linux Capabilities.
   - Rejestrować zdarzenia wywołań systemowych zmiany UID (`setuid`) za pośrednictwem podsystemu `auditd`.

## 6. Podsumowanie

Podczas testów bezpieczeństwa hosta w środowisku Hack The Box (maszyna Cap) zidentyfikowano łańcuch podatności obejmujący błędy w warstwie aplikacji webowej, sieciowej oraz systemu operacyjnego.

Początkowy wektor ataku stanowiła podatność **IDOR** w aplikacji webowej, która umożliwiła nieautoryzowane pobranie zrzutu ruchu sieciowego (`0.pcap`). Analiza zrzutu ujawniła **nieszyfrowaną transmisję poświadczeń** w usłudze FTP, a zjawisko **ponownego użycia hasła** pozwoliło testerowi na uzyskanie powłoki SSH jako użytkownik `nathan`. Ostateczne przejęcie systemu nastąpiło poprzez wykorzystanie **nadmiarowego uprawnienia `cap_setuid`** przypisanego do interpretera Pythona, co umożliwiło natychmiastową eskalację uprawnień do konta `root`.

Wdrożenie zaleceń naprawczych – w szczególności usunięcie uprawnienia `cap_setuid` z Pythona, eliminacja nieszyfrowanego FTP, wdrożenie autoryzacji w aplikacji webowej oraz wymuszenie unikalnych poświadczeń – pozwoli w pełni zabezpieczyć badany system przed opisanym łańcuchem ataku.

## 7. Podsumowanie klasyfikacji podatności

| ID        | Nazwa podatności                                              | Krytyczność |
|-----------|---------------------------------------------------------------|--------------|
| VULN-001  | Nieautoryzowane bezpośrednie odwołania do obiektów (IDOR)     | Wysoka       |
| VULN-002  | Przesyłanie poświadczeń w postaci jawnej w protokole FTP      | Średnia      |
| VULN-003  | Ponowne użycie tego samego hasła w wielu usługach (Password Reuse) | Średnia  |
| VULN-004  | Nadmiarowe uprawnienia (Linux Capabilities) na python3.8     | Krytyczna    |

---
*Niniejszy raport został przygotowany na podstawie testów przeprowadzonych w środowisku laboratoryjnym platformy Hack The Box. Wyniki i rekomendacje mają charakter poglądowy i powinny zostać zweryfikowane przed wdrożeniem w środowisku produkcyjnym.*
