mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/554-8554-pentesting-rtsp.md
This commit is contained in:
parent
de7edf53f3
commit
ebc0147931
@ -8,24 +8,24 @@ From [wikipedia](https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol):
|
||||
|
||||
> The **Real Time Streaming Protocol** (**RTSP**) は、ストリーミングメディアサーバーを制御するためにエンターテインメントおよび通信システムで使用されるネットワーク制御プロトコルです。このプロトコルは、エンドポイント間のメディアセッションを確立し、制御するために使用されます。メディアサーバーのクライアントは、サーバーからクライアントへのメディアストリーミング(Video On Demand)やクライアントからサーバーへのメディアストリーミング(Voice Recording)をリアルタイムで制御するために、再生、録画、一時停止などのVHSスタイルのコマンドを発行します。
|
||||
>
|
||||
> ストリーミングデータ自体の伝送はRTSPのタスクではありません。ほとんどのRTSPサーバーは、メディアストリームの配信のためにリアルタイムトランスポートプロトコル(RTP)とリアルタイム制御プロトコル(RTCP)を併用しています。ただし、一部のベンダーは独自のトランスポートプロトコルを実装しています。たとえば、RealNetworksのRTSPサーバーソフトウェアは、RealNetworksの独自のリアルデータトランスポート(RDT)も使用しています。
|
||||
> ストリーミングデータ自体の伝送はRTSPのタスクではありません。ほとんどのRTSPサーバーは、メディアストリームの配信のためにリアルタイムトランスポートプロトコル(RTP)とリアルタイム制御プロトコル(RTCP)を併用しています。ただし、一部のベンダーは独自のトランスポートプロトコルを実装しています。たとえば、RealNetworksのRTSPサーバーソフトウェアは、RealNetworksの独自のReal Data Transport(RDT)も使用しています。
|
||||
|
||||
**デフォルトポート:** 554,8554
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
554/tcp open rtsp
|
||||
```
|
||||
## キー詳細
|
||||
## Key Details
|
||||
|
||||
**RTSP**はHTTPに似ていますが、メディアストリーミング専用に設計されています。これは、ここにある簡潔な仕様で定義されています:
|
||||
|
||||
[RTSP – RFC2326](https://tools.ietf.org/html/rfc2326)
|
||||
|
||||
デバイスは**認証なし**または**認証あり**のアクセスを許可する場合があります。確認するために、「DESCRIBE」リクエストが送信されます。基本的な例は以下の通りです:
|
||||
デバイスは**未認証**または**認証済み**のアクセスを許可する場合があります。確認するために、「DESCRIBE」リクエストが送信されます。基本的な例は以下の通りです:
|
||||
|
||||
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2`
|
||||
|
||||
正しいフォーマットには、一貫した応答のためにダブルの"\r\n"が含まれることを忘れないでください。「200 OK」応答は**認証なしのアクセス**を示し、「401 Unauthorized」は認証が必要であることを示し、**Basic**または**Digest authentication**が必要かどうかを明らかにします。
|
||||
正しいフォーマットには、一貫した応答のためにダブルの"\r\n"が含まれることを忘れないでください。「200 OK」の応答は**未認証アクセス**を示し、「401 Unauthorized」は認証が必要であることを示し、**Basic**または**Digest authentication**が必要かどうかを明らかにします。
|
||||
|
||||
**Basic authentication**の場合、ユーザー名とパスワードをbase64でエンコードし、リクエストに次のように含めます:
|
||||
|
||||
@ -41,16 +41,25 @@ s.sendall(req)
|
||||
data = s.recv(1024)
|
||||
print(data)
|
||||
```
|
||||
**基本認証**はより簡単で好まれます。**ダイジェスト認証**は、「401 Unauthorized」レスポンスで提供される認証詳細の慎重な取り扱いを必要とします。
|
||||
**基本認証**はより簡単で好まれます。**ダイジェスト認証**は、「401 Unauthorized」レスポンスで提供される認証詳細を慎重に扱う必要があります。
|
||||
|
||||
この概要は、RTSPストリームへのアクセスプロセスを簡素化し、初期の試行におけるそのシンプルさと実用性のために**基本認証**に焦点を当てています。
|
||||
|
||||
## 列挙
|
||||
|
||||
有効なメソッドとサポートされているURLに関する情報を取得し、コンテンツへのアクセスを得るために(必要に応じて)ブルートフォースを試みましょう。
|
||||
有効なメソッドとサポートされているURLに関する情報を取得し、必要に応じてコンテンツへのアクセスを得るためにブルートフォースを試みましょう。
|
||||
```bash
|
||||
nmap -sV --script "rtsp-*" -p <PORT> <IP>
|
||||
```
|
||||
#### RTSPストリームの表示 [ffplay](https://ffmpeg.org/ffplay.html)を使用して
|
||||
有効なRTSPパス(例:`/mpeg4`、`/live.sdp`)を発見し、アクセスを確認したら(認証なしまたは資格情報を使用)、`ffplay`を使用してフィードをストリーミングできます:
|
||||
```bash
|
||||
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
|
||||
```
|
||||
- `-rtsp_transport tcp`: より信頼性の高いストリーミングのためにUDPの代わりにTCPを使用
|
||||
- `-x`, `-y`: 動画解像度を制御するためのオプションフラグ
|
||||
- 必要に応じて`<IP>`とパスを置き換える
|
||||
|
||||
### [ブルートフォース](../generic-hacking/brute-force.md#rtsp)
|
||||
|
||||
### **その他の便利なプログラム**
|
||||
@ -64,7 +73,7 @@ nmap -sV --script "rtsp-*" -p <PORT> <IP>
|
||||
- ストリームルートを取得するために自動辞書攻撃を実行(例: /live.sdp)
|
||||
- カメラのユーザー名とパスワードを取得するために自動辞書攻撃を実行
|
||||
- ストリームが有効かどうかを確認し、その内容のクイックプレビューを得るためにサムネイルを生成
|
||||
- 正しくエンコードされているか確認するためにGstreamerパイプラインを作成しようとする
|
||||
- 適切にエンコードされているかを確認するためにGstreamerパイプラインを作成しようとする
|
||||
- Cameradarが取得できたすべての情報の概要を印刷
|
||||
|
||||
## 参考文献
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user