Miss chmod
2011-07-02 o 12:48Trafiamy na stronę, która pod względem programistycznym jest bezbłednie napisana, żadnych uchybień, wszystkie zmienne ładnie filrowanie, żadnych bypassów czy innych błędów. Przeskanowanie hostingu pod względem otwartych portów oraz identyfikacja oprogramowania nie wniosła żadnych nowych informacji.
1) Zdobycie dostępu do serwera:
Sprawdzamy sobie jakie vhosty stoją na tej samej maszynie, możemy skorzystać z bing.com i wyszukać po IP: lub wybrać opcje reverse ip na http://wservices.ru.
Mając już liste stron nasz wachlarz możliwości znacznie sie powiększa. Naszym zadaniem jest wgranie php-shella na dowolną stronę znajdujacą sie na serwerze. Liczba vhostow na takich serwerach jest zróznicowana, ale często są to wyniki zadawalające i znalezienie jednej podatnej strony nie jest dużym problemem.
2) Wykorzystanie podatności:
Wbijamy na takiego phpshella i naszym zadaniem jest odczytania plików konfiguracyjnych strony która nas interesuje. I tutaj pojawia sie pewien "trik", o którym wielu właścicieli stron nie wie. Serwery hostingowe ustawiają prawa katalogu domowego użytkownika na 700 czyli tylko owner ma "dostęp" do katalogu, teoretycznie, JEDYNA rzeczą jaka jest nastepstwem takiego ustawienia jest fakt ze NIE możemy wylistować katalogu.
A co jeśli w katalogu bedzie plik z prawami others+r? Załóżmy bedzie mial 755 ustawione? Odpowiedz jest prosta, "cat /home/uzytkownik/plik" pokaze nam plik. Jedyne co musimy znać to ścieżke bezwzględną do pliku, ale o tym później.
Apache w domyślnej konfiguracji działa na prawach www-data || apache, dlatego też klienty ftp działają tutaj na naszą korzyść, bo ustawiaja prawa 755 dla plików php :> czyli read dla others, a o to nam właśnie chodzi.
(serwery hostingowe maja moduły suPhP lub suExec co sprawia że skrypty odpalane są na prawach właściciela, czyli w zupełnosci chmod 700 wystarcza aby plik.php był poprawnie interepretowany, ale o tym większość adminów nie wie).
3) Zdobycie scieżki do pliku
Ścieżki są bardzo łatwe do przewidzenia. Mając phpshella na jednej ze stronek, patrzymy jak wygląda struktura katalogów, często sa to "domain/strona.pl" lub "public_html" etc. w sciezce zmieni sie nazwa_usera i domena. Domene znamy, ale co z nazwą użytkownika? Przy wylistowanym katalogu home poznamy wszystkie nazwy, jeśli nie da sie wylistować, należy sprawdzić /etc/passwd.
w tym momencie musimy zbruteforce'owac ściezki, bo niestety nie jestesmy w stanie zgadnać jaki user jest włascicielem strony.
"cat /home/{username}/domain/strona.pl/joomla/config.php"
Tworzymy skrypt który bedzie wywoływał powyższe polecenie i z kazdą incrementacja bedzię sie zmieniac nazwa usera. w momencie gdy trafimy na odpowiedniego usera wyswietli nam sie zawartosc config.php :)
W momencie gdy shell_exec jest wylaczony, nalezy utworzyc skrypt operujący na plikach.
Pomyślnych łowów!
1) Zdobycie dostępu do serwera:
Sprawdzamy sobie jakie vhosty stoją na tej samej maszynie, możemy skorzystać z bing.com i wyszukać po IP: lub wybrać opcje reverse ip na http://wservices.ru.
Mając już liste stron nasz wachlarz możliwości znacznie sie powiększa. Naszym zadaniem jest wgranie php-shella na dowolną stronę znajdujacą sie na serwerze. Liczba vhostow na takich serwerach jest zróznicowana, ale często są to wyniki zadawalające i znalezienie jednej podatnej strony nie jest dużym problemem.
2) Wykorzystanie podatności:
Wbijamy na takiego phpshella i naszym zadaniem jest odczytania plików konfiguracyjnych strony która nas interesuje. I tutaj pojawia sie pewien "trik", o którym wielu właścicieli stron nie wie. Serwery hostingowe ustawiają prawa katalogu domowego użytkownika na 700 czyli tylko owner ma "dostęp" do katalogu, teoretycznie, JEDYNA rzeczą jaka jest nastepstwem takiego ustawienia jest fakt ze NIE możemy wylistować katalogu.
A co jeśli w katalogu bedzie plik z prawami others+r? Załóżmy bedzie mial 755 ustawione? Odpowiedz jest prosta, "cat /home/uzytkownik/plik" pokaze nam plik. Jedyne co musimy znać to ścieżke bezwzględną do pliku, ale o tym później.
Apache w domyślnej konfiguracji działa na prawach www-data || apache, dlatego też klienty ftp działają tutaj na naszą korzyść, bo ustawiaja prawa 755 dla plików php :> czyli read dla others, a o to nam właśnie chodzi.
(serwery hostingowe maja moduły suPhP lub suExec co sprawia że skrypty odpalane są na prawach właściciela, czyli w zupełnosci chmod 700 wystarcza aby plik.php był poprawnie interepretowany, ale o tym większość adminów nie wie).
3) Zdobycie scieżki do pliku
Ścieżki są bardzo łatwe do przewidzenia. Mając phpshella na jednej ze stronek, patrzymy jak wygląda struktura katalogów, często sa to "domain/strona.pl" lub "public_html" etc. w sciezce zmieni sie nazwa_usera i domena. Domene znamy, ale co z nazwą użytkownika? Przy wylistowanym katalogu home poznamy wszystkie nazwy, jeśli nie da sie wylistować, należy sprawdzić /etc/passwd.
w tym momencie musimy zbruteforce'owac ściezki, bo niestety nie jestesmy w stanie zgadnać jaki user jest włascicielem strony.
"cat /home/{username}/domain/strona.pl/joomla/config.php"
Tworzymy skrypt który bedzie wywoływał powyższe polecenie i z kazdą incrementacja bedzię sie zmieniac nazwa usera. w momencie gdy trafimy na odpowiedniego usera wyswietli nam sie zawartosc config.php :)
W momencie gdy shell_exec jest wylaczony, nalezy utworzyc skrypt operujący na plikach.
Pomyślnych łowów!
