tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Analiza React Native Aplikacije
Da biste potvrdili da li je aplikacija izgrađena na React Native okviru, pratite ove korake:
-
Preimenujte APK datoteku sa zip ekstenzijom i raspakujte je u novu fasciklu koristeći komandu
cp com.example.apk example-apk.zip
iunzip -qq example-apk.zip -d ReactNative
. -
Idite u novokreiranu ReactNative fasciklu i pronađite fasciklu assets. Unutar ove fascikle, trebali biste pronaći datoteku
index.android.bundle
, koja sadrži React JavaScript u minifikovanom formatu. -
Koristite komandu
find . -print | grep -i ".bundle$"
da biste pretražili JavaScript datoteku.
Javascript Kod
Ako prilikom provere sadržaja index.android.bundle
pronađete JavaScript kod aplikacije (čak i ako je minifikovan), možete analizirati ga da pronađete osetljive informacije i ranjivosti.
Pošto paket zapravo sadrži sav JS kod aplikacije, moguće je podeliti ga u različite datoteke (potencijalno olakšavajući njegovo obrnuto inženjerstvo) koristeći alat react-native-decompiler.
Webpack
Da biste dalje analizirali JavaScript kod, možete otpremiti datoteku na https://spaceraccoon.github.io/webpack-exploder/ ili pratiti ove korake:
- Kreirajte datoteku pod imenom
index.html
u istoj fascikli sa sledećim kodom:
<script src="./index.android.bundle"></script>
-
Otvorite
index.html
datoteku u Google Chrome-u. -
Otvorite Developer Toolbar pritiskom na Command+Option+J za OS X ili Control+Shift+J za Windows.
-
Kliknite na "Sources" u Developer Toolbar-u. Trebalo bi da vidite JavaScript datoteku koja je podeljena na foldere i datoteke, čineći glavni paket.
Ako pronađete datoteku pod nazivom index.android.bundle.map
, moći ćete da analizirate izvorni kod u nekompresovanom formatu. Map datoteke sadrže izvorno mapiranje, što vam omogućava da mapirate kompresovane identifikatore.
Da biste pretražili osetljive akreditive i krajnje tačke, pratite ove korake:
-
Identifikujte osetljive ključne reči za analizu JavaScript koda. React Native aplikacije često koriste usluge trećih strana kao što su Firebase, AWS S3 usluge, privatni ključevi itd.
-
U ovom specifičnom slučaju, primećeno je da aplikacija koristi Dialogflow uslugu. Potražite obrazac povezan sa njenom konfiguracijom.
-
Bilo je sreće što su osetljivi hard-kodirani akreditive pronađeni u JavaScript kodu tokom recon procesa.
Promenite JS kod i ponovo izgradite
U ovom slučaju, promena koda je jednostavna. Samo treba da preimenujete aplikaciju da koristi ekstenziju .zip
i da je raspakujete. Zatim možete modifikovati JS kod unutar ovog paketa i ponovo izgraditi aplikaciju. Ovo bi trebalo da bude dovoljno da vam omogući da ubacite kod u aplikaciju u svrhe testiranja.
## Hermes bytecode
Ako paket sadrži Hermes bytecode, nećete moći da pristupite JavaScript kodu aplikacije (čak ni kompresovanoj verziji).
Možete proveriti da li paket sadrži Hermes bytecode pokretanjem sledeće komande:
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96
Međutim, možete koristiti alate hbctool, hermes-dec ili hermes_rs da dezintegrirate bajtkod i takođe da dekompajlirate u neki pseudo JS kod. Da biste to uradili, na primer, ove komande:
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
Promena koda i ponovna izgradnja
Idealno bi bilo da možete da modifikujete disasemblirani kod (menjajući poređenje, ili vrednost ili šta god da treba da modifikujete) i zatim ponovno izgradite bajtkod i ponovo izgradite aplikaciju.
Alat hbctool podržava disasembliranje paketa i ponovnu izgradnju nakon što su promene izvršene, međutim podržava samo stare verzije Hermes bajtkoda.
Alat hermes-dec ne podržava ponovnu izgradnju bajtkoda.
Alat hermes_rs podržava ponovnu izgradnju bajtkoda, ali je zapravo biblioteka, a ne CLI alat.
Dinamička analiza
Možete pokušati da dinamički analizirate aplikaciju koristeći Frida da omogućite developerski režim React aplikacije i koristite react-native-debugger
da se povežete na nju. Međutim, za ovo vam očigledno treba izvorni kod aplikacije. Više informacija o tome možete pronaći na https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/.
Reference
- https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7
- https://www.assetnote.io/resources/research/expanding-the-attack-surface-react-native-android-applications
- https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.