tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Uchambuzi wa Programu ya React Native
Ili kuthibitisha kama programu imejengwa kwenye mfumo wa React Native, fuata hatua hizi:
-
Badilisha jina la faili la APK kwa kiambishi cha zip na uondoe kwenye folda mpya kwa kutumia amri
cp com.example.apk example-apk.zip
naunzip -qq example-apk.zip -d ReactNative
. -
Tembea kwenye folda mpya iliyoundwa ya ReactNative na pata folda ya mali. Ndani ya folda hii, unapaswa kupata faili
index.android.bundle
, ambayo ina JavaScript ya React katika muundo wa minified. -
Tumia amri
find . -print | grep -i ".bundle$"
kutafuta faili la JavaScript.
Kode ya Javascript
Ikiwa unakagua maudhui ya index.android.bundle
unapata kode ya JavaScript ya programu (hata kama imepunguzika), unaweza kuichambua ili kupata taarifa nyeti na udhaifu.
Kwa kuwa bundle ina kweli kode yote ya JS ya programu, inawezekana kugawanya katika faili tofauti (inaweza kurahisisha uhandisi wa kinyume) kwa kutumia chombo react-native-decompiler.
Webpack
Ili kuchambua zaidi kode ya JavaScript, unaweza kupakia faili kwenye https://spaceraccoon.github.io/webpack-exploder/ au fuata hatua hizi:
- Unda faili inayoitwa
index.html
katika saraka hiyo hiyo yenye kode ifuatayo:
<script src="./index.android.bundle"></script>
-
Fungua faili
index.html
katika Google Chrome. -
Fungua Developer Toolbar kwa kubonyeza Command+Option+J kwa OS X au Control+Shift+J kwa Windows.
-
Bonyeza "Sources" katika Developer Toolbar. Unapaswa kuona faili la JavaScript ambalo limegawanywa katika folda na faili, likiunda bundle kuu.
Ikiwa utapata faili inayoitwa index.android.bundle.map
, utaweza kuchambua msimbo wa chanzo katika muundo usio na minified. Faili za ramani zina ramani ya chanzo, ambayo inakuwezesha kuunganisha vitambulisho vilivyopunguzika.
Ili kutafuta akidi nyeti na mwisho, fuata hatua hizi:
-
Tambua maneno nyeti ili kuchambua msimbo wa JavaScript. Programu za React Native mara nyingi hutumia huduma za watu wa tatu kama Firebase, AWS S3 service endpoints, funguo za kibinafsi, n.k.
-
Katika kesi hii maalum, programu ilionekana ikitumia huduma ya Dialogflow. Tafuta muundo unaohusiana na usanidi wake.
-
Ilikuwa na bahati kwamba akidi nyeti zilizowekwa kwa nguvu zilipatikana katika msimbo wa JavaScript wakati wa mchakato wa recon.
Badilisha msimbo wa JS na ujenge upya
Katika kesi hii kubadilisha msimbo ni rahisi. Unahitaji tu kubadilisha jina la programu ili kutumia kiambishi cha .zip
na kukitoa. Kisha unaweza kubadilisha msimbo wa JS ndani ya bundle hii na kujenga upya programu. Hii inapaswa kuwa ya kutosha kukuwezesha kuingiza msimbo katika programu kwa madhumuni ya majaribio.
Hermes bytecode
Ikiwa bundle ina Hermes bytecode, hu wezi kufikia msimbo wa Javascript wa programu (hata si toleo lililopunguzika).
Unaweza kuangalia ikiwa bundle ina Hermes bytecode kwa kuendesha amri ifuatayo:
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96
Hata hivyo, unaweza kutumia zana hbctool, hermes-dec au hermes_rs ili kufanya disassembly ya bytecode na pia kui-decompile hadi baadhi ya pseudo JS code. Kufanya hivyo, kwa mfano amri hizi:
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
Badilisha msimbo na jenga upya
Kwa kawaida unapaswa kuwa na uwezo wa kubadilisha msimbo ulioondolewa (kubadilisha kulinganisha, au thamani au chochote unachohitaji kubadilisha) na kisha jenga upya bytecode na kisha jenga upya programu.
Zana hbctool inasaidia kuondoa muunganisho na kujenga tena baada ya mabadiliko kufanywa, hata hivyo inasaidia toleo za zamani tu za bytecode ya Hermes.
Zana hermes-dec haisaidii kujenga upya bytecode.
Zana hermes_rs inasaidia kujenga upya bytecode, lakini kwa kweli ni maktaba na si zana ya CLI.
Uchambuzi wa Dyanmic
Unaweza kujaribu kuchambua programu kwa njia ya dyanmic kwa kutumia Frida kuwezesha hali ya maendeleo ya programu ya React na kutumia react-native-debugger
kuungana nayo. Hata hivyo, kwa hili unahitaji msimbo wa chanzo wa programu kwa wazi. Unaweza kupata maelezo zaidi kuhusu hili katika https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/.
Marejeleo
- 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
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.