mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-11 22:03:10 +00:00
107 lines
7 KiB
Markdown
107 lines
7 KiB
Markdown
# 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>
|