Gitea Security
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Gitea एक स्व-होस्टेड समुदाय द्वारा प्रबंधित हल्का कोड होस्टिंग समाधान है जो Go में लिखा गया है।
Gitea उदाहरण को स्थानीय रूप से चलाने के लिए आप बस एक डॉकर कंटेनर चला सकते हैं:
पोर्ट 3000 से कनेक्ट करें ताकि वेब पेज तक पहुंच सकें।
आप इसे कुबेरनेट्स के साथ भी चला सकते हैं:
सार्वजनिक रिपॉजिटरी: http://localhost:3000/explore/repos
पंजीकृत उपयोगकर्ता: http://localhost:3000/explore/users
पंजीकृत संगठन: http://localhost:3000/explore/organizations
ध्यान दें कि डिफ़ॉल्ट रूप से Gitea नए उपयोगकर्ताओं को पंजीकरण करने की अनुमति देता है। यह नए उपयोगकर्ताओं को अन्य संगठनों/उपयोगकर्ताओं के रिपॉजिटरी पर विशेष रूप से दिलचस्प पहुंच नहीं देगा, लेकिन एक लॉग इन उपयोगकर्ता अधिक रिपॉजिटरी या संगठनों को देखने में सक्षम हो सकता है।
इस परिदृश्य के लिए हम मान लेंगे कि आपने एक github खाते तक कुछ पहुंच प्राप्त की है।
यदि आपके पास किसी संगठन के भीतर एक उपयोगकर्ता के लिए क्रेडेंशियल्स हैं (या आपने एक सत्र कुकी चुराई है) तो आप बस लॉगिन कर सकते हैं और देख सकते हैं कि आपके पास कौन सी अनुमतियाँ हैं, कौन से रिपॉजिटरी में, कौन से टीमों में आप हैं, अन्य उपयोगकर्ताओं की सूची, और रिपॉजिटरी कैसे सुरक्षित हैं।
ध्यान दें कि 2FA का उपयोग किया जा सकता है इसलिए आप केवल इस जानकारी तक पहुंच प्राप्त कर पाएंगे यदि आप उस चेक को भी पास कर सकते हैं।
ध्यान दें कि यदि आप i_like_gitea
कुकी चुराने में सफल होते हैं (वर्तमान में SameSite: Lax के साथ कॉन्फ़िगर किया गया) तो आप बिना क्रेडेंशियल्स या 2FA की आवश्यकता के उपयोगकर्ता का पूरी तरह से अनुकरण कर सकते हैं।
Gitea उपयोगकर्ताओं को SSH कुंजी सेट करने की अनुमति देता है जो उनके पक्ष में कोड तैनात करने के लिए प्रमाणन विधि के रूप में उपयोग की जाएगी (कोई 2FA लागू नहीं होता)।
इस कुंजी के साथ आप उन रिपॉजिटरी में परिवर्तन कर सकते हैं जहां उपयोगकर्ता के पास कुछ विशेषाधिकार हैं, हालाँकि आप इसका उपयोग gitea api तक पहुँचने के लिए नहीं कर सकते हैं ताकि वातावरण की गणना की जा सके। हालाँकि, आप स्थानीय सेटिंग्स की गणना कर सकते हैं ताकि उन रिपॉजिटरी और उपयोगकर्ता के बारे में जानकारी प्राप्त की जा सके जिन तक आपकी पहुँच है:
यदि उपयोगकर्ता ने अपना उपयोगकर्ता नाम अपने gitea उपयोगकर्ता नाम के रूप में कॉन्फ़िगर किया है, तो आप उसके खाते में सेट किए गए सार्वजनिक कुंजियों को https://github.com/<gitea_username>.keys पर एक्सेस कर सकते हैं, आप यह जांच सकते हैं कि क्या आपने जो निजी कुंजी पाई है, उसका उपयोग किया जा सकता है।
SSH कुंजियाँ को डिप्लॉय कुंजियों के रूप में रिपॉजिटरी में भी सेट किया जा सकता है। इस कुंजी तक पहुँच रखने वाला कोई भी व्यक्ति एक रिपॉजिटरी से प्रोजेक्ट लॉन्च कर सकेगा। आमतौर पर, विभिन्न डिप्लॉय कुंजियों के साथ एक सर्वर में स्थानीय फ़ाइल ~/.ssh/config
आपको कुंजी से संबंधित जानकारी देगी।
जैसा कि यहाँ समझाया गया है, कभी-कभी कमिट्स पर हस्ताक्षर करना आवश्यक होता है या आप खोजे जा सकते हैं।
स्थानीय रूप से जांचें कि क्या वर्तमान उपयोगकर्ता के पास कोई कुंजी है:
यूजर टोकन के बारे में बुनियादी जानकारी के लिए यहाँ देखें।
एक यूजर टोकन को पासवर्ड के बजाय Gitea सर्वर के खिलाफ प्रमाणित करने के लिए उपयोग किया जा सकता है API के माध्यम से। इसके पास यूजर पर पूर्ण पहुंच होगी।
Gitea Oauth एप्लिकेशन के बारे में बुनियादी जानकारी के लिए यहाँ देखें।
एक हमलावर एक दुष्ट Oauth एप्लिकेशन बना सकता है ताकि उन यूजर्स के विशेष डेटा/क्रियाओं तक पहुंच प्राप्त कर सके जो संभवतः उन्हें एक फ़िशिंग अभियान के हिस्से के रूप में स्वीकार करते हैं।
बुनियादी जानकारी में समझाया गया है कि एप्लिकेशन के पास यूजर खाते पर पूर्ण पहुंच होगी।
Github में हमारे पास github actions हैं जो डिफ़ॉल्ट रूप से रिपॉ पर लिखने की पहुंच के साथ एक टोकन प्राप्त करते हैं जिसका उपयोग ब्रांच सुरक्षा को बायपास करने के लिए किया जा सकता है। इस मामले में यह मौजूद नहीं है, इसलिए बायपास अधिक सीमित हैं। लेकिन चलिए देखते हैं कि क्या किया जा सकता है:
पुश सक्षम करें: यदि कोई भी लिखने की पहुंच के साथ ब्रांच पर पुश कर सकता है, तो बस इसे पुश करें।
प्रतिबंधित पुश के लिए व्हाइटलिस्ट: इसी तरह, यदि आप इस सूची का हिस्सा हैं तो ब्रांच पर पुश करें।
मर्ज व्हाइटलिस्ट सक्षम करें: यदि एक मर्ज व्हाइटलिस्ट है, तो आपको इसके अंदर होना चाहिए।
अनुमोदनों की आवश्यकता 0 से अधिक है: फिर... आपको एक अन्य उपयोगकर्ता से समझौता करना होगा।
व्हाइटलिस्टेड के लिए अनुमोदनों को प्रतिबंधित करें: यदि केवल व्हाइटलिस्टेड उपयोगकर्ता अनुमोदित कर सकते हैं... तो आपको उस सूची में एक अन्य उपयोगकर्ता से समझौता करना होगा।
पुराने अनुमोदनों को खारिज करें: यदि नए कमिट के साथ अनुमोदन हटा नहीं दिए जाते हैं, तो आप पहले से अनुमोदित PR को हाईजैक कर सकते हैं ताकि अपने कोड को इंजेक्ट कर सकें और PR को मर्ज कर सकें।
ध्यान दें कि यदि आप एक संगठन/रिपॉ एडमिन हैं तो आप सुरक्षा को बायपास कर सकते हैं।
वेबहुक्स कुछ स्थानों पर विशिष्ट गीटिया जानकारी भेजने में सक्षम हैं। आप उस संचार का शोषण करने में सक्षम हो सकते हैं। हालांकि, आमतौर पर एक गुप्त सेट किया जाता है जिसे आप प्राप्त नहीं कर सकते हैं वेबहुक में जो बाहरी उपयोगकर्ताओं को रोकता है जो वेबहुक के URL को जानते हैं लेकिन गुप्त नहीं जानते हैं कि उस वेबहुक का शोषण कर सकें। लेकिन कुछ अवसरों पर, लोग गुप्त को उसके स्थान पर सेट करने के बजाय, इसे URL में एक पैरामीटर के रूप में सेट करते हैं, इसलिए URLs की जांच करना आपको गुप्त जानकारियाँ और अन्य स्थान मिल सकते हैं जहाँ आप आगे शोषण कर सकते हैं।
वेबहुक्स को रिपॉ और संगठन स्तर पर सेट किया जा सकता है।
यदि किसी तरह आप उस सर्वर के अंदर पहुँच गए जहाँ गीटिया चल रहा है, तो आपको गीटिया कॉन्फ़िगरेशन फ़ाइल के लिए खोज करनी चाहिए। डिफ़ॉल्ट रूप से यह /data/gitea/conf/app.ini
में स्थित है।
इस फ़ाइल में आप कीज़ और पासवर्ड पा सकते हैं।
गीटिया पथ (डिफ़ॉल्ट: /data/gitea) में आप भी दिलचस्प जानकारी पा सकते हैं जैसे:
sqlite DB: यदि गीटिया एक बाहरी DB का उपयोग नहीं कर रहा है, तो यह एक sqlite DB का उपयोग करेगा।
सत्र सत्र फ़ोल्डर के अंदर: cat sessions/*/*/*
चलाकर आप लॉग इन किए गए उपयोगकर्ताओं के उपयोगकर्ता नाम देख सकते हैं (गीटिया सत्रों को DB के अंदर भी सहेज सकता है)।
jwt प्राइवेट की jwt फ़ोल्डर के अंदर।
इस फ़ोल्डर में अधिक संवेदनशील जानकारी मिल सकती है।
यदि आप सर्वर के अंदर हैं, तो आप जानकारी तक पहुँचने/संशोधित करने के लिए gitea
बाइनरी का उपयोग कर सकते हैं:
gitea dump
गीटिया को डंप करेगा और एक .zip फ़ाइल बनाएगा।
gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET
निर्दिष्ट प्रकार का एक टोकन उत्पन्न करेगा (स्थायीता)।
gitea admin user change-password --username admin --password newpassword
पासवर्ड बदलें।
gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token
नया एडमिन उपयोगकर्ता बनाएँ और एक एक्सेस टोकन प्राप्त करें।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)