mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-12 06:12:55 +00:00
101 lines
8 KiB
Markdown
101 lines
8 KiB
Markdown
# 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>
|