Heim > Artikel > Betrieb und Instandhaltung > 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
stellt eine Reihe bereit von Diensten und API-Schnittstellen
Andoroid Common Komponenten
Aktivitätsaktivitäten
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 betreffenMODE_PRIVATE
SQLiteDatabases
Daten/Datenpaketname/Datenbank/*.db
Erkennungsmethode
Ü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)
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
Überprüfen Sie, ob dies der Fall ist return-void
Ein Fehler bei der Zertifikatsüberprüfung führt zu einer Ausnahme, und dann behandelt die Anwendung die Ausnahme bei der Zertifikatsüberprüfung
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#🎜🎜 #
# ## erhalten
ECB-Modus ist anfällig für Analyse- oder Replay-Angriffe#🎜 🎜#
beliebige Codeausführung
# 🎜 🎜#
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
# 🎜🎜#
Debug-Modus-Analyse
Versuchen Sie den Betrieb/die Schwachstellenüberprüfung #🎜 ## ## 🎜🎜#
-
Automatisiertes Assistenzsystem
private WebView webView;
#🎜 🎜# privat String-URL;
@Override
protected void onCreate(Bundle savedInstanceState) {
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的代码:'