diff --git a/src/mobile-pentesting/android-app-pentesting/android-task-hijacking.md b/src/mobile-pentesting/android-app-pentesting/android-task-hijacking.md
index 0689c3a36..521364dad 100644
--- a/src/mobile-pentesting/android-app-pentesting/android-task-hijacking.md
+++ b/src/mobile-pentesting/android-app-pentesting/android-task-hijacking.md
@@ -2,44 +2,50 @@
{{#include ../../banners/hacktricks-training.md}}
-## Task, Back Stack and Foreground Activities
+## Zadania, Stos Wsteczny i Aktywności w Pierwszym Planie
-W Androidzie, **task** to zasadniczo zestaw aktywności, z którymi użytkownicy wchodzą w interakcję, aby wykonać określone zadanie, zorganizowane w **back stack**. Ten stos porządkuje aktywności na podstawie momentu ich otwarcia, z najnowszą aktywnością wyświetlaną na górze jako **foreground activity**. W każdej chwili tylko ta aktywność jest widoczna na ekranie, co czyni ją częścią **foreground task**.
+W Androidzie, **zadanie** to zasadniczo zestaw aktywności, z którymi użytkownicy wchodzą w interakcję, aby wykonać określone zadanie, zorganizowane w **stos wsteczny**. Stos ten porządkuje aktywności na podstawie momentu ich otwarcia, z najnowszą aktywnością wyświetlaną na górze jako **aktywność w pierwszym planie**. W każdej chwili tylko ta aktywność jest widoczna na ekranie, co czyni ją częścią **zadania w pierwszym planie**.
Oto szybkie podsumowanie przejść między aktywnościami:
-- **Activity 1** zaczyna jako jedyna aktywność w foreground.
-- Uruchomienie **Activity 2** przesuwa **Activity 1** do back stack, przynosząc **Activity 2** na foreground.
-- Rozpoczęcie **Activity 3** przesuwa **Activity 1** i **Activity 2** dalej w stosie, z **Activity 3** teraz na przodzie.
-- Zamknięcie **Activity 3** przywraca **Activity 2** na foreground, pokazując uproszczony mechanizm nawigacji zadań w Androidzie.
+- **Aktywność 1** zaczyna jako jedyna aktywność w pierwszym planie.
+- Uruchomienie **Aktywności 2** przesuwa **Aktywność 1** do stosu wstecznego, przynosząc **Aktywność 2** na pierwszy plan.
+- Rozpoczęcie **Aktywności 3** przesuwa **Aktywność 1** i **Aktywność 2** dalej w stosie, z **Aktywnością 3** teraz na przodzie.
+- Zamknięcie **Aktywności 3** przywraca **Aktywność 2** na pierwszy plan, pokazując uproszczony mechanizm nawigacji zadań w Androidzie.
.png>)
-## Task affinity attack
+## Atak na afinity zadania
-### Overview of Task Affinity and Launch Modes
+### Przegląd afinity zadania i trybów uruchamiania
-W aplikacjach Android, **task affinity** określa preferowany task dla aktywności, zazwyczaj zgodny z nazwą pakietu aplikacji. Ta konfiguracja jest kluczowa w tworzeniu aplikacji proof-of-concept (PoC) do demonstrowania ataku.
+W aplikacjach Android, **afinity zadania** określa preferowane zadanie aktywności, zazwyczaj zgodne z nazwą pakietu aplikacji. Ta konfiguracja jest kluczowa w tworzeniu aplikacji proof-of-concept (PoC) do demonstrowania ataku.
-### Launch Modes
+### Tryby uruchamiania
-Atrybut `launchMode` kieruje obsługą instancji aktywności w ramach zadań. Tryb **singleTask** jest kluczowy dla tego ataku, dyktując trzy scenariusze w oparciu o istniejące instancje aktywności i dopasowania task affinity. Wykorzystanie polega na zdolności aplikacji atakującego do naśladowania task affinity aplikacji docelowej, wprowadzając system Android w błąd, aby uruchomił aplikację atakującego zamiast zamierzonej.
+Atrybut `launchMode` kieruje obsługą instancji aktywności w zadaniach. Tryb **singleTask** jest kluczowy dla tego ataku, dyktując trzy scenariusze w oparciu o istniejące instancje aktywności i dopasowania afinity zadania. Wykorzystanie polega na zdolności aplikacji atakującego do naśladowania afinity zadania aplikacji docelowej, wprowadzając system Android w błąd, aby uruchomił aplikację atakującego zamiast zamierzonej ofiary.
-### Detailed Attack Steps
+### Szczegółowe kroki ataku
1. **Instalacja złośliwej aplikacji**: Ofiara instaluje aplikację atakującego na swoim urządzeniu.
2. **Początkowa aktywacja**: Ofiara najpierw otwiera złośliwą aplikację, przygotowując urządzenie do ataku.
3. **Próba uruchomienia aplikacji docelowej**: Ofiara próbuje otworzyć aplikację docelową.
-4. **Wykonanie przejęcia**: Z powodu dopasowania task affinity, złośliwa aplikacja jest uruchamiana zamiast aplikacji docelowej.
+4. **Wykonanie przejęcia**: W pewnym momencie aplikacja próbuje otworzyć widok **singleTask**. Z powodu dopasowania afinity zadania, złośliwa aplikacja jest uruchamiana zamiast aplikacji docelowej.
5. **Oszustwo**: Złośliwa aplikacja wyświetla fałszywy ekran logowania przypominający aplikację docelową, oszukując użytkownika, aby wprowadził wrażliwe informacje.
+> [!TIP]
+> Zauważ, że aby ten atak zadziałał, wrażliwy widok **nie musi mieć eksportu ustawionego na true** ani nie musi być główną aktywnością.
+
Aby uzyskać praktyczną implementację tego ataku, zapoznaj się z repozytorium Task Hijacking Strandhogg na GitHubie: [Task Hijacking Strandhogg](https://github.com/az0mb13/Task_Hijacking_Strandhogg).
-### Prevention Measures
+### Środki zapobiegawcze
-Aby zapobiec takim atakom, deweloperzy mogą ustawić `taskAffinity` na pusty ciąg i wybrać tryb uruchamiania `singleInstance`, zapewniając izolację ich aplikacji od innych. Dostosowanie funkcji `onBackPressed()` oferuje dodatkową ochronę przed przejęciem zadań.
+Aby zapobiec takim atakom, deweloperzy mogą:
+- Ustawić **`taskAffinity`** widoku **singleTask** na pusty ciąg (`android:taskAffinity=""`)
+- Wybrać tryb uruchamiania **`singleInstance`**, zapewniając izolację ich aplikacji od innych.
+- Dostosować funkcję **`onBackPressed()`**, co oferuje dodatkową ochronę przed przejęciem zadań.
-## **References**
+## **Referencje**
- [**https://blog.dixitaditya.com/android-task-hijacking/**](https://blog.dixitaditya.com/android-task-hijacking/)
- [**https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html**](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
diff --git a/src/mobile-pentesting/android-app-pentesting/react-native-application.md b/src/mobile-pentesting/android-app-pentesting/react-native-application.md
index e72f415a5..a7e5a4566 100644
--- a/src/mobile-pentesting/android-app-pentesting/react-native-application.md
+++ b/src/mobile-pentesting/android-app-pentesting/react-native-application.md
@@ -4,36 +4,78 @@
Aby potwierdzić, czy aplikacja została zbudowana na frameworku React Native, wykonaj następujące kroki:
-1. Zmień nazwę pliku APK na plik zip i wypakuj go do nowego folderu, używając polecenia `cp com.example.apk example-apk.zip` oraz `unzip -qq example-apk.zip -d ReactNative`.
+1. Zmień nazwę pliku APK na plik zip i rozpakuj go do nowego folderu, używając polecenia `cp com.example.apk example-apk.zip` oraz `unzip -qq example-apk.zip -d ReactNative`.
-2. Przejdź do nowo utworzonego folderu ReactNative i zlokalizuj folder assets. Wewnątrz tego folderu powinieneś znaleźć plik `index.android.bundle`, który zawiera React JavaScript w zminimalizowanym formacie.
+2. Przejdź do nowo utworzonego folderu ReactNative i zlokalizuj folder assets. W tym folderze powinieneś znaleźć plik `index.android.bundle`, który zawiera React JavaScript w zminifikowanym formacie.
3. Użyj polecenia `find . -print | grep -i ".bundle$"` aby wyszukać plik JavaScript.
-Aby dalej analizować kod JavaScript, utwórz plik o nazwie `index.html` w tym samym katalogu z następującym kodem:
+## Kod Javascript
+
+Jeśli sprawdzając zawartość `index.android.bundle` znajdziesz kod JavaScript aplikacji (nawet jeśli jest zminifikowany), możesz **analizować go w celu znalezienia wrażliwych informacji i luk w zabezpieczeniach**.
+
+Ponieważ bundle zawiera właściwie cały kod JS aplikacji, możliwe jest **podzielenie go na różne pliki** (co potencjalnie ułatwia jego inżynierię wsteczną) przy użyciu **narzędzia [react-native-decompiler](https://github.com/numandev1/react-native-decompiler)**.
+
+### Webpack
+
+Aby dalej analizować kod JavaScript, możesz przesłać plik do [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) lub wykonać następujące kroki:
+
+1. Utwórz plik o nazwie `index.html` w tym samym katalogu z następującym kodem:
```html
```
-Możesz przesłać plik na [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) lub postępować zgodnie z tymi krokami:
+2. Otwórz plik `index.html` w Google Chrome.
-1. Otwórz plik `index.html` w Google Chrome.
+3. Otwórz Narzędzie dewelopera, naciskając **Command+Option+J dla OS X** lub **Control+Shift+J dla Windows**.
-2. Otwórz Pasek Narzędzi Dewelopera, naciskając **Command+Option+J dla OS X** lub **Control+Shift+J dla Windows**.
+4. Kliknij na "Sources" w Narzędziu dewelopera. Powinieneś zobaczyć plik JavaScript podzielony na foldery i pliki, tworzące główny pakiet.
-3. Kliknij na "Sources" w Pasek Narzędzi Dewelopera. Powinieneś zobaczyć plik JavaScript podzielony na foldery i pliki, tworzące główny pakiet.
+Jeśli znajdziesz plik o nazwie `index.android.bundle.map`, będziesz mógł analizować kod źródłowy w niezmienionej formie. Pliki map zawierają mapowanie źródła, co pozwala na mapowanie zminimalizowanych identyfikatorów.
-Jeśli znajdziesz plik o nazwie `index.android.bundle.map`, będziesz mógł analizować kod źródłowy w formacie niezmienionym. Pliki map zawierają mapowanie źródła, co pozwala na mapowanie zminimalizowanych identyfikatorów.
-
-Aby wyszukać wrażliwe dane uwierzytelniające i punkty końcowe, postępuj zgodnie z tymi krokami:
+Aby wyszukać wrażliwe dane uwierzytelniające i punkty końcowe, wykonaj następujące kroki:
1. Zidentyfikuj wrażliwe słowa kluczowe do analizy kodu JavaScript. Aplikacje React Native często korzystają z usług stron trzecich, takich jak Firebase, punkty końcowe usługi AWS S3, klucze prywatne itp.
2. W tym konkretnym przypadku zaobserwowano, że aplikacja korzysta z usługi Dialogflow. Wyszukaj wzór związany z jej konfiguracją.
-3. Miałeś szczęście, że wrażliwe dane uwierzytelniające zakodowane na stałe zostały znalezione w kodzie JavaScript podczas procesu rekonesansu.
+3. Miałeś szczęście, że wrażliwe dane uwierzytelniające zakodowane na sztywno zostały znalezione w kodzie JavaScript podczas procesu rekonesansu.
-## References
+### Zmień kod JS i odbuduj
+
+W tym przypadku zmiana kodu jest łatwa. Musisz tylko zmienić nazwę aplikacji, aby używała rozszerzenia `.zip` i wyodrębnić ją. Następnie możesz **zmodyfikować kod JS wewnątrz tego pakietu i odbudować aplikację**. To powinno wystarczyć, aby umożliwić ci **wstrzyknięcie kodu** do aplikacji w celach testowych.
+
+## Hermes bytecode
+
+Jeśli pakiet zawiera **Hermes bytecode**, **nie będziesz mógł uzyskać dostępu do kodu Javascript** aplikacji (nawet do wersji zminimalizowanej).
+
+Możesz sprawdzić, czy pakiet zawiera Hermes bytecode, uruchamiając następujące polecenie:
+```bash
+file index.android.bundle
+index.android.bundle: Hermes JavaScript bytecode, version 96
+```
+Możesz jednak użyć narzędzi **[hbctool](https://github.com/bongtrop/hbctool)**, **[hermes-dec](https://github.com/P1sec/hermes-dec)** lub **[hermes_rs](https://github.com/Pilfer/hermes_rs)**, aby **zdekompilować bajtkod** i również **zdekompilować go do pseudo kodu JS**. Aby to zrobić, na przykład te polecenia:
+```bash
+hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
+hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
+```
+### Zmiana kodu i odbudowa
+
+Idealnie powinieneś być w stanie zmodyfikować zdisasemblerowany kod (zmieniając porównanie, wartość lub cokolwiek, co musisz zmodyfikować), a następnie **odbudować bajtkod** i odbudować aplikację.
+
+Narzędzie **[hbctool](https://github.com/bongtrop/hbctool)** wspiera disasemblerowanie pakietu i ponowne budowanie go po wprowadzeniu zmian, jednak **obsługuje tylko stare wersje** bajtkodu Hermes.
+
+Narzędzie **[hermes-dec](https://github.com/P1sec/hermes-dec)** nie wspiera odbudowy bajtkodu.
+
+Narzędzie **[hermes_rs](https://github.com/Pilfer/hermes_rs)** wspiera odbudowę bajtkodu, ale jest to w rzeczywistości biblioteka, a nie narzędzie CLI.
+
+## Analiza dynamiczna
+
+Możesz spróbować dynamicznie analizować aplikację, używając Frida, aby włączyć tryb dewelopera aplikacji React i użyć **`react-native-debugger`**, aby się do niej podłączyć. Jednak do tego potrzebujesz źródła aplikacji. Więcej informacji na ten temat znajdziesz w [https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/](https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/).
+
+## Odniesienia
- [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](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://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](https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf)
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/mobile-pentesting/android-app-pentesting/tapjacking.md b/src/mobile-pentesting/android-app-pentesting/tapjacking.md
index e00836df8..ca9b861b6 100644
--- a/src/mobile-pentesting/android-app-pentesting/tapjacking.md
+++ b/src/mobile-pentesting/android-app-pentesting/tapjacking.md
@@ -5,17 +5,19 @@
## **Podstawowe informacje**
**Tapjacking** to atak, w którym **złośliwa** **aplikacja** jest uruchamiana i **pozycjonuje się na wierzchu aplikacji ofiary**. Gdy widocznie zasłania aplikację ofiary, jej interfejs użytkownika jest zaprojektowany w taki sposób, aby oszukać użytkownika do interakcji z nią, podczas gdy przekazuje interakcję do aplikacji ofiary.\
-W efekcie, **oślepia użytkownika, aby nie wiedział, że faktycznie wykonuje akcje w aplikacji ofiary**.
+W efekcie, **oślepia użytkownika, uniemożliwiając mu zrozumienie, że faktycznie wykonuje akcje w aplikacji ofiary**.
### Wykrywanie
-Aby wykryć aplikacje podatne na ten atak, powinieneś szukać **eksportowanych aktywności** w manifeście androida (zauważ, że aktywność z intent-filter jest automatycznie eksportowana domyślnie). Gdy znajdziesz eksportowane aktywności, **sprawdź, czy wymagają jakichkolwiek uprawnień**. Dzieje się tak, ponieważ **złośliwa aplikacja również będzie potrzebować tych uprawnień**.
+Aby wykryć aplikacje podatne na ten atak, powinieneś szukać **eksportowanych aktywności** w manifeście androida (zauważ, że aktywność z intencją-filtrującą jest automatycznie eksportowana domyślnie). Gdy znajdziesz eksportowane aktywności, **sprawdź, czy wymagają jakichkolwiek uprawnień**. Dzieje się tak, ponieważ **złośliwa aplikacja również będzie potrzebować tych uprawnień**.
+
+Możesz również sprawdzić minimalną wersję SDK aplikacji, sprawdzając wartość **`android:minSdkVersion`** w pliku **`AndroidManifest.xml`**. Jeśli wartość jest **niższa niż 30**, aplikacja jest podatna na Tapjacking.
### Ochrona
#### Android 12 (API 31,32) i wyższe
-[**Zgodnie z tym źródłem**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** ataki tapjacking są automatycznie zapobiegane przez Androida od wersji 12 (API 31 i 30) i wyższe. Tak więc, nawet jeśli aplikacja jest podatna, **nie będziesz w stanie jej wykorzystać**.
+[**Zgodnie z tym źródłem**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** ataki tapjacking są automatycznie zapobiegane przez Androida od Androida 12 (API 31 i 30) i wyższych. Tak więc, nawet jeśli aplikacja jest podatna, **nie będziesz w stanie jej wykorzystać**.
#### `filterTouchesWhenObscured`
@@ -37,9 +39,9 @@ android:filterTouchesWhenObscured="true">
### Tapjacking-ExportedActivity
-Najbardziej **najnowsza aplikacja na Androida** przeprowadzająca atak Tapjacking (+ wywołanie przed eksportowaną aktywnością atakowanej aplikacji) znajduje się pod adresem: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
+Najbardziej **najnowsza aplikacja na Androida** przeprowadzająca atak Tapjacking (+ wywołując przed eksportowaną aktywnością atakowanej aplikacji) znajduje się pod adresem: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
-Postępuj zgodnie z **instrukcjami README, aby z niej skorzystać**.
+Postępuj zgodnie z **instrukcjami w README, aby z niej skorzystać**.
### FloatingWindowApp
@@ -50,7 +52,7 @@ Przykładowy projekt implementujący **FloatingWindowApp**, który można użyć
> [!OSTRZEŻENIE]
> Wygląda na to, że ten projekt jest teraz nieutrzymywany i ta funkcjonalność nie działa już poprawnie
-Możesz użyć [**qark**](https://github.com/linkedin/qark) z parametrami `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk`, aby stworzyć złośliwą aplikację do testowania możliwych **vulnerabilities Tapjacking**.\
+Możesz użyć [**qark**](https://github.com/linkedin/qark) z parametrami `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk`, aby stworzyć złośliwą aplikację do testowania możliwych **wrażliwości na Tapjacking**.\
Łagodzenie jest stosunkowo proste, ponieważ deweloper może zdecydować, że nie chce odbierać zdarzeń dotykowych, gdy widok jest zasłonięty przez inny. Korzystając z [Dokumentacji dla deweloperów Androida](https://developer.android.com/reference/android/view/View#security):
diff --git a/theme/ht_searcher.js b/theme/ht_searcher.js
index 1cee01a8c..52e150d9a 100644
--- a/theme/ht_searcher.js
+++ b/theme/ht_searcher.js
@@ -471,12 +471,13 @@ window.search = window.search || {};
showResults(true);
}
- fetch(path_to_root + 'searchindex.json')
+ var branch = lang === "en" ? "master" : lang
+ fetch(`https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.json`)
.then(response => response.json())
.then(json => init(json))
.catch(error => { // Try to load searchindex.js if fetch failed
var script = document.createElement('script');
- script.src = path_to_root + 'searchindex.js';
+ script.src = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.js`;
script.onload = () => init(window.search);
document.head.appendChild(script);
});
diff --git a/theme/index.hbs b/theme/index.hbs
index 166e177c4..70b70a68a 100644
--- a/theme/index.hbs
+++ b/theme/index.hbs
@@ -55,6 +55,7 @@