mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
102 lines
6.8 KiB
Markdown
102 lines
6.8 KiB
Markdown
# 554,8554 - Pentesting RTSP
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
## Basic Information
|
||
|
||
From [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
|
||
|
||
> Le **Real Time Streaming Protocol** (**RTSP**) est un protocole de contrôle réseau conçu pour être utilisé dans les systèmes de divertissement et de communication pour contrôler les serveurs de médias en streaming. Le protocole est utilisé pour établir et contrôler des sessions multimédias entre des points de terminaison. Les clients des serveurs de médias émettent des commandes de style VHS, telles que lecture, enregistrement et pause, pour faciliter le contrôle en temps réel des médias diffusés du serveur à un client (Vidéo à la demande) ou d'un client au serveur (Enregistrement vocal).
|
||
>
|
||
> La transmission de données en streaming elle-même n'est pas une tâche de RTSP. La plupart des serveurs RTSP utilisent le Real-time Transport Protocol (RTP) en conjonction avec le Real-time Control Protocol (RTCP) pour la livraison de flux multimédias. Cependant, certains fournisseurs mettent en œuvre des protocoles de transport propriétaires. Le logiciel serveur RTSP de RealNetworks, par exemple, utilisait également le Real Data Transport (RDT) propriétaire de RealNetworks.
|
||
|
||
**Default ports:** 554,8554
|
||
```
|
||
PORT STATE SERVICE
|
||
554/tcp open rtsp
|
||
```
|
||
## Détails Clés
|
||
|
||
**RTSP** est similaire à HTTP mais conçu spécifiquement pour le streaming multimédia. Il est défini dans une spécification simple que vous pouvez trouver ici :
|
||
|
||
[RTSP – RFC2326](https://tools.ietf.org/html/rfc2326)
|
||
|
||
Les appareils peuvent permettre un accès **non authentifié** ou **authentifié**. Pour vérifier, une requête "DESCRIBE" est envoyée. Un exemple de base est montré ci-dessous :
|
||
|
||
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r`
|
||
|
||
N'oubliez pas que le format correct inclut un double "\r\n" pour une réponse cohérente. Une réponse "200 OK" indique un **accès non authentifié**, tandis que "401 Unauthorized" signale la nécessité d'une authentification, révélant si une authentification **Basic** ou **Digest** est requise.
|
||
|
||
Pour l'**authentification Basic**, vous encodez le nom d'utilisateur et le mot de passe en base64 et l'incluez dans la requête comme suit :
|
||
|
||
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
|
||
|
||
Cet exemple utilise "admin" et "1234" pour les identifiants. Voici un **script Python** pour envoyer une telle requête :
|
||
```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)
|
||
data = s.recv(1024)
|
||
print(data)
|
||
```
|
||
**L'authentification de base** est plus simple et préférée. **L'authentification par hachage** nécessite une gestion soigneuse des détails d'authentification fournis dans la réponse "401 Non autorisé".
|
||
|
||
Cette vue d'ensemble simplifie le processus d'accès aux flux RTSP, en se concentrant sur **l'authentification de base** pour sa simplicité et sa praticité lors des premières tentatives.
|
||
|
||
## Énumération
|
||
|
||
Obtenons des informations sur les méthodes valides et les URL prises en charge et essayons de forcer l'accès (si nécessaire) pour accéder au contenu.
|
||
```bash
|
||
nmap -sV --script "rtsp-*" -p <PORT> <IP>
|
||
```
|
||
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
|
||
|
||
### **Autres programmes utiles**
|
||
|
||
Pour bruteforcer : [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
|
||
|
||
[**Cameradar**](https://github.com/Ullaakut/cameradar)
|
||
|
||
* Détecter les hôtes RTSP ouverts sur n'importe quelle cible accessible
|
||
* Obtenir leurs informations publiques (nom d'hôte, port, modèle de caméra, etc.)
|
||
* Lancer des attaques par dictionnaire automatisées pour obtenir leur route de flux (par exemple /live.sdp)
|
||
* Lancer des attaques par dictionnaire automatisées pour obtenir le nom d'utilisateur et le mot de passe des caméras
|
||
* Générer des vignettes à partir d'eux pour vérifier si les flux sont valides et avoir un aperçu rapide de leur contenu
|
||
* Essayer de créer un pipeline Gstreamer pour vérifier s'ils sont correctement encodés
|
||
* Imprimer un résumé de toutes les informations que Cameradar a pu obtenir
|
||
|
||
## Références
|
||
|
||
* [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/)
|
||
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|