mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
86 lines
4.8 KiB
Markdown
86 lines
4.8 KiB
Markdown
# 554,8554 - Pentesting RTSP
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## Basiese Inligting
|
||
|
||
Van [wikipedia](https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol):
|
||
|
||
> Die **Real Time Streaming Protocol** (**RTSP**) is 'n netwerkbeheerprotokol wat ontwerp is vir gebruik in vermaak- en kommunikasiesisteme om streaming media bedieners te beheer. Die protokol word gebruik om media-sessies tussen eindpunte te vestig en te beheer. Kliente van media bedieners gee VHS-styl opdragte, soos speel, opneem en pauze, om werklike tydbeheer van die media wat van die bediener na 'n kliënt (Video On Demand) of van 'n kliënt na die bediener (Stemopname) stroom, te fasiliteer.
|
||
>
|
||
> Die oordrag van streaming data self is nie 'n taak van RTSP nie. Meeste RTSP bedieners gebruik die Real-time Transport Protocol (RTP) in samewerking met Real-time Control Protocol (RTCP) vir media stroom aflewering. Sommige verskaffers implementeer egter eiendoms vervoerprotokolle. Die RTSP bediener sagteware van RealNetworks, byvoorbeeld, het ook RealNetworks se eiendoms Real Data Transport (RDT) gebruik.
|
||
|
||
**Standaard poorte:** 554,8554
|
||
```
|
||
PORT STATE SERVICE
|
||
554/tcp open rtsp
|
||
```
|
||
## Sleutel Besonderhede
|
||
|
||
**RTSP** is soortgelyk aan HTTP, maar spesifiek ontwerp vir media streaming. Dit is gedefinieer in 'n eenvoudige spesifikasie wat hier gevind kan word:
|
||
|
||
[RTSP – RFC2326](https://tools.ietf.org/html/rfc2326)
|
||
|
||
Toestelle mag **onaangetekende** of **aangetekende** toegang toelaat. Om te kontroleer, word 'n "DESCRIBE" versoek gestuur. 'n Basiese voorbeeld word hieronder getoon:
|
||
|
||
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2`
|
||
|
||
Onthou, die korrekte formaat sluit 'n dubbele "\r\n" in vir 'n konsekwente antwoord. 'n "200 OK" antwoord dui op **onaangetekende toegang**, terwyl "401 Unauthorized" die behoefte aan verifikasie aandui, wat onthul of **Basic** of **Digest authentication** benodig word.
|
||
|
||
Vir **Basic authentication** kodeer jy die gebruikersnaam en wagwoord in base64 en sluit dit in die versoek in soos volg:
|
||
|
||
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==`
|
||
|
||
Hierdie voorbeeld gebruik "admin" en "1234" vir die geloofsbriewe. Hier is 'n **Python script** om so 'n versoek te stuur:
|
||
```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)
|
||
```
|
||
**Basiese outentisering** is eenvoudiger en verkieslik. **Digest outentisering** vereis sorgvuldige hantering van die outentiseringsbesonderhede wat in die "401 Onbevoegd" antwoord verskaf word.
|
||
|
||
Hierdie oorsig vereenvoudig die proses om toegang tot RTSP-strome te verkry, met fokus op **Basiese outentisering** vir sy eenvoud en praktiese nut in aanvanklike pogings.
|
||
|
||
## Enumerasie
|
||
|
||
Kom ons kry inligting oor geldige metodes en URL's wat ondersteun word en probeer om die toegang te brute-force (indien nodig) om toegang tot die inhoud te verkry.
|
||
```bash
|
||
nmap -sV --script "rtsp-*" -p <PORT> <IP>
|
||
```
|
||
#### Beskou die RTSP-stroom met [ffplay](https://ffmpeg.org/ffplay.html)
|
||
Sodra jy 'n geldige RTSP-pad ontdek het (bv. `/mpeg4`, `/live.sdp`) en toegang bevestig het (sonder verifikasie of met geloofsbriewe), kan jy `ffplay` gebruik om die stroom te speel:
|
||
```bash
|
||
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
|
||
```
|
||
- `-rtsp_transport tcp`: Gebruik TCP in plaas van UDP vir meer betroubare streaming
|
||
- `-x`, `-y`: Opsionele vlae om video resolusie te beheer
|
||
- Vervang `<IP>` en pad soos nodig
|
||
|
||
### [Brute Force](../generic-hacking/brute-force.md#rtsp)
|
||
|
||
### **Ander nuttige programme**
|
||
|
||
Om te bruteforce: [https://github.com/Tek-Security-Group/rtsp_authgrinder](https://github.com/Tek-Security-Group/rtsp_authgrinder)
|
||
|
||
[**Cameradar**](https://github.com/Ullaakut/cameradar)
|
||
|
||
- Ontdek oop RTSP gasheer op enige toeganklike teiken
|
||
- Kry hul publieke inligting (hostname, poort, kamera model, ens.)
|
||
- Begin outomatiese woordeboekaanvalle om hul stroomroete te kry (byvoorbeeld /live.sdp)
|
||
- Begin outomatiese woordeboekaanvalle om die gebruikersnaam en wagwoord van die kameras te kry
|
||
- Genereer miniatuurbeelde van hulle om te kontroleer of die strome geldig is en om 'n vinnige oorsig van hul inhoud te hê
|
||
- Probeer om 'n Gstreamer-pyplyn te skep om te kontroleer of hulle behoorlik gekodeer is
|
||
- Druk 'n opsomming van al die inligting wat Cameradar kon kry
|
||
|
||
## References
|
||
|
||
- [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)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|