hacktricks/network-services-pentesting/554-8554-pentesting-rtsp.md
2024-02-11 01:46:25 +00:00

6.7 KiB

554,8554 - Testowanie penetracyjne RTSP

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Z wikipedia:

Real Time Streaming Protocol (RTSP) to protokół kontroli sieciowej zaprojektowany do użytku w systemach rozrywkowych i komunikacyjnych w celu kontrolowania serwerów strumieniowych. Protokół jest używany do ustanawiania i kontrolowania sesji multimedialnych między punktami końcowymi. Klienci serwerów multimedialnych wydają polecenia w stylu VHS, takie jak odtwarzanie, nagrywanie i pauza, aby umożliwić kontrolę w czasie rzeczywistym nad strumieniem multimedialnym z serwera do klienta (Video On Demand) lub od klienta do serwera (Nagrywanie głosu).

Przesyłanie strumieniowych danych nie jest zadaniem RTSP. Większość serwerów RTSP używa protokołu Real-time Transport Protocol (RTP) w połączeniu z protokołem Real-time Control Protocol (RTCP) do dostarczania strumieni multimedialnych. Jednak niektórzy producenci stosują własne protokoły transportowe. Na przykład oprogramowanie serwera RTSP firmy RealNetworks używało również własnego protokołu transportowego Real Data Transport (RDT).

Domyślne porty: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

Kluczowe informacje

RTSP jest podobny do HTTP, ale został zaprojektowany specjalnie do strumieniowania mediów. Jest zdefiniowany w prostym specyfikacji, którą można znaleźć tutaj:

RTSP - RFC2326

Urządzenia mogą umożliwiać dostęp bez uwierzytelnienia lub uwierzytelniony. Aby to sprawdzić, wysyłane jest żądanie "DESCRIBE". Poniżej przedstawiono podstawowy przykład:

DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\n

Pamiętaj, że poprawne formatowanie obejmuje podwójne "\r\n" dla spójnej odpowiedzi. Odpowiedź "200 OK" oznacza dostęp bez uwierzytelnienia, podczas gdy "401 Unauthorized" sygnalizuje konieczność uwierzytelnienia, ujawniając, czy wymagane jest uwierzytelnienie Basic lub Digest.

W przypadku uwierzytelnienia Basic kodujesz nazwę użytkownika i hasło w base64 i dołączasz je do żądania w ten sposób:

DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n

Ten przykład używa poświadczeń "admin" i "1234". Oto skrypt Pythona, który wysyła takie żądanie:

import socket
req = "DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.1.1", 554))
s.sendall(req)
data = s.recv(1024)
print(data)

Podstawowa autoryzacja jest prostsza i preferowana. Autoryzacja digest wymaga ostrożnego obchodzenia się z danymi uwierzytelniającymi dostarczonymi w odpowiedzi "401 Unauthorized".

Ten przegląd upraszcza proces dostępu do strumieni RTSP, skupiając się na podstawowej autoryzacji ze względu na jej prostotę i praktyczność przy początkowych próbach.

Wyliczanie

Pobierzmy informacje na temat obsługiwanych metod i adresów URL oraz spróbujmy siłowo zdobyć dostęp (jeśli jest to konieczne), aby uzyskać dostęp do zawartości.

nmap -sV --script "rtsp-*" -p <PORT> <IP>

Brute Force

Inne przydatne programy

Do przeprowadzenia ataku brute force: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

  • Wykrywa otwarte hosty RTSP na dowolnym dostępnym celu
  • Pobiera ich publiczne informacje (nazwa hosta, port, model kamery itp.)
  • Uruchamia automatyczne ataki słownikowe, aby uzyskać ścieżkę strumienia (na przykład /live.sdp)
  • Uruchamia automatyczne ataki słownikowe, aby uzyskać nazwę użytkownika i hasło do kamer
  • Generuje miniatury, aby sprawdzić, czy strumienie są poprawne i szybko zobaczyć ich zawartość
  • Próbuje utworzyć potok Gstreamer, aby sprawdzić, czy są poprawnie zakodowane
  • Wyświetla podsumowanie wszystkich informacji, które Cameradar mógł uzyskać

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: