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

8 KiB
Raw Blame History

554,8554 - Pentesting RTSP

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本信息

实时流传输协议RTSP是一种用于娱乐和通信系统的网络控制协议用于控制流媒体服务器。该协议用于在终端之间建立和控制媒体会话。媒体服务器的客户端发出类似VHS的命令如播放、录制和暂停以实现对从服务器流媒体到客户端点播或从客户端到服务器语音录制的实时控制。

实际的流数据传输本身不是RTSP的任务。大多数RTSP服务器与实时传输协议RTP结合使用实时控制协议RTCP进行媒体流传递。然而一些供应商实现了专有的传输协议。例如RealNetworks的RTSP服务器软件还使用了RealNetworks的专有实时数据传输RDT

来自wikipedia

默认端口: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

详细信息

首先RTSP是一种类似于HTTP的协议。它具有不同的结构和控制命令但其格式是文本的一旦您了解了命令的基本知识以及它们的交互方式就很容易使用。RTSP的规范非常简单明了。这是一个链接

RTSP - 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脚本如下

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/

枚举

让我们获取有关支持的有效方法和URL的信息并尝试暴力破解访问权限如果需要以获取内容访问权限。

nmap -sV --script "rtsp-*" -p <PORT> <IP>

暴力破解

其他有用的程序

要进行暴力破解:https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

Cameradar 允许你:

  • 检测任何可访问目标上的开放 RTSP 主机
  • 获取它们的公共信息(主机名、端口、摄像头型号等)
  • 启动自动字典攻击以获取它们的流路由(例如 /live.sdp
  • 启动自动字典攻击以获取摄像头的用户名和密码
  • 生成缩略图以检查流是否有效,并快速预览其内容
  • 尝试创建 Gstreamer 管道以检查它们是否被正确编码
  • 打印 Cameradar 能够获取的所有信息的摘要
  • https://github.com/Ullaakut/cameradar
☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥