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

107 lines
7 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 - RTSP渗透测试
<details>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客攻击</strong></summary>
支持HackTricks的其他方式
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方的PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交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\n”是获得可靠响应所必需的。一些系统会接受单个的“\r\n”但大多数不会。
这可以通过原始套接字发送。就像 HTTP 一样表明可用的未经认证访问的成功响应将包含“200 OK”。在这种情况下使用 DESCRIBE它还将包含视频源的所有操作参数。
如果设备需要认证那么返回的响应将包含“401 Unauthorized”。响应还将指示可用的认证机制。如果基本认证可用响应字符串将包含一个信息行其中有“WWW-Authenticate: Basic”。基本认证提供的其余信息对于实际进行基本认证来说基本上是不相关的。
如果需要摘要认证那么“401 Unauthorized”响应将有一个信息行包含“WWW-Authenticate: Digest”。如果你要进行摘要认证摘要规范中的信息非常重要所以不要忽视它。
基本认证是首选的方法,希望收到的响应表明它是可用的。如果不是,有三种不同的方法来组装摘要认证元素,所以摘要认证可能会变得麻烦,尤其是在盲目(未经认证)的情况下。本文的其余部分将坚持使用基本认证。我可能会在后续文章中写一篇,一旦我破译了进行盲目摘要认证的秘诀。
要构造一个基本认证元素,只需将 \<username> “:” \<password> 进行 base 64 编码并添加到请求中。所以一个新的请求看起来像:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n`
再次注意,请求以双“\r\n”结束。
值 YWRtaW46MTIzNA== 是 base 64 编码的用户名和密码,用“:”连接。在这个例子中我使用了“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><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客攻击</strong></summary>
支持HackTricks的其他方式
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>