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

102 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 554,8554 - Pentesting RTSP
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}
## 基本信息
来自 [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
> **实时流协议** (**RTSP**) 是一种网络控制协议,旨在用于娱乐和通信系统,以控制流媒体服务器。该协议用于在端点之间建立和控制媒体会话。流媒体服务器的客户端发出类似于 VHS 的命令,如播放、录制和暂停,以便实时控制从服务器到客户端(点播视频)或从客户端到服务器(语音录音)的媒体流。
>
> 流数据的传输本身不是 RTSP 的任务。大多数 RTSP 服务器使用实时传输协议 (RTP) 结合实时控制协议 (RTCP) 进行媒体流传输。然而一些供应商实现了专有的传输协议。例如RealNetworks 的 RTSP 服务器软件也使用 RealNetworks 的专有实时数据传输 (RDT)。
**默认端口:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Key Details
**RTSP** 类似于 HTTP但专门为媒体流设计。它在一个简单的规范中定义可以在这里找到
[RTSP RFC2326](https://tools.ietf.org/html/rfc2326)
设备可能允许 **unauthenticated****authenticated** 访问。要检查,发送一个 "DESCRIBE" 请求。下面是一个基本示例:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r`
请记住,正确的格式包括一个双 "\r\n" 以确保一致的响应。"200 OK" 响应表示 **unauthenticated access**,而 "401 Unauthorized" 则表示需要身份验证,揭示是否需要 **Basic****Digest authentication**
对于 **Basic authentication**,您将用户名和密码编码为 base64并将其包含在请求中如下所示
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
此示例使用 "admin" 和 "1234" 作为凭据。以下是一个 **Python script** 用于发送这样的请求:
```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)
```
**基本认证** 更简单且更受欢迎。 **摘要认证** 需要仔细处理在 "401 Unauthorized" 响应中提供的认证细节。
此概述简化了访问 RTSP 流的过程,重点关注 **基本认证**,因为它在初始尝试中简单且实用。
## 枚举
获取有关有效方法和支持的 URL 的信息,并尝试暴力破解访问(如有必要)以获取内容访问权限。
```bash
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
### [暴力破解](../generic-methodologies-and-resources/brute-force.md#rtsp)
### **其他有用的程序**
进行暴力破解: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
[**Cameradar**](https://github.com/Ullaakut/cameradar)
* 检测任何可访问目标上的开放 RTSP 主机
* 获取它们的公共信息(主机名、端口、摄像头型号等)
* 启动自动字典攻击以获取它们的流路径(例如 /live.sdp
* 启动自动字典攻击以获取摄像头的用户名和密码
* 从中生成缩略图,以检查流是否有效并快速预览其内容
* 尝试创建 Gstreamer 管道以检查它们是否正确编码
* 打印 Cameradar 能获取的所有信息的摘要
## 参考文献
* [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" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}