Julkisen avaimen päättely
Kun JWT on allekirjoitettu asymmetrisellä algoritmilla, allekirjoitukseen käytetyn yksityisen avaimen parin, eli julkisen avaimen, voi joskus päätellä matematiikalla. Laskentakaava perustuu tähän StackExchange keskusteluun: https://crypto.stackexchange.com/questions/30289/is-it-possible-to-recover-an-rsa-modulus-from-its-signatures/30301#30301
Kaavaa ei tarvitse ymmärtää, GitHubista löytyy jo työkalu jolla laskenta on toteutettu.
Työkalun asennus
Käynnistä hyökkääjän terminaali alta. Kloonaa GitHubista silentsignal/rsa_sign2n.git repo:
git clone https://github.com/silentsignal/rsa_sign2n.git
Asenna sitten työkalun riippuvuudet:
cd rsa_sign2n/CVE-2017-11424/
pip3.8 install -r requirements.txt
Valmista.
Tokenien hankinta
Tarvitset kaksi eri JWT-tokenia jotta työkalu voi toimia. Saat nämä harjoitustehtävässä kirjautumalla sisään, lähettämällä HTTP-pyynnön flag-osoitteeseen, ja ottamalla JWT:n talteen kuten aiemmissakin moduuleissa. Sitten vain kirjaudut ulos, takaisin sisään, ja toistat, niin saat seuraavankin JWT:n talteen.
Työkalun ajaminen
Lopuksi vain ajat skriptin x_CVE-2017-11424.py, antaen sille parametreiksi JWT-tokenit, ja toivot parasta. Jos hyökkäys onnistuu ja saat julkisen avaimen, voit kokeilla onko sovellus haavoittuva key confusion -hyökkäyksille avain kuten edellisessä moduulissa.
Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.
Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.