Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
poodle-PoC — 🐩 Poodle (Padding Oracle On Downgraded Legacy Encryption) हमला CVE-2014-3566 🐩 | Kitploit
उपकरण/GitHubGitHub/mpgn/poodle-poc
एन्क्रिप्शन/डिक्रिप्शन उपकरणभेद्यता विश्लेषणशोषणवेब सुरक्षाक्रिप्टोग्राफीपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubmpgn/poodle-poc

poodle-PoC

🐩 Poodle (Padding Oracle On Downgraded Legacy Encryption) हमला CVE-2014-3566 🐩

रिपॉजिटरी देखें
265722 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Poodle PoC 🐩 🐩 🐩

पूडल अटैक (Padding Oracle On Downgraded Legacy Encryption) का एक प्रूफ ऑफ कॉन्सेप्ट:

एक मैन-इन-द-मिडिल एक्सप्लॉइट जो इंटरनेट और सुरक्षा सॉफ़्टवेयर क्लाइंट्स के SSL 3.0 पर फ़ॉलबैक का फ़ायदा उठाता है

पूडल अटैक आपको क्लाइंट द्वारा सर्वर को भेजे गए एन्क्रिप्टेड डेटा को पुनर्प्राप्त करने की अनुमति देता है यदि उपयोग की जाने वाली ट्रांसपोर्ट लेयर सुरक्षा SSLv3 है। यह आपको अनुरोध को एन्क्रिप्ट करने के लिए उपयोग की गई निजी कुंजी को पुनर्प्राप्त करने की अनुमति नहीं देता है।

imgonline-com-ua-twotoone-luefsrwi2n8iqy

1. 🐩 हमले की अवधारणा 🐩

SSLv3 और CBC सिफर मोड

SSLv3 आपके डेटा को एन्क्रिप्ट/डिक्रिप्ट और सुरक्षित करने के लिए एक प्रोटोकॉल है। हमारे मामले में, यह CBC सिफर मोड चेनिंग का उपयोग करता है। प्लेनटेक्स्ट को एन्क्रिप्शन एल्गोरिथम (AES, DES, 3DES) के अनुसार ब्लॉकों में विभाजित किया जाता है और लंबाई 8 या 16 की गुणज होती है। यदि प्लेनटेक्स्ट लंबाई को नहीं भरता है, तो लापता स्थान को पूरा करने के लिए अंत में पैडिंग जोड़ी जाती है। मैं दृढ़ता से सलाह देता हूं कि इस रीडमी को पढ़ने के लिए आप एन्क्रिप्शन और डिक्रिप्शन की इन छवियों को खोलें।

एन्क्रिप्शनडिक्रिप्शन
Ci = Ek(Pi ⊕ Ci-1), and C0 = IVPi = Dk(Ci) ⊕ Ci-1, and C0 = IV

मूल रूप से यह कुछ सरल XOR है, आप यह वीडियो भी देख सकते हैं (मैं नहीं) https://www.youtube.com/watch?v=0D7OwYp6ZEc।

HTTPS पर SSLv3 का उपयोग करके भेजा गया अनुरोध AES/DES और CBC मोड के साथ सिफर किया जाएगा। TLS1.x की तुलना में SSLv3 की विशेषता पैडिंग है। SSLv3 में पैडिंग रैंडम बाइट्स से भरी होती है, सिवाय अंतिम बाइट के जो पैडिंग की लंबाई के बराबर होती है।

उदाहरण:

T|E|X|T|0xab|0x10|0x02 जहां 0xab|0x10|0x02 पैडिंग है।
T|E|X|T|E|0x5c|0x01 जहां 0x5c|0x01 पैडिंग है।

इसके अलावा अंतिम ब्लॉक को पैडिंग के पूरे ब्लॉक से भरा जा सकता है, जिसका अर्थ है कि अंतिम ब्लॉक अंतिम बाइट को छोड़कर पूरी तरह से एक रैंडम बाइट हो सकता है।

T|E|X|T|E|0x5c|0x01|0x3c|0x09|0x5d|0x08|0x04|0x07 जहां |0x5c|0x01|0x3c|0x09|0x5d|0x08|0x04|0x07 पैडिंग है; केवल 0x07 ही हमलावर को ज्ञात है। इसलिए यदि कोई हमलावर पैडिंग ब्लॉक को प्रभावित करने में सक्षम है, तो वह जान सकेगा कि अंतिम ब्लॉक का अंतिम बाइट एक ब्लॉक की लंबाई के बराबर है।

पैडिंग को प्रभावित करें

एक हमलावर को पीड़ित से अनुरोध भेजने में सक्षम होना चाहिए (उदाहरण के लिए XSS का शोषण करके जावास्क्रिप्ट का उपयोग करके)। फिर वह प्रत्येक अनुरोध के पथ और डेटा को नियंत्रित कर सकता है:

उदाहरण:

root@kitploit:~
GET / HTTP/1.1\r\nSECRET COOKIE\r\n\r\n
GET /AAA HTTP/1.1\r\nSECRET COOKIE\r\n\r\nDATA

इस तकनीक से वह पैडिंग को प्रभावित कर सकता है।

HMAC

SSLv3 प्लेनटेक्स्ट की अखंडता की जांच करने और उसे प्रमाणित करने के लिए HMAC का भी उपयोग करता है।

कीड-हैश मैसेज ऑथेंटिकेशन कोड (HMAC) एक विशिष्ट प्रकार का मैसेज ऑथेंटिकेशन कोड (MAC) है जिसमें एक गुप्त क्रिप्टोग्राफिक कुंजी के साथ एक क्रिप्टोग्राफिक हैश फ़ंक्शन (इसलिए 'H') शामिल होता है।

इसके साथ, एक हमलावर अनुरोध को इंटरसेप्ट और बदलकर वापस नहीं भेज सकता। यदि सर्वर को कोई समस्या आती है, तो वह एक HMAC त्रुटि भेजेगा।

MAC-then-encrypt

SSLv3 प्रोटोकॉल निम्नलिखित प्रक्रिया का उपयोग करता है: वह क्लाइंट से डेटा प्राप्त करता है, डेटा को डिक्रिप्ट करता है, HMAC के साथ अखंडता की जांच करता है।

MAC-then-Encrypt: सिफरटेक्स्ट पर कोई अखंडता प्रदान नहीं करता, क्योंकि संदेश को डिक्रिप्ट करने तक हम यह नहीं जान सकते कि यह वास्तव में प्रामाणिक था या नकली। प्लेनटेक्स्ट अखंडता। यदि सिफर योजना परिवर्तनशील (मैलिएबल) है, तो संदेश को वैध दिखने और वैध MAC रखने के लिए बदलना संभव हो सकता है। यह निश्चित रूप से एक सैद्धांतिक बिंदु है, क्योंकि व्यावहारिक रूप से MAC सीक्रेट > को सुरक्षा प्रदान करनी चाहिए। यहां, MAC प्लेनटेक्स्ट के बारे में भी कोई जानकारी नहीं दे सकता, क्योंकि यह एन्क्रिप्टेड है।

https://crypto.stackexchange.com/questions/202/should-we-mac-then-encrypt-or-encrypt-then-mac

इसका मतलब है कि हम सर्वर को जाने बिना सिफर किए गए टेक्स्ट को बदल सकते हैं। यह बहुत बढ़िया है, सच में :)

2. 🔑 क्रिप्टोग्राफी 🔑

पहले अंतिम ब्लॉक को पैडिंग से भरा होना चाहिए, जैसा कि हमने पहले देखा, हमलावर अनुरोध के पथ का उपयोग करता है और अनुरोध की लंबाई की जांच करता है।

  • वह मूल सिफर की लंबाई सहेजता है
  • वह पथ में एक बाइट जोड़ता है और लंबाई की जांच करता है।
    • यदि लंबाई नहीं बदलती है, तो वह एक और बाइट जोड़ता है आदि।
    • अन्यथा: सिफर अनुरोध की लंबाई बदल जाती है, वह जानता है कि अंतिम ब्लॉक पैडिंग से भरा हुआ है।

चूंकि अंतिम ब्लॉक अंतिम बाइट को छोड़कर रैंडम बाइट्स से भरा होता है, वह इस अंतिम ब्लॉक Cn को उस ब्लॉक Ci से बदल सकता है जिसे वह डिक्रिप्ट करना चाहता है। परिवर्तित अनुरोध सर्वर को भेजा जाता है।

सर्वर:

  • अंतिम बाइट की लंबाई के अनुसार पैडिंग हटाता है
  • अनुरोध से hmac प्राप्त करता है = HMAC
  • प्लेनटेक्स्ट प्राप्त करता है
  • hmac(प्लेनटेक्स्ट) और HMAC की तुलना करता है
    • यदि समान => सही पैडिंग
    • अन्यथा => गलत पैडिंग

अंतिम ब्लॉक को बदलकर, हमलावर अंतिम ब्लॉक के अंतिम बाइट (पैडिंग की लंबाई) को भी बदल देता है। पैडिंग ब्लॉक में बदला गया अंतिम बाइट मूल के समान होने की 1/256 संभावना होती है, इस स्थिति में कोई पैडिंग त्रुटि नहीं होगी और हमलावर इस XOR ऑपरेशन का उपयोग करके ब्लॉक Ci के अंतिम बाइट को निम्नलिखित ऑपरेशन के माध्यम से पुनर्प्राप्त कर सकता है:

Pn = Dk(Cn) ⊕ Cn-1
Pn = Dk(Ci) ⊕ Cn-1
Pn = Dk(Ci) ⊕ Cn-1
xxxxxxx7 = Dk(Ci) ⊕ Cn-1
Dk(Ci) = xxxxxxx7 ⊕ Cn-1
Pi ⊕ Ci-1 = xxxxxxx7 ⊕ Cn-1
Pi = Ci-1 ⊕ xxxxxxx7 ⊕ Cn-1

(xxxxxxx7 या xxxxxxx15 और x रैंडम बाइट)

ब्लॉक का अंतिम बाइट पुनर्प्राप्त किया जा सकता है: Pi[7] = Ci-1[7] ⊕ xxxxxxx7 ⊕ Cn-1[7] पैडिंग के मामले में हमलावर को एक और हैंडशेक (नई AES कुंजी) करने के लिए SSL सत्र बंद करना होगा और नया सिफर प्राप्त करना होगा, फिर अंतिम ब्लॉक को बदलना होगा आदि। (आमतौर पर +300 हैंडशेक की आवश्यकता होती है)

एक बार एक बाइट पुनर्प्राप्त हो जाने पर, वह पथ में एक बाइट जोड़कर और डेटा में एक बाइट हटाकर ब्लॉक के अन्य सभी बाइट्स प्राप्त करेगा:

बाइट E,I,K,O पुनर्प्राप्त करने का अनुरोध
GET /a SECRET_COOKIE dataazerty PADDING_7
GET /aa SECRET_COOKIE dataazert PADDING_7
GET /aaa SECRET_COOKIE dataazer PADDING_7
GET /aaaa SECRET_COOKIE dataaze PADDING_7

TLS1.0 के बारे में

हालांकि TLS विनिर्देशों के लिए सर्वरों को पैडिंग की जांच करना आवश्यक है, कुछ इम्प्लीमेंटेशन इसे ठीक से मान्य नहीं करते हैं, जिससे कुछ सर्वर SSL 3.0 अक्षम करने पर भी POODLE के प्रति संवेदनशील हो जाते हैं।

TLS सामान्यतः Poodle से सुरक्षित है, लेकिन कुछ इम्प्लीमेंटेशन पैडिंग की जांच नहीं करते हैं, यह ऐसा है जैसे हम SSLv3 का उपयोग कर रहे हों, यही कारण है कि कुछ TLS संस्करण संवेदनशील हैं।

3. 💥 हमला शुरू करें 💥

इस रिपॉजिटरी में तीन फाइलें हैं:

  • poodle-poc.py -> एक प्रूफ ऑफ कॉन्सेप्ट जिसके लिए किसी पूर्वापेक्षा की आवश्यकता नहीं है
  • parallelization-poodle.py -> एक और प्रूफ ऑफ कॉन्सेप्ट लेकिन समानांतरकरण का उपयोग करते हुए (वास्तव में तेज़)
  • poodle-exploit.py -> वास्तविक-परिदृश्य के लिए एक एक्सप्लॉइट
1. poodle-poc.py फ़ाइल

यह पीओसी हमले के पीछे की क्रिप्टोग्राफी का पता लगाता है। यह फ़ाइल हमें सरल तरीके से समझने की अनुमति देती है कि हमला कैसे काम करता है।

root@kitploit:~
python3 poodle-poc.py
2. poodle-poc.py फ़ाइल

parallelization-poodle.py फ़ाइल एक प्रोजेक्ट है, और एक विचार :) देखें https://github.com/mpgn/poodle-PoC/issues/1

root@kitploit:~
python3 parallelization-poodle.py

asciicast

3. poodle-exploit.py फ़ाइल

यह वास्तविक एक्सप्लॉइट है। यदि पेंटेस्ट के दौरान क्लाइंट पुराने सर्वर और ब्राउज़र का उपयोग करता है, तो Poodle Attack के बारे में प्रूफ ऑफ कॉन्सेप्ट बनाने के लिए यह वास्तव में उपयोगी है। बस अपने मैलिशियस प्रॉक्सी का आईपी सही पोर्ट के साथ ब्राउज़र कॉन्फ़िग में डालें, बाकी का ध्यान प्रॉक्सी रखेगा।

आवश्यकता:

  • सुनिश्चित करें कि क्लाइंट और ब्राउज़र केवल SSLv3 प्रोटोकॉल के साथ संचार कर सकते हैं, उदाहरण के लिए फ़ायरफ़ॉक्स में security.tls.version.min: 0 का उपयोग करके केवल SSLv3 को बाध्य करें। वैकल्पिक रूप से, यदि क्लाइंट TLS का भी उपयोग करता है, तो आप डाउनग्रेड को बाध्य कर सकते हैं।
  • सुनिश्चित करें कि सर्वर संवेदनशील है, testssl.sh टूल का उपयोग करें image
  • सुनिश्चित करें कि आप क्लाइंट साइड पर जावास्क्रिप्ट इंजेक्ट कर सकते हैं (XSS)
  • सुनिश्चित करें कि आप क्लाइंट और सर्वर के बीच कनेक्शन इंटरसेप्ट कर सकते हैं

💀 यदि आपके पास ये पूर्वापेक्षाएँ हैं, तो आप हमला शुरू कर सकते हैं 💀:

इस एक्सप्लॉइट के लिए दो विकल्प उपलब्ध हैं:

  1. प्रॉक्सी का आईपी पता और पोर्ट सीधे क्लाइंट साइड पर सेट करें और एक्सप्लॉइट चलाएं (भाग 3 पर जाएं)
  2. क्लाइंट और सर्वर के बीच सभी ट्रैफ़िक को अपनी मशीन पर रीडायरेक्ट करने के लिए ARP स्पूफिंग अटैक सेट करें
  • फॉरवर्डिंग सक्षम करें और क्लाइंट से आपके प्रॉक्सी तक ट्रैफ़िक रीडायरेक्ट करने के लिए Iptable नियम सेट करें
root@kitploit:~
$> echo 1 > /proc/sys/net/ipv4/ip_forward
$> iptables -i vmnet1 -t nat -A PREROUTING -p tcp --dport 1337 -j REDIRECT --to-ports 1337
  • ARP स्पूफिंग अटैक चलाने के लिए arpspoof, ettercap या bettercap टूल का उपयोग करें
root@kitploit:~
$> bettercap -iface vmnet1
net.show
set arp.spoof.internal true
arp.spoof on
  1. प्रॉक्सी चलाएं
root@kitploit:~
⋊> ~/T/poodle-Poc on master ⨯ python3 poodle-exploit.py -h              13:10:24
usage: poodle-exploit.py [-h] [--start-block START_BLOCK]
                         [--stop-block STOP_BLOCK] [--simpleProxy SIMPLEPROXY]
                         proxy port server rport

Poodle Exploit by @mpgn_x64

positional arguments:
  proxy                 ip of the proxy
  port                  port of the proxy
  server                ip of the remote server
  rport                 port of the remote server

optional arguments:
  -h, --help            show this help message and exit
  --start-block START_BLOCK
                        start the attack at this block
  --stop-block STOP_BLOCK
                        stop the attack at this block
  --simpleProxy SIMPLEPROXY
                        Direct proxy, no ARP spoofing attack

$> python3 poodle-exploit.py 192.168.13.1 4443 192.168.13.133 443 --start-block 46 --stop-block 50

ब्लॉक चुनना: यदि आप ब्लॉक विकल्प निर्दिष्ट नहीं करते हैं, तो सभी ब्लॉक डिक्रिप्ट हो जाएंगे, लेकिन इसमें लंबा समय लग सकता है। मैं दृढ़ता से सलाह देता हूं कि आप जानें कि अनुरोध कैसे स्वरूपित किया जाएगा और जिस ब्लॉक को आप डिक्रिप्ट करना चाहते हैं उसे जानने के लिए request-splitter.py स्क्रिप्ट का उपयोग करें (आदर्श रूप से कुकी ब्लॉक! :)

फिर उदाहरण के लिए XSS का उपयोग करके संवेदनशील वेबसाइट में जावास्क्रिप्ट मैलिशियस कोड (poodle.js) डालें। पायथन स्क्रिप्ट लॉन्च करें और help टाइप करें, फिर search, और अंत में active। उस दौरान, जावास्क्रिप्ट के साथ केवल दो इंटरैक्शन की आवश्यकता होगी (search और active कमांड)।

अपडेट 01/04/2018: एक्सप्लॉइट में डाउनग्रेड विकल्प जोड़ा गया है। जब एक्सप्लॉइट TLS प्रोटोकॉल का पता लगाता है, तो SSLv3.0 पर डाउनग्रेड करने के लिए downgrade कमांड दर्ज करें।

यह कैसे काम करता है? हैंडशेक के दौरान (hello client के बाद), एक्सप्लॉइट एक handshake_failure 15030000020228 भेजता है, फिर ब्राउज़र को डिफ़ॉल्ट प्रोटोकॉल के रूप में SSLv3.0 के साथ hello client को फिर से भेजना चाहिए। Chrome संस्करण 15 पर परीक्षण किया गया, लेकिन यह Firefox पर काम नहीं कर रहा है (मुझे लगता है कि यह प्रोटोकॉल पुनर्वार्ता का समर्थन नहीं करता है), देखें #4

शोषण का पूरा वीडियो:

ezgif-3-90a926f34356

Asciinema:

asciicast

योगदानकर्ता

mpgn

लाइसेंस

licence MIT

संदर्भ

  • https://en.wikipedia.org/wiki/POODLE
  • https://www.openssl.org/~bodo/ssl-poodle.pdf
टूल डाउनलोड करें