# 554,8554 - Pentesting RTSP
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% endhint %}
## Basic Information
From [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
> **Protokol za strimovanje u realnom vremenu** (**RTSP**) je protokol za kontrolu mreže dizajniran za korišćenje u sistemima zabave i komunikacija za kontrolu servera za strimovanje medija. Protokol se koristi za uspostavljanje i kontrolu medijskih sesija između krajnjih tačaka. Klijenti medijskih servera izdaju komande u stilu VHS, kao što su reprodukcija, snimanje i pauza, kako bi olakšali kontrolu u realnom vremenu medija koji se strimuje sa servera na klijenta (Video na zahtev) ili sa klijenta na server (Snimanje glasa).
>
> Prenos podataka koji se strimuju nije zadatak RTSP-a. Većina RTSP servera koristi Protokol za prenos u realnom vremenu (RTP) u kombinaciji sa Protokolom za kontrolu u realnom vremenu (RTCP) za isporuku medijskog strima. Međutim, neki dobavljači implementiraju vlasničke protokole prenosa. Softver RTSP servera od RealNetworks, na primer, takođe koristi vlasnički Protokol za prenos podataka u realnom vremenu (RDT) od RealNetworks.
**Default ports:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Ključni Detalji
**RTSP** je sličan HTTP-u, ali je dizajniran posebno za strimovanje medija. Definisan je u jednostavnoj specifikaciji koja se može pronaći ovde:
[RTSP – RFC2326](https://tools.ietf.org/html/rfc2326)
Uređaji mogu omogućiti **neautentifikovani** ili **autentifikovani** pristup. Da biste proverili, šalje se "DESCRIBE" zahtev. Osnovni primer je prikazan u nastavku:
`DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r`
Zapamtite, ispravno formatiranje uključuje dupli "\r\n" za dosledan odgovor. Odgovor "200 OK" označava **neautentifikovani pristup**, dok "401 Unauthorized" signalizira potrebu za autentifikacijom, otkrivajući da li je potrebna **Basic** ili **Digest authentication**.
Za **Basic authentication**, kodirate korisničko ime i lozinku u base64 i uključujete ga u zahtev ovako:
`DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
Ovaj primer koristi "admin" i "1234" za akreditive. Evo **Python skripte** za slanje takvog zahteva:
```python
import socket
req = "DESCRIBE rtsp://: 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)
```
**Osnovna autentifikacija** je jednostavnija i poželjnija. **Digest autentifikacija** zahteva pažljivo rukovanje detaljima autentifikacije koji se pružaju u "401 Unauthorized" odgovoru.
Ovaj pregled pojednostavljuje proces pristupa RTSP tokovima, fokusirajući se na **Osnovnu autentifikaciju** zbog njene jednostavnosti i praktičnosti u početnim pokušajima.
## Enumeracija
Hajde da dobijemo informacije o validnim metodama i URL-ovima koji se podržavaju i pokušamo da brute-force pristup (ako je potrebno) da bismo dobili pristup sadržaju.
```bash
nmap -sV --script "rtsp-*" -p
```
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
### **Ostali korisni programi**
Za bruteforce: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
[**Cameradar**](https://github.com/Ullaakut/cameradar)
* Otkrivanje otvorenih RTSP hostova na bilo kojem dostupnom cilju
* Dobijanje njihovih javnih informacija (hostname, port, model kamere, itd.)
* Pokretanje automatizovanih napada rečnikom za dobijanje njihovog puta za strim (na primer /live.sdp)
* Pokretanje automatizovanih napada rečnikom za dobijanje korisničkog imena i lozinke kamera
* Generisanje sličica iz njih kako bi se proverilo da li su strimovi validni i da bi se dobio brzi pregled njihovog sadržaja
* Pokušaj kreiranja Gstreamer pipeline-a kako bi se proverilo da li su ispravno kodirani
* Ispisivanje sažetka svih informacija koje je Cameradar mogao da dobije
## Reference
* [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" %}
Učite i vežbajte AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Učite i vežbajte GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Podrška HackTricks
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
{% endhint %}