hacktricks/network-services-pentesting/554-8554-pentesting-rtsp.md
2023-08-03 19:12:22 +00:00

101 lines
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
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一个**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获得[**官方PEASS和HackTricks的衣物**](https://peass.creator-spring.com)
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
</details>
## 基本信息
> **实时流传输协议****RTSP**是一种用于娱乐和通信系统的网络控制协议用于控制流媒体服务器。该协议用于在终端之间建立和控制媒体会话。媒体服务器的客户端发出类似VHS的命令如播放、录制和暂停以实现对从服务器流媒体到客户端点播或从客户端到服务器语音录制的实时控制。
>
> 实际的流数据传输本身不是RTSP的任务。大多数RTSP服务器与实时传输协议RTP结合使用实时控制协议RTCP进行媒体流传递。然而一些供应商实现了专有的传输协议。例如RealNetworks的RTSP服务器软件还使用了RealNetworks的专有实时数据传输RDT
来自[wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol)。
**默认端口:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## 详细信息
首先RTSP是一种类似于HTTP的协议。它具有不同的结构和控制命令但其格式是文本的一旦您了解了命令的基本知识以及它们的交互方式就很容易使用。RTSP的规范非常简单明了。这是一个链接
[RTSP - RFC2326](https://tools.ietf.org/html/rfc2326)
RTSP可以进行无身份验证访问在现成设备中很常见或身份验证访问。身份验证访问与HTTP非常相似具有基本认证和摘要认证两者几乎与HTTP相同。要确定设备是经过身份验证还是未经身份验证的只需发送一个“DESCRIBE”请求。一个简单的DESCRIBE请求如下所示
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\n\r`
注意:可靠的响应需要额外的“\r\n”。一些系统将接受单个“\r\n”但大多数系统不会。
这可以通过原始套接字发送。与HTTP一样成功的响应表示可用的未经身份验证访问将包含“200 OK”。在这种情况下DESCRIBE还将包含视频源的所有操作参数。
如果设备需要身份验证则返回的响应将包含“401 Unauthorized”。响应还将指示可用的身份验证机制。如果可用基本认证则响应字符串将包含一个包含“WWW-Authenticate: Basic”的信息行。有关基本认证的其余信息在实际进行基本认证时基本上是无关紧要的。
如果需要摘要认证则“401 Unauthorized”响应将包含一个包含“WWW-Authenticate: Digest”的信息行。如果要进行摘要认证则Digest规范中的信息非常重要因此不要忽略它。
基本认证是首选的方法,希望收到的响应指示它可用。如果不可用,则有三种不同的方法来组装摘要认证元素,因此摘要认证可能会变得麻烦,特别是在盲目(未经身份验证)的情况下。本文的其余部分将坚持使用基本认证。如果我解密了进行盲目摘要认证的秘密配方,我可能会在以后写一篇后续文章。
要构建一个基本认证元素,只需将\<username>“:”\<password>进行base64编码并将其添加到请求中。因此新的请求将如下所示
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r`
再次注意,请求以双重“\r\n”终止。
值YWRtaW46MTIzNA==是用户名和密码与“:”连接后进行base64编码的结果。在这种情况下我使用了“admin”/“1234”。尝试使用一些简单的Python脚本如下
```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)
```
**来源:** [**http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/**](https://web.archive.org/web/20161020202643/http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/)
## 枚举
让我们获取有关支持的有效方法和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**
Cameradar 允许你:
* 检测任何可访问目标上的开放 RTSP 主机
* 获取它们的公共信息(主机名、端口、摄像头型号等)
* 启动自动字典攻击以获取它们的流路由(例如 /live.sdp
* 启动自动字典攻击以获取摄像头的用户名和密码
* 生成缩略图以检查流是否有效,并快速预览其内容
* 尝试创建 Gstreamer 管道以检查它们是否被正确编码
* 打印 Cameradar 能够获取的所有信息的摘要
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一家 **网络安全公司** 工作吗?想要在 HackTricks 中 **为你的公司做广告** 吗?或者你想要访问 **PEASS 的最新版本或下载 HackTricks 的 PDF** 吗?请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 集合 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者在 **Twitter****关注** 我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
</details>