tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Аналіз додатка React Native
Щоб підтвердити, чи був додаток створений на основі фреймворку React Native, виконайте ці кроки:
-
Перейменуйте файл APK з розширенням zip і витягніть його в нову папку, використовуючи команди
cp com.example.apk example-apk.zip
таunzip -qq example-apk.zip -d ReactNative
. -
Перейдіть до новоствореної папки ReactNative і знайдіть папку assets. Усередині цієї папки ви повинні знайти файл
index.android.bundle
, який містить React JavaScript у мінімізованому форматі. -
Використовуйте команду
find . -print | grep -i ".bundle$"
для пошуку файлу JavaScript.
Javascript Код
Якщо перевіряючи вміст index.android.bundle
, ви знайдете JavaScript код додатка (навіть якщо він мінімізований), ви можете аналізувати його для виявлення чутливої інформації та вразливостей.
Оскільки бандл фактично містить увесь JS код додатка, можливо поділити його на різні файли (потенційно спрощуючи його реверс-інжиніринг), використовуючи інструмент react-native-decompiler.
Webpack
Щоб додатково проаналізувати JavaScript код, ви можете завантажити файл на https://spaceraccoon.github.io/webpack-exploder/ або виконати ці кроки:
- Створіть файл з назвою
index.html
у тій же директорії з наступним кодом:
<script src="./index.android.bundle"></script>
-
Відкрийте файл
index.html
у Google Chrome. -
Відкрийте панель розробника, натиснувши Command+Option+J для OS X або Control+Shift+J для Windows.
-
Клацніть на "Sources" у панелі розробника. Ви повинні побачити файл JavaScript, який розділений на папки та файли, що складають основний пакет.
Якщо ви знайдете файл під назвою index.android.bundle.map
, ви зможете проаналізувати вихідний код у немінімізованому форматі. Файли карт містять відображення виходу, що дозволяє вам відображати мінімізовані ідентифікатори.
Щоб знайти чутливі облікові дані та кінцеві точки, дотримуйтесь цих кроків:
-
Визначте чутливі ключові слова для аналізу коду JavaScript. Додатки React Native часто використовують сторонні сервіси, такі як Firebase, кінцеві точки сервісу AWS S3, приватні ключі тощо.
-
У цьому конкретному випадку було помічено, що додаток використовує сервіс Dialogflow. Шукайте шаблон, пов'язаний з його конфігурацією.
-
Було щасливо, що чутливі жорстко закодовані облікові дані були знайдені в коді JavaScript під час процесу розвідки.
Змінити код JS і перебудувати
У цьому випадку змінити код легко. Вам просто потрібно перейменувати додаток, щоб використовувати розширення .zip
і витягти його. Потім ви можете змінити код JS всередині цього пакету і перебудувати додаток. Це повинно бути достатньо, щоб дозволити вам впровадити код у додаток для тестування.
## Байткод Hermes
Якщо пакет містить байткод Hermes, ви не зможете отримати доступ до коду Javascript додатка (навіть до мінімізованої версії).
Ви можете перевірити, чи містить пакет байткод Hermes, виконавши наступну команду:
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96
Однак ви можете використовувати інструменти hbctool, hermes-dec або hermes_rs для дизасемблювання байт-коду та також для декомпіляції його в деякий псевдо JS код. Для цього, наприклад, ці команди:
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
Зміна коду та перебудова
Ідеально, ви повинні мати можливість змінити дизасембльований код (змінивши порівняння, або значення, або що б ви не хотіли змінити) і потім перебудувати байт-код і потім перебудувати додаток.
Інструмент hbctool підтримує дизасемблювання пакету та його повторну збірку після внесення змін, однак він підтримує лише старі версії байт-коду Hermes.
Інструмент hermes-dec не підтримує перебудову байт-коду.
Інструмент hermes_rs підтримує перебудову байт-коду, але насправді це бібліотека, а не CLI інструмент.
Динамічний аналіз
Ви можете спробувати динамічно проаналізувати додаток, використовуючи Frida, щоб увімкнути режим розробника React додатку та використовувати react-native-debugger
для підключення до нього. Однак для цього вам, очевидно, потрібен вихідний код додатку. Ви можете знайти більше інформації про це в https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/.
Посилання
- 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
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.