Narrator: Luki w zabezpieczeniach wykonywania kodu.
Tego rodzaju luki umożliwiają nam
wykonanie kodu systemu operacyjnego na serwerze docelowym.
Tak więc, jeśli serwer docelowy używa systemu
Windows, będziemy mogli wykonać polecenie
systemu Windows, jeśli używa ono systemu Linux, będziemy mogli używać poleceń systemu Linux.
Oczywiście jest to naprawdę krytyczny problem, który
pozwoliłby nam zrobić wszystko, co
chcemy, z celem.
Możemy załadować powłokę
PHP, używając polecenia wget lub załadować ładunek, wirusa,
cokolwiek
chcemy, używając polecenia wget Linux.
Musisz tylko upewnić się, że przesyłasz
go do pliku lub katalogu,
w którym możesz zapisywać różne rzeczy.
Innym sposobem wykorzystania tej podatności jest po
prostu uruchomienie poleceń systemu operacyjnego i uzyskanie odwrotnej osłony na
podstawie tych poleceń.
Ponieważ możemy uruchamiać polecenia systemu operacyjnego,
możemy użyć języków programowania
obsługiwanych przez ten system operacyjny, aby spróbować uzyskać
połączenie zwrotne na naszym komputerze.
Po pierwsze, załóżmy, że przeglądamy
tutaj
i udaje nam się jeździć, a
potem doszliśmy do zakładki na stronie internetowej,
na której możesz na
przykład zrobić ping.
Teraz powinieneś zawsze
eksperymentować z wszelkimi pracami wejściowymi, które widzisz.
Spróbuj zobaczyć, jak działa to wejście i
co możesz do niego
wstrzyknąć, co możesz zrobić, aby uruchomić rzeczy.
Na przykład to wejście działa,
mówiąc, że zrobi ping.
A jeśli podasz adres
IP, na przykład wstawię 10 20 14 203, który jest moim
własnym adresem IP.
Aby to zobaczyć, aby użyć go jako normalnej
osoby, zamierzam przesłać zgłoszenie, a ono zacznie mi pingować
i dać mi wyniki pingowania.
Tak więc wygląda to tak,
że faktycznie wykonuje polecenie ping w
systemach Linux.
Zobaczmy teraz, czy możemy to wykorzystać.
Jeśli faktycznie wykonuje polecenie ping.
Więc to, co
robi, to idzie i działa.
Tak więc wysyłamy 10 20 14 203 jako ping.
A potem idzie do
serwera WWW i serwer wykonuje ping, 10 20 14 203.
Zobaczmy, czy możemy to wykorzystać.
Jak moglibyśmy to wykorzystać?
Zajmujemy to, co wprowadzamy, właśnie tutaj.
A potem robi ping.
Teraz w komendach opartych na systemie Linux i
Unix można użyć tego znaku, aby wykonać wiele poleceń w
jednym wierszu.
Więc jeśli to zrobisz, na przykład we własnym terminalu, więc po
prostu przejdę przez mój terminal tutaj.
A ja po prostu zrobię LS, czyli polecenie list,
a potem PWD to, co
pokazuje, co pokazuje twój katalog roboczy.
Tak więc, jeśli zrobię LS, a
następnie ten znak, a następnie wykonam PWD, wykona oba polecenia.
Tak więc to zrobi, a następnie pokaże, gdzie
znajduje się katalog roboczy.
Możemy więc zrobić to samo i przekonać się,
czy to nam odpowiada.
Zamierzamy wprowadzić adres IP, właściwy adres
IP, a następnie zamierzam
zrobić PWD i sprawdzić, czy wykona PWD dla mnie.
Jeśli tak, oznacza
to lukę w zabezpieczeniach podczas
wykonywania kodu i mogę wykonać na serwerze wszystko, co chcę.
Zobaczmy więc, co się wydarzy.
Wkleiłem to i zamierzam nacisnąć poddać.
I jak widać, otrzymaliśmy wyniki ping,
ale na końcu mamy nasz
bieżący katalog roboczy.
Tak więc jej podatność poprzez wwwdvwa jest exec.
Więc wykonał PWD, który wstawiłem.
A to oznacza, że mogę wstawić tam
dowolne polecenia, które zostaną wykonane.
Tak więc wstawiłem plik zasobów,
którego można użyć do uzyskania połączenia zwrotnego
z komputera docelowego.
Teraz istnieje
wiele sposobów, szereg poleceń,
które zapewniłyby odwrotne połączenie.
Wszystkie te polecenia zależą od języka programowania.
Na przykład, mamy polecenia w PHP,
mamy polecenia w Ruby, masz polecenia Pearl i
mamy jedno dla Bash.
Bash to komenda i język powłoki systemu Linux.
Tak więc wszystkie systemy operacyjne Unix będą mogły
wykonywać polecenia Bash.
To bardzo dobry sposób na zrobienie tego.
Tak więc w większości systemów uniksowych
to polecenie powinno działać na większości systemów uniksowych.
To byłby naprawdę dobry sposób na zrobienie tego.
Ponownie większość z nich miałaby Python,
więc Python byłby dobrym sposobem.
Netcat, większość z nich ma również Netcat.
Netcat to dobry sposób na zrobienie tego.
I faktycznie użyjemy Netcat w tym filmie.
Tak więc, najpierw
zamierzam słuchać połączeń, tak
jak robiliśmy to z Metasploit,
kiedy pracowaliśmy z wieloma programami obsługi.
Możesz w tym celu użyć modułu
obsługi i nasłuchiwać połączenia.
Cóż, zamierzam to uprościć i
pokazać nowy sposób.
I zamierzam użyć Netcat.
Netcat.
Netcat to tylko narzędzie,
które umożliwia słuchanie i łączenie komputerów.
Więc posłucham na porcie 80 80.
Netcat to program.
vv jest po to, aby zobaczyć pełne wyjście, więc
możemy zobaczyć dużo danych wyjściowych, wszystko idzie
nie tak, możemy to zobaczyć.
Mówimy, aby nasłuchiwał, używając
opcji L na porcie 8080.
Więc mam zamiar wcisnąć Enter,
a to znaczy, że tylko słuchanie na porcie 8080, to
wszystko, co zrobi.
Następnym poleceniem, które zamierzamy wykonać, jest próba połączenia
się z serwera WWW z
powrotem do mojego komputera, również przy użyciu Netcat.
Zakładamy, że serwer sieciowy ma Netcat.
Spróbujemy i zobaczymy, czy to zadziała.
Tak więc polecenie jest bardzo proste.
To Netcat i mówimy, żeby używał bin bash.
I podajemy adres IP mojego urządzenia.
Moje urządzenie atakujące, czyli 10 20 14.
A następnie port, który jest 8080.
Właśnie tutaj słuchamy.
Więc zamierzam to skopiować.
I zamierzam wykonać to w
ten
sam sposób, w jaki użyliśmy polecenia PWD.
Ostatnią rzeczą, jaką zrobiliśmy, było 10 20 14 203.
A potem zrobiliśmy PWD.
Więc,
co teraz zrobię, usunę
PWD i wkleję właśnie utworzony kod,
który spróbujemy połączyć z serwera WWW z
powrotem do maszyny cally do maszyny atakującej.
I ja tu przyjdę.
I, jak widać, otrzymaliśmy połączenie
z powrotem do nas z 10 20 14 204.
To jest komputer z opóźnieniem.
A jeśli zrobimy PWD, zobaczysz, że mamy odwrotną
powłokę, jeśli wykonamy LS.
Jeśli zrobimy identyfikator, zobaczysz, że jesteśmy wwwdata i możesz (wymamrotać), że
nazywasz się A, tylko po to, aby potwierdzić.
Że jestem w Metasploitable i możesz zobaczyć, że
jestem w Metasploitable.
I jestem w stanie uruchomić dowolne polecenie na
komputerze docelowym.
Zasadniczo mam pełny dostęp do komputera docelowego.