diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ef5322f3e..d902fdb93 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -435,6 +435,7 @@ - [PrestaShop](network-services-pentesting/pentesting-web/prestashop.md) - [Python](network-services-pentesting/pentesting-web/python.md) - [Rocket Chat](network-services-pentesting/pentesting-web/rocket-chat.md) + - [Ruby Tricks](network-services-pentesting/pentesting-web/ruby-tricks.md) - [Special HTTP headers$$external:network-services-pentesting/pentesting-web/special-http-headers.md$$]() - [Source code Review / SAST Tools](network-services-pentesting/pentesting-web/code-review-tools.md) - [Spring Actuators](network-services-pentesting/pentesting-web/spring-actuators.md) diff --git a/src/network-services-pentesting/pentesting-web/ruby-tricks.md b/src/network-services-pentesting/pentesting-web/ruby-tricks.md new file mode 100644 index 000000000..7e9bdc841 --- /dev/null +++ b/src/network-services-pentesting/pentesting-web/ruby-tricks.md @@ -0,0 +1,9 @@ +# Ruby Tricks + +{{#include ../../banners/hacktricks-training.md}} + +## फ़ाइल अपलोड करना RCE के लिए + +जैसा कि [इस लेख](https://www.offsec.com/blog/cve-2024-46986/) में बताया गया है, संवेदनशील निर्देशिकाओं जैसे `config/initializers/` में `.rb` फ़ाइल अपलोड करने से Ruby on Rails अनुप्रयोगों में रिमोट कोड निष्पादन (RCE) हो सकता है। + +{{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/clickjacking.md b/src/pentesting-web/clickjacking.md index 929b33055..8cf319001 100644 --- a/src/pentesting-web/clickjacking.md +++ b/src/pentesting-web/clickjacking.md @@ -4,7 +4,7 @@ ## What is Clickjacking -एक clickjacking हमले में, एक **उपयोगकर्ता** को एक **तत्व** पर **क्लिक** करने के लिए **धोखा** दिया जाता है जो या तो **अदृश्य** होता है या किसी अन्य तत्व के रूप में छिपा होता है। यह हेरफेर उपयोगकर्ता के लिए अनपेक्षित परिणामों का कारण बन सकता है, जैसे कि मैलवेयर का डाउनलोड होना, दुर्भावनापूर्ण वेब पृष्ठों पर पुनर्निर्देशन, क्रेडेंशियल्स या संवेदनशील जानकारी का प्रदान करना, पैसे का हस्तांतरण, या ऑनलाइन उत्पादों की खरीदारी करना। +एक clickjacking हमले में, एक **उपयोगकर्ता** को एक **तत्व** पर **क्लिक** करने के लिए **धोखा** दिया जाता है जो या तो **अदृश्य** होता है या किसी अन्य तत्व के रूप में छिपा होता है। यह हेरफेर उपयोगकर्ता के लिए अनपेक्षित परिणामों का कारण बन सकता है, जैसे कि मैलवेयर का डाउनलोड होना, दुर्भावनापूर्ण वेब पृष्ठों पर पुनर्निर्देशन, क्रेडेंशियल्स या संवेदनशील जानकारी का प्रदान करना, पैसे का हस्तांतरण, या उत्पादों की ऑनलाइन खरीदारी। ### Prepopulate forms trick @@ -91,8 +91,8 @@ background: #F00; यदि आपने एक **XSS हमले की पहचान की है जो उपयोगकर्ता को** किसी तत्व पर **क्लिक करने की आवश्यकता है** ताकि **XSS को ट्रिगर** किया जा सके और पृष्ठ **क्लिकजैकिंग के लिए संवेदनशील** है, तो आप इसका दुरुपयोग कर सकते हैं ताकि उपयोगकर्ता को बटन/लिंक पर क्लिक करने के लिए धोखा दिया जा सके।\ उदाहरण:\ -आपने खाते के कुछ निजी विवरणों में एक **स्वयं XSS** पाया (विवरण जो **केवल आप सेट और पढ़ सकते हैं**)। इन विवरणों को सेट करने के लिए **फॉर्म** वाला पृष्ठ **क्लिकजैकिंग** के लिए **संवेदनशील** है और आप **GET पैरामीटर** के साथ **फॉर्म** को **पूर्व-जनित** कर सकते हैं।\ -एक हमलावर उस पृष्ठ के लिए एक **क्लिकजैकिंग** हमले की तैयारी कर सकता है **फॉर्म** को **XSS पेलोड** के साथ **पूर्व-जनित** करके और **उपयोगकर्ता** को **फॉर्म सबमिट** करने के लिए **धोखा** देकर। तो, **जब फॉर्म सबमिट किया जाता है** और मानों को संशोधित किया जाता है, तो **उपयोगकर्ता XSS को निष्पादित करेगा**। +आपने खाते के कुछ निजी विवरणों में एक **स्वयं XSS** पाया (विवरण जो **केवल आप सेट और पढ़ सकते हैं**)। इन विवरणों को सेट करने के लिए **फॉर्म** वाला पृष्ठ **क्लिकजैकिंग के लिए संवेदनशील** है और आप **GET पैरामीटर** के साथ **फॉर्म** को **पूर्व-जनित** कर सकते हैं।\ +एक हमलावर उस पृष्ठ के लिए एक **क्लिकजैकिंग** हमले की तैयारी कर सकता है **फॉर्म** को **XSS पेलोड** के साथ **पूर्व-जनित** करके और **उपयोगकर्ता** को फॉर्म को **सबमिट** करने के लिए **धोखा** देकर। तो, **जब फॉर्म सबमिट किया जाता है** और मानों को संशोधित किया जाता है, तो **उपयोगकर्ता XSS को निष्पादित करेगा**। ### DoubleClickjacking @@ -126,13 +126,13 @@ id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"> ``` -`allow-forms` और `allow-scripts` मान iframe के भीतर क्रियाओं को सक्षम करते हैं जबकि शीर्ष-स्तरीय नेविगेशन को निष्क्रिय करते हैं। लक्षित साइट की इच्छित कार्यक्षमता सुनिश्चित करने के लिए, हमलों के प्रकार के आधार पर `allow-same-origin` और `allow-modals` जैसे अतिरिक्त अनुमतियों की आवश्यकता हो सकती है। ब्राउज़र कंसोल संदेश यह मार्गदर्शन कर सकते हैं कि कौन सी अनुमतियाँ दी जानी चाहिए। +`allow-forms` और `allow-scripts` मान iframe के भीतर क्रियाओं को सक्षम करते हैं जबकि शीर्ष स्तर की नेविगेशन को निष्क्रिय करते हैं। लक्षित साइट की इच्छित कार्यक्षमता सुनिश्चित करने के लिए, हमलों के प्रकार के आधार पर `allow-same-origin` और `allow-modals` जैसे अतिरिक्त अनुमतियों की आवश्यकता हो सकती है। ब्राउज़र कंसोल संदेश यह मार्गदर्शन कर सकते हैं कि कौन सी अनुमतियाँ दी जानी चाहिए। ### सर्वर-साइड रक्षा #### X-Frame-Options -**`X-Frame-Options` HTTP प्रतिक्रिया हेडर** ब्राउज़रों को `` या ` ``` +### Credentialless iframes + +जैसा कि [इस लेख](https://blog.slonser.info/posts/make-self-xss-great-again/) में बताया गया है, एक iframe में `credentialless` फ्लैग का उपयोग एक iframe के अंदर एक पृष्ठ को बिना क्रेडेंशियल भेजे लोड करने के लिए किया जाता है, जबकि iframe में लोड किए गए पृष्ठ की समान मूल नीति (SOP) को बनाए रखा जाता है। + +यह iframe को समान SOP में लोड किए गए दूसरे iframe से संवेदनशील जानकारी तक पहुँचने की अनुमति देता है: +```javascript +window.top[1].document.body.innerHTML = 'Hi from credentialless'; +alert(window.top[1].document.cookie); +``` +- Exploit example: Self-XSS + CSRF + +इस हमले में, हमलावर एक दुर्भावनापूर्ण वेबपृष्ठ तैयार करता है जिसमें 2 iframes होते हैं: + +- एक iframe जो पीड़ित के पृष्ठ को `credentialless` ध्वज के साथ लोड करता है जिसमें एक CSRF होता है जो XSS को ट्रिगर करता है (कल्पना करें कि उपयोगकर्ता के उपयोगकर्ता नाम में Self-XSS है): +```html + + +
+ + + +
+ + + +``` + +- दूसरा iframe जो वास्तव में उपयोगकर्ता को लॉग इन करता है (बिना `credentialless` ध्वज के)। + +फिर, XSS से दूसरे iframe तक पहुंचना संभव है क्योंकि उनके पास समान SOP है और उदाहरण के लिए कुकी चुराने के लिए निष्पादित करना: +```javascript +alert(window.top[1].document.cookie); +``` +### fetchLater Attack + +जैसा कि [इस लेख](https://blog.slonser.info/posts/make-self-xss-great-again/) में संकेत दिया गया है, API `fetchLater` एक अनुरोध को बाद में (एक निश्चित समय के बाद) निष्पादित करने के लिए कॉन्फ़िगर करने की अनुमति देता है। इसलिए, इसका दुरुपयोग किया जा सकता है, उदाहरण के लिए, एक हमलावर के सत्र में एक पीड़ित को लॉगिन करने के लिए (Self-XSS के साथ), एक `fetchLater` अनुरोध सेट करने के लिए (उदाहरण के लिए, वर्तमान उपयोगकर्ता का पासवर्ड बदलने के लिए) और हमलावर के सत्र से लॉगआउट करने के लिए। फिर, पीड़ित अपने सत्र में लॉगिन करता है और `fetchLater` अनुरोध निष्पादित होगा, पीड़ित का पासवर्ड हमलावर द्वारा सेट किए गए पासवर्ड में बदल जाएगा। + +इस तरह, भले ही पीड़ित का URL iframe में लोड नहीं किया जा सकता (CSP या अन्य प्रतिबंधों के कारण), हमलावर अभी भी पीड़ित के सत्र में एक अनुरोध निष्पादित कर सकता है। +```javascript +var req = new Request("/change_rights",{method:"POST",body:JSON.stringify({username:"victim", rights: "admin"}),credentials:"include"}) +const minute = 60000 +let arr = [minute, minute * 60, minute * 60 * 24, ...] +for (let timeout of arr) +fetchLater(req,{activateAfter: timeout}) +``` ## SOP में Iframes निम्नलिखित पृष्ठों की जांच करें: