hacktricks/network-services-pentesting/554-8554-pentesting-rtsp.md

101 lines
6.7 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# 554,8554 - Testowanie penetracyjne RTSP
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:42:55 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 01:46:25 +00:00
## Podstawowe informacje
2024-02-11 01:46:25 +00:00
Z [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
2024-02-08 21:36:35 +00:00
2024-02-11 01:46:25 +00:00
> **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).
>
2024-02-11 01:46:25 +00:00
> 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).
2024-02-11 01:46:25 +00:00
**Domyślne porty:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
2024-02-11 01:46:25 +00:00
## Kluczowe informacje
2024-02-11 01:46:25 +00:00
**RTSP** jest podobny do HTTP, ale został zaprojektowany specjalnie do strumieniowania mediów. Jest zdefiniowany w prostym specyfikacji, którą można znaleźć tutaj:
2024-02-11 01:46:25 +00:00
[RTSP - RFC2326](https://tools.ietf.org/html/rfc2326)
2024-02-11 01:46:25 +00:00
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`
2024-02-11 01:46:25 +00:00
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**.
2024-02-11 01:46:25 +00:00
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`
2024-02-11 01:46:25 +00:00
Ten przykład używa poświadczeń "admin" i "1234". Oto **skrypt Pythona**, który wysyła takie żądanie:
```python
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)
2022-02-10 12:30:58 +00:00
data = s.recv(1024)
2022-02-09 20:30:05 +00:00
print(data)
```
2024-02-11 01:46:25 +00:00
**Podstawowa autoryzacja** jest prostsza i preferowana. **Autoryzacja digest** wymaga ostrożnego obchodzenia się z danymi uwierzytelniającymi dostarczonymi w odpowiedzi "401 Unauthorized".
2024-02-11 01:46:25 +00:00
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.
2024-02-08 21:36:35 +00:00
2024-02-11 01:46:25 +00:00
## Wyliczanie
2024-02-11 01:46:25 +00:00
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.
```bash
2022-01-13 18:45:25 +00:00
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
2022-05-01 13:25:53 +00:00
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
2024-02-11 01:46:25 +00:00
### **Inne przydatne programy**
2024-02-11 01:46:25 +00:00
Do przeprowadzenia ataku brute force: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
2024-02-08 21:36:35 +00:00
[**Cameradar**](https://github.com/Ullaakut/cameradar)
2024-02-11 01:46:25 +00:00
* 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ć
2024-02-08 21:36:35 +00:00
2024-02-11 01:46:25 +00:00
## Odwołania
2024-02-08 21:36:35 +00:00
* [https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol)
* [http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/](http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/)
2022-05-08 23:13:03 +00:00
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:42:55 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć **reklamę swojej firmy w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>