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

Analiza React Native Aplikacije

Da biste potvrdili da li je aplikacija izgrađena na React Native okviru, pratite ove korake:

  1. Preimenujte APK datoteku sa zip ekstenzijom i raspakujte je u novu fasciklu koristeći komandu cp com.example.apk example-apk.zip i unzip -qq example-apk.zip -d ReactNative.

  2. 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.

  3. 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:

  1. Kreirajte datoteku pod imenom index.html u istoj fascikli sa sledećim kodom:
html
<script src="./index.android.bundle"></script>
  1. Otvorite index.html datoteku u Google Chrome-u.

  2. Otvorite Developer Toolbar pritiskom na Command+Option+J za OS X ili Control+Shift+J za Windows.

  3. 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:

  1. 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.

  2. U ovom specifičnom slučaju, primećeno je da aplikacija koristi Dialogflow uslugu. Potražite obrazac povezan sa njenom konfiguracijom.

  3. 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:

bash
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:

bash
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

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