Kaip aš galiu nulaužti bet kurią „Microsoft“ paskyrą

Šis straipsnis yra apie tai, kaip radau „Microsoft“ internetinių paslaugų pažeidžiamumą, kuris galėjo leisti bet kam perimti bet kurią „Microsoft“ paskyrą be sutikimo leidimo. „Microsoft“ saugumo komanda pataisė problemą ir apdovanojo man 50 000 USD kaip jų „Identity Bounty“ programos dalį.

Po „Instagram“ paskyros perėmimo pažeidžiamumo ieškojau panašių spragų kitose paslaugose. Radau, kad „Microsoft“ taip pat naudoja panašią techniką, kad iš naujo nustatytų vartotojo slaptažodį, todėl nusprendžiau išbandyti, ar nėra bet kokio greičio ribojančio pažeidžiamumo.

Norėdami iš naujo nustatyti „Microsoft“ paskyros slaptažodį, turime pamiršti savo slaptažodį puslapyje įvesti savo el. Pašto adresą arba telefono numerį, po to mūsų bus paprašyta pasirinkti el. Pašto adresą ar mobiliojo telefono numerį, kurį galima naudoti norint gauti saugos kodą.

Gavę 7 skaitmenų saugos kodą, turėsime jį įvesti, kad iš naujo nustatytume slaptažodį. Čia, jei galėsime žiauriai priversti visas 7 skaitmenų kodo kombinacijas (tai bus 10 ^ 7 = 10 milijonų kodų), galėsime iš naujo nustatyti bet kurio vartotojo slaptažodį be leidimo. Tačiau akivaizdu, kad bus tam tikros normos ribos, kurios trukdys mums bandyti daug.

Pertvarkyti HTTP POST užklausą, pateiktą kodo patvirtinimo pabaigos taškui, atrodė taip

Jei pažvelgsite į anksčiau pateiktą ekrano kopiją, užklausoje niekur nebuvo nurodytas kodas, kurio įvedėme 1234567. Jis buvo užšifruotas ir išsiųstas patvirtinti. Spėju, kad jie tai daro norėdami užkirsti kelią automatinėms bruteforce priemonėms išnaudoti jų sistemą. Taigi, negalime automatizuoti kelių kodų testavimo naudodami tokius įrankius kaip „Burp Intruder“, nes jie neatliks šifravimo dalies 😕

sumišęs „Jimmy fallon“ GIF filmas „The Tonight Show“, kuriame vaidina Jimmy Fallonas

Po kurio laiko supratau šifravimo techniką ir galėjau automatizuoti visą procesą nuo kodo šifravimo iki kelių tuo pačiu metu pateiktų užklausų siuntimo.

Pirmasis mano testas parodė, kad yra normos ribų, kaip tikėtasi. Iš 1000 išsiųstų kodų tik 122 iš jų pateko, kiti yra apriboti 1211 klaidos kodu ir jie blokuoja atitinkamą vartotojo abonementą nuo tolesnių bandymų siųsti, jei mes nuolat siunčiame užklausas.

Tada bandžiau siųsti vienu metu / tuo pačiu metu pateiktas užklausas, kaip ir „Instagram“. Tai leido man siųsti daug užklausų neužblokavus, bet vis tiek negalėjau gauti sėkmingo atsakymo, įvesdamas teisingą 7 skaitmenų saugos kodą. Maniau, kad jie turi tam tikrą kontrolę, kad būtų išvengta tokio tipo atakų. Nors siunčiant teisingą kodą gaunu klaidą, vis tiek nebuvo duomenų, kad būtų užblokuotas vartotojas, kaip matėme per pradinį bandymą. Taigi aš vis dar tikėjausi, kad kažkas bus.

Niekada neatsisakykite GIF, kurį sukūrė geriausių draugų gyvūnų draugija

Po kelių dienų supratau, kad jie įtraukia į juodąjį sąrašą IP adresą, jei visos mūsų siunčiamos užklausos vienu metu nepasiekia serverio, net kelios milisekundės vėlavimas tarp užklausų leido serveriui aptikti ataką ir ją užblokuoti. Tada patobulinau kodą, kad galėčiau tvarkyti šį scenarijų, ir dar kartą išbandžiau.

Antgamtinis Dean Winchester GIF

Keista, kad tai pavyko ir šį kartą pavyko sulaukti sėkmingo atsakymo 😀

„Juli“ šventinis šokis GIF

Aš išsiunčiau apie 1000 septynių skaitmenų kodų, įskaitant teisingą, ir galėjau atlikti kitą žingsnį slaptažodžiui pakeisti.

Pirmiau pateiktas procesas galioja tik tiems, kuriems nėra įgalintas dviejų veiksnių autentifikavimas. Jei vartotojas įjungė 2FA, mes taip pat turėsime apeiti dviejų veiksnių kodo autentifikavimą, kad pakeistume slaptažodį.

Aš išbandžiau paskyrą naudodamas 2FA ir radau, kad abi yra tos pačios savybės, kurios yra pažeidžiamos šio tipo atakoms. Iš pradžių vartotojas bus paragintas įvesti autentifikavimo programos sugeneruotą 6 skaitmenų kodą, tik tada bus paprašyta įvesti 7 skaitmenų kodą, atsiųstą į jų el. Pašto adresą arba telefono numerį. Tada jie gali pakeisti slaptažodį.

Apibendrinant, užpuolikas turi išsiųsti visas 6 ir 7 skaitmenų saugos kodų galimybes, kurios būtų apie 11 milijonų bandymų pateikti užklausą, ir jis turi būti tuo pačiu metu siunčiamas norint pakeisti bet kurios „Microsoft“ paskyros (įskaitant tas, kuriose įgalinta 2FA) slaptažodį.

Tai nėra lengvas procesas siunčiant tiek daug tuo pačiu metu pateiktų užklausų, kad norint sėkmingai užbaigti ataką, reikės daug skaičiavimo išteklių ir 1000s IP adreso.

Iškart įrašiau visų aplinkkelių vaizdo įrašą ir pateikiau „Microsoft“ kartu su išsamiais pažeidžiamumo atkūrimo veiksmais. Jie greitai suprato šią problemą.

Klausimas buvo užtaisytas 2020 m. Lapkričio mėn., Ir mano atvejis buvo priskirtas kitokiam, nei tikėtasi, saugumui. Paprašiau jų dar kartą apsvarstyti mano išpuolį paaiškinantį poveikį saugumui. Po kelių pirmyn ir atgal siunčiamų el. Laiškų mano byla buvo paskirta Privilegijos padidinimas (įtraukiant daugelio veiksnių autentifikavimo apėjimą). Dėl išpuolio sudėtingumo klaidos sunkumas buvo priskirtas kaip svarbus, o ne kritinis.

Gauti el. Laišką iš MSRC

„Microsoft“ patvirtinimas, kad pranešėte apie šią problemą

2021 m. Vasario 9 d. Per „hackerone“ gavau 50 000 USD premiją ir gavau sutikimą paskelbti šį straipsnį kovo 1 d. Norėčiau padėkoti Danui, Jarekui ir visai MSRC komandai, kad kantriai išklausė visus mano komentarus, pateikė atnaujinimus ir užtaisė problemą. Taip pat norėčiau padėkoti „Microsoft“ už gausų atlygį 🙏 😊

Šį straipsnį galima atsisiųsti kaip PDF.

Parašykite komentarą