


Beispielanalyse zur Umgehung der WebView-Dateidomänen-Ursprungsrichtlinie für Sicherheitslücken
Grundkenntnisse der Android-Architektur
Kernel-Kernelschicht
Schwachstellen sind äußerst schädlich und äußerst vielseitig
Aufgrund der großen Anzahl und Komplexität der Treiber kann es auch viele Lücken geben-
Bibliotheken-Systemlaufzeitbibliotheksschicht
Die in Form von System-Middleware bereitgestellte Laufzeitbibliothek
umfasst libc, WebKit, SQLite usw.AndroidRunTime
Dalvik-Virtual-Machine- und Kernel-Bibliothek-
FrameWork-Anwendungsframeworkschicht
App-Schicht
stellt eine Reihe bereit von Diensten und API-Schnittstellen - Systemanwendung Startbildschirm, Kontakt, Telefon, Browser
- Andere Anwendungen
- Von Entwicklern implementierte Programme unter Verwendung der API der Anwendungs-Framework-Schicht
Andoroid Common Komponenten
Aktivitätsaktivitäten
- BroadcastRecviver Broadcast Receiver
ContentProvider Content Provider
Android App Common Vulnerabilities (OWASP Mobile Top. 10) Unsachgemäße Nutzung der Plattform
Missbrauch oder Nichtnutzung von Plattformfunktionen. Möglichkeit, die Sicherheitskontrollen der Plattform zu nutzen. Zum Beispiel vorsätzlicher Missbrauch, Missbrauch von Berechtigungen usw.
-
Die Risiken
sind sehr groß und können verschiedene Dienste auf der mobilen Plattform betreffen - Zum Beispiel Im iOS-System werden die Passwortdaten in einer lokalen Datei gespeichert statt im Schlüsselbund kann es aus pseudoverschlüsselten Sicherungsdaten gelesen werden
- Im Android-System führt die missbräuchliche Verwendung von Intent dazu, dass böswillige Benutzer den Inhalt des Intents kapern und ändern und willkürliche Aktionen mit dem ausführen Identitätsberechtigungen des ursprünglichen Prozesses.
- Unsichere Datenspeicherung.
MODE_PRIVATE
- Textspeicher löschen
- Erstellt Der Modus MODE_PRIVATE wird beim Erstellen der Datenbank nicht verwendet.
- im Klartext gespeichert und vom Root-Benutzer lesbar, was zum Verlust sensibler Daten führt
-
SQLiteDatabases
Daten/Datenpaketname/Datenbank/*.db - Daten/Daten/Programmregistrierung/Dateien/*
-
ExternalStorage /mnt/sdcard/*
Erkennungsmethode
-
Durchsuchen Sie die verschiedenen Dateien und Verzeichnisse im Paketnamenverzeichnis /data/data/ und prüfen Sie, ob Dateien vorhanden sind, die für andere Benutzer lesbar sind.
Überprüfen Sie, ob in der Konfiguration vertrauliche Klartextinformationen vorhanden sind Dateien, Datenbanken usw.-
Mining-Methode -
Codeerkennung
Überprüfen Sie openFileOutput, getSharedPrefreences, openOrCreateDatabase usw. Funktional Ob der Modusparameter ist. MODE_PRIVATE(0x0000) - Daten Kommunikationsschwachstelle
Verwendung von Klartextprotokollen wie HTTP zur Übertragung sensibler Informationen an den Server
Über LAN-Sniffing, böswilliges öffentliches WLAN, böswillige Proxy-Dienste, DNS-Hijacking und andere Mittel wird die Kommunikation im Klartext erfasst, was dazu führt Man-in-the-Middle-Angriffe- SSL-Zertifikat schwache Überprüfung
- Suchen Sie nach .method public checkServerTrusted
Lokalisieren Sie .method und beenden Sie die Methode - .
Überprüfen Sie, ob dies der Fall ist return-void
Überprüfen Sie auf ähnliche Weise, ob der Rückgabewert von verify(String, SSLSession) immer True ist und ob der Parameter von und installieren Sie es im Telefon
-
Die fehlende Überprüfung des SSL-Zertifikats in der APP Der Client sollte die Klasse Die drei Methoden checkServerTrustedcheckClientTrustedgetInstance
Ein Fehler bei der Zertifikatsüberprüfung führt zu einer Ausnahme, und dann behandelt die Anwendung die Ausnahme bei der Zertifikatsüberprüfung- Eine fehlgeschlagene Überprüfung des Serverzertifikats führt zu einem TLS-Man-in-the-Middle-Angriff
Wann Bei Verwendung von HttpsURLConnection wird der benutzerdefinierte HostnameVerifier während des Prozesses nicht implementiert. Bei der Überprüfung des Hostnamens wird standardmäßig nicht überprüft, ob der Zertifikatdomänenname mit dem Sitenamen übereinstimmt. Oder wenn Sie den HostnameVerifier von HttpsURLConnection festlegen, legen Sie ihn auf ALLOW_ALL_HOSTNAME_VERIIER fest, um alle Domänennamen zu akzeptieren p, Patch usw . Methode zur Umgehung
Komponentenexpositions-Schwachstelle
-
Android:exported ist ein den vier Hauptkomponenten gemeinsames Attribut, das angibt, ob dies der Fall ist unterstützt. Andere Anwendungen rufen die aktuelle Komponente auf 🎜#
# 🎜🎜#Berechtigungskontrolle exportierter exportierter Komponenten - Authentifizierung umgehen
- #🎜 🎜#Die Aktivität wird nach der Offenlegung von einem Dritten aufgerufen und es ist möglich, sich ohne Passwort anzumelden/das Passwort zurückzusetzen
-
#???? Beim Debuggen können andere Informationen eingesehen werden -
Befugnisverletzung - #🎜🎜 #
#🎜🎜 #
AndroidManifest.xml anzeigen -
von drozer Das Attacksurface-Tool führt eine Sicherheitsbewertung durch
# ## erhalten - AES/DES schwache Verschlüsselung
ECB-Modus ist anfällig für Analyse- oder Replay-Angriffe#🎜 🎜#
#🎜🎜 # WebView - Enthält hauptsächlich drei Arten von Schwachstellen:
#🎜 🎜#
beliebige Codeausführung - Wenn Sie eine Webseite schreiben, die Objekte durchläuft, besteht bei Vorhandensein einer getClass-Methode eine Sicherheitsanfälligkeit bezüglich Remotecodeausführung. #🎜 🎜#Fiddlers Before-Skript kann es jeder Webansicht ermöglichen, zum Testen auf jede Webseite zuzugreifen
- Wenn WebView Aktiviert die Unterstützung für JavaScript und schränkt URLs in der Form „file:///“ nicht ein. Dadurch werden vertrauliche Informationen wie Cookies, private Dateien und Datenbanken preisgegeben.
# 🎜 🎜#- Passwortspeicherung im Klartext
Wenn der Benutzer den in WebView eingegebenen Benutzernamen und das Passwort speichert, werden sie im Klartext in data.db gespeichert App-Verzeichnis #🎜 🎜#statische Analyse
Schnelle Erkennung und Beschaffung wichtiger Analyseziele
# 🎜🎜#
- Skriptanalyse Smali-Code
- Verifizierung und Gefahrenbewertung von vermutete Risiken
Debug-Modus-AnalyseVersuchen Sie den Betrieb/die Schwachstellenüberprüfung #🎜 ## ## 🎜🎜#
Umgekehrte Analyse - Verschlüsselungsknacken und weitere Analyse von Logik und Code
-Automatisiertes Assistenzsystem
# 🎜🎜#- MobSF enthält die Front-End-Weboberfläche,
- Marvin enthält die Front-End-Weboberfläche, Die Bereitstellung ist mühsam. Beispielcode-Adresse: https://github.com/jltxgcy/AppVulnerability/tree/master/WebViewFileDemo.
- Oder mein Github: https://github.com/MaxSecret/AppVulnerability/tree/master/WebViewFileDemo1
Der Hauptunterschied zwischen den folgenden Codes ist dieser attack_file.html - öffentliche Klasse MainActivity erweitert Aktivität {
private WebView webView;
#🎜 🎜# privat String-URL; String mUrl1 = "file:///android_asset/html/attack_file.html"; - //String mUrl2 = "file:// /android_asset/ html/test.html";
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstance State) ; # 🎜🎜#
- Dynamische Analyse
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JSInterface(), "jsInterface");
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.setWebChromeClient(new WebChromeClient() {
@Override public boolean onJsAlert(WebView view, String url, String message,JsResult result) {
//Erforderliche Funktionalität hier
return super.onJsAlert(view, URL, Nachricht, Ergebnis);
}
});
webView.loadUrl(mUrl1);
}
class JSInterface {
public String onButtonClick(String text) {
final String str = text;
runOnUiThread(new Runnable() {
@Override public void run() {
Log.e ("leehong2", "onButtonClick: text = " + str); Toast.makeText(getApplicationContext() , "onButtonClick: text = " + str, Toast.LENGTH_LONG).show();
}
});
return „Dieser Text wird von der Java-Ebene zurückgegeben. js text = „ + text;
}
public void onImageClick(String url, int width, int height) {
final String str = "onImageClick: text = " + url + " width = " + width + " height = " + height;
Log.i("leehong2", str);
runOnUiThread(new Runnable() {
@Override public void run() {
Toast.make Text(getApplicationContext(), str, Toast.LENGTH_LONG).show();
}
});
}
}
}
WebView.getSettings().setAllowFileAccessFromFileURLs(true) ist eine Datei mit JavaScript
我们再来看attack_file.html的代码:'