hacktricks/network-services-pentesting/554-8554-pentesting-rtsp.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

16 KiB
Raw Blame History

554,8554 - RTSP पेंटेस्टिंग

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

मूलभूत जानकारी

रियल टाइम स्ट्रीमिंग प्रोटोकॉल (RTSP) मनोरंजन और संचार प्रणालियों में उपयोग के लिए डिज़ाइन किया गया एक नेटवर्क नियंत्रण प्रोटोकॉल है जो स्ट्रीमिंग मीडिया सर्वर को नियंत्रित करने के लिए उपयोग होता है। प्रोटोकॉल का उपयोग अंत बिंदुओं के बीच मीडिया सत्र स्थापित करने और नियंत्रण करने के लिए किया जाता है। मीडिया सर्वर के ग्राहक वीएचएस-शैली के आदेश जारी करते हैं, जैसे प्ले, रिकॉर्ड और पॉज़, जो सर्वर से क्लाइंट (वीडियो ऑन डिमांड) या क्लाइंट से सर्वर (आवाज रिकॉर्डिंग) तक मीडिया स्ट्रीमिंग के वास्तविक समय नियंत्रण को सुविधाजनक बनाने के लिए होते हैं।

स्ट्रीमिंग डेटा के स्वयं ट्रांसमिशन RTSP का कार्य नहीं है। अधिकांश RTSP सर्वर रियल-टाइम ट्रांसपोर्ट प्रोटोकॉल (RTP) का उपयोग मीडिया स्ट्रीम वितरण के साथ करते हैं। हालांकि, कुछ विक्रेताओं ने प्रायोजीत ट्रांसपोर्ट प्रोटोकॉल को लागू किया है। उदाहरण के लिए, RealNetworks के RTSP सर्वर सॉफ़्टवेयर ने भी RealNetworks के प्रायोजीत Real Data Transport (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" जानकारी लाइन होगी। डाइजेस्ट विनिर्देशिका के साथ दी गई जानकारी यदि आप डाइजेस्ट प्रमाणीकरण करने जा रहे हैं, तो यह बहुत महत्वपूर्ण है, इसे नजरअंदाज न करें।

बेसिक प्रमाणीकरण ही चलेगा, आशा है कि प्राप्त प्रतिक्रिया इसे उपलब्ध बताती है। यदि ऐसा नहीं है, तो एक डाइजेस्ट प्रमाणीकरण तत्व को गठित करने के लिए तीन अलग-अलग विधियाँ हैं, इसलिए डाइजेस्ट अंधा (अप्रमाणित) हो सकता है। इस लेख के बाकी भाग में हम बेसिक प्रमाणीकरण के साथ ही रहेंगे। मैं बाद में एक अनुवर्ती लेख लिख सकता हूं जब मैं डाइजेस्ट प्रमाणीकरण अंधा करने के लिए गुप्त सॉस को खोज लूंगा।

एक बेसिक प्रमाणीकरण तत्व को गठित करने के लिए, एक सरलता से <उपयोगकर्ता नाम> ":" <पासवर्ड> को बेस 64 एनकोड करें और इसे अनुरोध में जोड़ें। तो एक नया अनुरोध इस तरह दिखेगा:

DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r

फिर से नोट करें कि अनुरोध दोहरी "\r\n" के साथ समाप्त होता है।

मान YWRtaW46MTIzNA== उपयोगकर्ता नाम और पासवर्ड को "" के साथ जोड़कर बेस 64 एनकोड किया गया है। इस मामले में मैंने "admin"/"1234" का उपयोग किया है। इसे आजमाने के लिए कुछ सरल पायथन स्क्रिप्टिंग इस तरह दिखता है:

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 Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥