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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve-2020-14343-lab — PyYAML में CVE-2020-14343 के लिए नियंत्रित भेद्यता अनुसंधान और पुनरुत्पादन प्रयोगशाला | Kitploit
उपकरण/GitHubGitHub/saina15/cve-2020-14343-lab
भेद्यता स्कैनरकंटेनर सुरक्षागतिशील विश्लेषण (सैंडबॉक्सिंग)भेद्यता विश्लेषणशोषणसुरक्षा वर्चुअलाइजेशनपेनिट्रेशन टेस्टिंगपेपर और शोधलर्निंग और शिक्षालैब और अभ्यास
GitHubsaina15/cve-2020-14343-lab
1 दिन पहलेअभी तक समीक्षित नहीं

cve-2020-14343-lab

PyYAML में CVE-2020-14343 के लिए नियंत्रित भेद्यता अनुसंधान और पुनरुत्पादन प्रयोगशाला

रिपॉजिटरी देखें

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

सभी देखें →

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

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

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

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

CVE-2020-14343 – PyYAML असुरक्षित YAML लोडिंग लैब

1. परियोजना अवलोकन

यह परियोजना एक नियंत्रित और पृथक Docker वातावरण में CVE-2020-14343 को प्रदर्शित करती है।

लैब में दो वातावरण हैं:

  • PyYAML 5.3.1 का उपयोग करने वाला एक भेद्य (vulnerable) वातावरण
  • PyYAML 5.4 और yaml.safe_load() का उपयोग करने वाला एक पैच किया गया वातावरण

लैब पूर्ण भेद्यता जीवनचक्र को प्रदर्शित करती है:

  1. भेद्य एप्लिकेशन को तैनात करें।
  2. भेद्य PyYAML संस्करण की पहचान करें।
  3. एक नियंत्रित YAML पेलोड का उपयोग करके भेद्यता को पुन: उत्पन्न करें।
  4. एक स्वचालित स्क्रिप्ट का उपयोग करके भेद्य संस्करण का पता लगाएं।
  5. निश्चित संस्करण में अपग्रेड करें।
  6. पैच किए गए एप्लिकेशन के विरुद्ध उसी पेलोड का परीक्षण करें।
  7. सत्यापित करें कि दुर्भावनापूर्ण YAML अस्वीकार कर दिया गया है।

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

2. CVE जानकारी

PropertyDetails
CVECVE-2020-14343
ProductPyYAML
Affected versionsVersions before 5.4
Fixed version5.4
Vulnerability typeImproper Input Validation (CWE-20)
SeverityCritical
Attack surfaceYAML input processed using vulnerable loading functionality

मूल कारण

यह भेद्यता तब होती है जब अविश्वसनीय YAML इनपुट को भेद्य PyYAML लोडिंग कार्यक्षमता का उपयोग करके संसाधित किया जाता है।

PyYAML 5.4 से पहले के संस्करणों ने विशेष रूप से तैयार किए गए YAML टैग्स को अनुमति दी, जिनमें Python-विशिष्ट टैग्स जैसे:

root@kitploit:~
!!python/object/new

शामिल थे, जो FullLoader का उपयोग किए जाने पर ऑब्जेक्ट निर्माण कार्यक्षमता तक पहुंच सकते थे।

इसलिए एक दुर्भावनापूर्ण YAML दस्तावेज़ अनपेक्षित Python कोड निष्पादन का कारण बन सकता है।

यह समस्या पहले की PyYAML भेद्यता के अपूर्ण समाधान से संबंधित थी।

PyYAML 5.4 ने मनमाने Python टैग्स को UnsafeLoader में स्थानांतरित करके CVE-2020-14343 को ठीक किया।

अविश्वसनीय YAML को संसाधित करने वाले एप्लिकेशन के लिए, यह लैब एक सुरक्षित लोडिंग दृष्टिकोण के रूप में yaml.safe_load() का भी उपयोग करती है।

3. लैब आर्किटेक्चर

लैब में दो पृथक Docker सेवाएं हैं:

root@kitploit:~
                         Host Machine
                              |
                 +------------+------------+
                 |                         |
                 v                         v
          Vulnerable App             Patched App
          localhost:5000             localhost:5001
                 |                         |
            PyYAML 5.3.1             PyYAML 5.4
            FullLoader               SafeLoader
                 |                         |
                 v                         v
          Payload executes          Payload rejected

सेवाएं

ServiceHost PortContainer PortPyYAMLPurpose
vulnerable500050005.3.1Vulnerable environment
patched500150005.4Remediated environment

4. रिपॉजिटरी संरचना

root@kitploit:~
cve-2020-14343-lab/
│
├── vulnerable/
│   ├── app.py
│   ├── Dockerfile
│   └── requirements.txt
│
├── patched/
│   ├── app.py
│   ├── Dockerfile
│   └── requirements.txt
│
├── exploit/
│   └── reproduce.py
│
├── detection/
│   └── detect.py
│
├── docker-compose.yml
└── README.md

निर्देशिका विवरण

File/DirectoryPurpose
vulnerable/app.pyFlask application using vulnerable YAML loading
vulnerable/DockerfileBuilds the vulnerable Docker image
vulnerable/requirements.txtPins PyYAML to 5.3.1
patched/app.pyFlask application using secure YAML loading
patched/DockerfileBuilds the patched Docker image
patched/requirements.txtPins PyYAML to 5.4
exploit/reproduce.pyReproduces the vulnerability using a controlled payload
detection/detect.pyChecks the PyYAML version inside a Docker container
docker-compose.ymlBuilds and runs both environments

5. पूर्वापेक्षाएँ

निम्नलिखित सॉफ़्टवेयर आवश्यक है:

  • Docker Desktop
  • Docker Compose
  • Python 3.x
  • Git

लैब शुरू करने से पहले Docker Desktop चल रहा होना चाहिए।

भेद्य एप्लिकेशन जानबूझकर केवल Docker पोर्ट मैपिंग के माध्यम से स्थानीय मशीन पर उजागर किया गया है।

6. लैब सेटअप

चरण 1: लैब शुरू करें

प्रोजेक्ट रूट निर्देशिका से, चलाएँ:

root@kitploit:~
docker compose up --build -d

चरण 2: कंटेनर सत्यापित करें

चलाएँ:

root@kitploit:~
docker compose ps

दोनों सेवाओं को Up दिखाना चाहिए।

चरण 3: भेद्य एप्लिकेशन सत्यापित करें

खोलें:

root@kitploit:~
http://127.0.0.1:5000

अपेक्षित प्रतिक्रिया:

root@kitploit:~
{
  "message": "CVE-2020-14343 vulnerable YAML parser"
}

चरण 4: पैच किए गए एप्लिकेशन को सत्यापित करें

खोलें:

root@kitploit:~
http://127.0.0.1:5001

अपेक्षित प्रतिक्रिया:

root@kitploit:~
{
  "message": "CVE-2020-14343 patched YAML parser"
}

7. लैब को शुरू करना, रोकना और पुनर्निर्माण करना

शुरू करें

root@kitploit:~
docker compose up -d

रोकें

root@kitploit:~
docker compose down

बनाएँ और शुरू करें

root@kitploit:~
docker compose up --build -d

चल रही सेवाओं की जाँच करें

root@kitploit:~
docker compose ps

भेद्य एप्लिकेशन लॉग देखें

root@kitploit:~
docker logs cve-vulnerable

पैच किए गए एप्लिकेशन लॉग देखें

root@kitploit:~
docker logs cve-patched

8. भेद्यता पुनरुत्पादन

भेद्य एप्लिकेशन एक /parse एंडपॉइंट को उजागर करता है जो YAML इनपुट स्वीकार करता है।

भेद्य वातावरण उपयोग करता है:

  • PyYAML 5.3.1
  • yaml.FullLoader

पुनरुत्पादन स्क्रिप्ट यहाँ स्थित है:

root@kitploit:~
exploit/reproduce.py

एक्सप्लॉइट चलाएँ

भेद्य एप्लिकेशन यहाँ उपलब्ध है:

root@kitploit:~
http://127.0.0.1:5000/parse

चलाएँ:

root@kitploit:~
python exploit/reproduce.py

स्क्रिप्ट एक नियंत्रित YAML पेलोड भेजती है जिसमें एक Python-विशिष्ट YAML टैग होता है।

अपेक्षित परिणाम

भेद्य वातावरण में, पेलोड स्वीकार किया जाता है और एप्लिकेशन HTTP 200 प्रतिक्रिया लौटाता है।

नियंत्रित परीक्षण मार्कर:

root@kitploit:~
CVE-2020-14343-TEST

भेद्य एप्लिकेशन कंटेनर के अंदर निष्पादित होता है।

निष्पादन को इसका उपयोग करके सत्यापित किया जा सकता है:

root@kitploit:~
docker logs cve-vulnerable

अपेक्षित लॉग आउटपुट में शामिल है:

root@kitploit:~
CVE-2020-14343-TEST

यह भेद्य YAML लोडिंग व्यवहार के माध्यम से कोड निष्पादन को प्रदर्शित करता है।

सुरक्षा

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

9. भेद्यता का पता लगाना

पता लगाने की स्क्रिप्ट यहाँ स्थित है:

root@kitploit:~
detection/detect.py

स्क्रिप्ट निर्दिष्ट Docker कंटेनर के अंदर स्थापित PyYAML संस्करण की जाँच करती है।

निश्चित संस्करण है:

root@kitploit:~
5.4

भेद्य वातावरण का पता लगाएं

चलाएँ:

root@kitploit:~
python detection/detect.py cve-vulnerable

अपेक्षित परिणाम:

root@kitploit:~
PyYAML installed version: 5.3.1
Fixed version: 5.4
STATUS: VULNERABLE
Reason: PyYAML version is older than 5.4.

पैच किए गए वातावरण का पता लगाएं

चलाएँ:

root@kitploit:~
python detection/detect.py cve-patched

अपेक्षित परिणाम:

root@kitploit:~
PyYAML installed version: 5.4
Fixed version: 5.4
STATUS: PATCHED
Reason: PyYAML version is 5.4 or newer.

पता लगाने का तर्क

root@kitploit:~
Docker Container
       |
       v
   docker exec
       |
       v
  Import PyYAML
       |
       v
Read yaml.__version__
       |
       v
 Compare with 5.4
       |
       +----------------------+
       |                      |
     < 5.4                  >= 5.4
       |                      |
       v                      v
  VULNERABLE                PATCHED

स्क्रिप्ट लक्ष्य कंटेनर से स्थापित PyYAML संस्करण को क्वेरी करती है।

10. उपचार

भेद्य वातावरण उपयोग करता है:

root@kitploit:~
PyYAML==5.3.1

पैच किया गया वातावरण उपयोग करता है:

root@kitploit:~
PyYAML==5.4

पैच किया गया एप्लिकेशन इसके बजाय:

root@kitploit:~
yaml.safe_load(yaml_input)

का उपयोग करता है:

root@kitploit:~
yaml.load(yaml_input, Loader=yaml.FullLoader)

उपचार के चरण

  1. PyYAML को संस्करण 5.4 या बाद के संस्करण में अपग्रेड करें।
  2. अविश्वसनीय इनपुट को संसाधित करते समय असुरक्षित YAML लोडिंग व्यवहार से बचें।
  3. जब एप्लिकेशन को केवल मानक YAML डेटा प्रकारों की आवश्यकता हो तो yaml.safe_load() का उपयोग करें।
  4. Docker इमेज का पुनर्निर्माण करें।
  5. पैच किए गए एप्लिकेशन को पुनः आरंभ करें।
  6. पता लगाने की स्क्रिप्ट को फिर से चलाएँ।
  7. पैच किए गए एप्लिकेशन के विरुद्ध पुनरुत्पादन पेलोड को फिर से चलाएँ।

11. उपचार के बाद सत्यापन

वही एक्सप्लॉइट पेलोड पैच किए गए एप्लिकेशन के विरुद्ध परीक्षण किया जाता है।

पैच किया गया एप्लिकेशन यहाँ चलता है:

root@kitploit:~
http://127.0.0.1:5001/parse

चलाएँ:

root@kitploit:~
python exploit/reproduce.py http://127.0.0.1:5001/parse

इस लैब में देखा गया परिणाम:

root@kitploit:~
HTTP Status: 400
Server Response:
{"message":"could not determine a constructor for the tag 'tag:yaml.org,2002:python/object/new:tuple' ...","status":"error"}

Python-विशिष्ट YAML टैग पैच किए गए एप्लिकेशन द्वारा अस्वीकार कर दिया जाता है।

नियंत्रित परीक्षण मार्कर पैच किए गए एप्लिकेशन में निष्पादित नहीं होता है।

पहले बनाम बाद में

TestVulnerable EnvironmentPatched Environment
PyYAML version5.3.15.4
DetectionVULNERABLEPATCHED
Exploit requestHTTP 200HTTP 400
Python-specific YAML tagAcceptedRejected
Test marker executionObserved in container logsNot executed

12. समस्या निवारण

Docker डेमन चल नहीं रहा है

सुनिश्चित करें कि Docker Desktop चल रहा है और सत्यापित करें:

root@kitploit:~
docker version

कंटेनर नाम संघर्ष

जाँचें:

root@kitploit:~
docker ps -a

यदि आवश्यक हो तो पुराने कंटेनर हटाएँ:

root@kitploit:~
docker rm cve-vulnerable cve-patched

फिर:

root@kitploit:~
docker compose up --build -d

कंटेनर स्थिति जाँचें

root@kitploit:~
docker compose ps

एप्लिकेशन लॉग जाँचें

root@kitploit:~
docker logs cve-vulnerable
docker logs cve-patched

निर्भरताएँ बदलने के बाद पुनर्निर्माण करें

root@kitploit:~
docker compose up --build -d

स्वच्छ पुनर्निर्माण के लिए:

root@kitploit:~
docker compose build --no-cache
docker compose up -d

13. सीमाएँ

यह परियोजना एक नियंत्रित प्रूफ-ऑफ-कॉन्सेप्ट लैब है और उत्पादन तैनाती का प्रतिनिधित्व नहीं करती है।

सीमाओं में शामिल हैं:

  • भेद्य एप्लिकेशन जानबूझकर सरल बनाया गया है।
  • लैब एक हानिरहित प्रूफ-ऑफ-कॉन्सेप्ट पेलोड का उपयोग करती है।
  • कोई वास्तविक क्रेडेंशियल्स या संवेदनशील डेटा का उपयोग नहीं किया जाता है।
  • एप्लिकेशन स्थानीय परीक्षण के लिए डिज़ाइन किया गया है।
  • पता लगाने की प्रणाली स्थापित PyYAML संस्करण पर केंद्रित है।
  • केवल संस्करण-आधारित पता लगाना यह साबित नहीं करता कि कोई वास्तविक एप्लिकेशन शोषण योग्य है; एप्लिकेशन व्यवहार और YAML लोडिंग कॉन्फ़िगरेशन पर भी विचार किया जाना चाहिए।
  • लैब बाहरी या अनधिकृत सिस्टम के विरुद्ध शोषण का प्रयास नहीं करती है।

14. साक्ष्य

परियोजना सबमिशन के लिए निम्नलिखित साक्ष्य एकत्र किए जाने चाहिए:

  1. Docker Compose दोनों कंटेनर चलते हुए दिखा रहा है।
  2. भेद्य एप्लिकेशन पोर्ट 5000 पर प्रतिक्रिया दे रहा है।
  3. पैच किया गया एप्लिकेशन पोर्ट 5001 पर प्रतिक्रिया दे रहा है।
  4. भेद्य संस्करण का पता लगाना PyYAML 5.3.1 और STATUS: VULNERABLE दिखा रहा है।
  5. भेद्य एक्सप्लॉइट निष्पादन और Docker लॉग में CVE-2020-14343-TEST मार्कर।
  6. पैच किए गए संस्करण का पता लगाना PyYAML 5.4 और STATUS: PATCHED दिखा रहा है।
  7. पैच किए गए एप्लिकेशन के विरुद्ध वही एक्सप्लॉइट HTTP 400 लौटा रहा है।
  8. पैच किए गए एप्लिकेशन की त्रुटि Python-विशिष्ट YAML टैग की अस्वीकृति दिखा रही है।

स्क्रीनशॉट यहाँ संग्रहीत किए जा सकते हैं:

root@kitploit:~
screenshots/

15. संदर्भ

  • GitHub Advisory Database – CVE-2020-14343 / GHSA-8q59-q68h-6hv4
  • PyYAML CHANGES – PyYAML 5.4 रिलीज़ नोट्स
  • PyYAML Wiki – YAML लोडिंग और SafeLoader मार्गदर्शन
  • PyYAML Issue #420 – FullLoader और कोड निष्पादन चर्चा
  • National Vulnerability Database – PyYAML से संबंधित CVE रिकॉर्ड

इस रिपॉजिटरी में सभी पुनरुत्पादन कोड और दस्तावेज़ विशेष रूप से इस लैब के लिए विकसित किए गए थे।

16. निष्कर्ष

यह लैब CVE-2020-14343 को पहचान से उपचार तक प्रदर्शित करती है।

भेद्य वातावरण PyYAML 5.3.1 का उपयोग करता है और एक तैयार किए गए YAML पेलोड के माध्यम से नियंत्रित कोड निष्पादन प्रदर्शित करता है।

पता लगाने की स्क्रिप्ट भेद्य निर्भरता संस्करण की पहचान करती है।

उपचारित वातावरण PyYAML को 5.4 में अपग्रेड करता है और अविश्वसनीय YAML को संसाधित करने के लिए yaml.safe_load() का उपयोग करता है।

वही पुनरुत्पादन पेलोड फिर पैच किए गए एप्लिकेशन द्वारा अस्वीकार कर दिया जाता है, जो उपचार का पहले-और-बाद का साक्ष्य प्रदान करता है।

संपूर्ण वातावरण Docker Compose का उपयोग करके पुन: उत्पन्न किया जा सकता है।

टूल डाउनलोड करें