ES File Explorer CVE-2019-6447 Analyse de la vulnérabilité

Nom de la vulnérabilité

ES File Explorer Ouvrir la vulnérabilité Port - CVE-2019-6447

Introduction à la vulnérabilité

ES File Explorer crée un serveur HTTP au démarrage, le port ouvert local 59777. En construisant l'attaquant peut obtenir les fichiers de téléphone de charge utile définis par l'utilisateur, installez apk et d'autres opérations.

Sphère d'influence

4.1.9.7.4 et au-dessous (certaines versions peuvent ne pas soutenir, peuvent également être des marchés et applications connexes)

Analyse de la vulnérabilité

Fs0c131y à partir des informations données dans l'application de l'incidence sur la version ES CVE-2019-64474.1.9.7.4 est moins, mais l'application ne peut pas tirer profit de la vulnérabilité dans certaines versions, telles que Huawei et téléchargé du magasin jeu de google ES vous ne pouviez pas reproduire la vulnérabilité, la charge utile a été envoyé au port 59777 retournera erreur 500 eRREUR, ce qui suit sera une analyse détaillée de la vulnérabilité.

Analyse d'application 4.1.9.4 version

Ce qui suit est une sélection de la version 4.1.9.4 des analyses de navigateur de fichiers ES, la version ES peut exploiter cette vulnérabilité.

Tout d'abord, l'APK Après avoir déballé trouvé trois fichiers DEX.

En bref vu la bibliothèque trouvée sous l'application lib dans emballeurs pas, peut déterminer le code correspondant dans classes2.dex dans le dépistage suivant avec grep 59777.

Après le décompiler de classses2.dex, commande de la fonction de recherche globale a trouvé des failles dans la classe com / EStrongs / android / f / un être, et déclencher la vulnérabilité des com / EStrongs / android / f / A.A.

Il suffit de regarder vers le bas a.class, b.class, c.class peut avoir et la vulnérabilité des services concernés, qui a.class c.class hérité.

Le regard de déposons sur la gâchette ensemble du processus de la vulnérabilité, en raison de la confusion dans le code, qu'il est jeté dans jeb ou Smali lu ensemble sont plus laborieux, après quoi nous pourrons commencer à déplacer le programme en cours d'exécution lors de l'enregistrement de trace, analyser un fichier de trace Android pour afficher l'appel de fonction pile (en utilisant TraceReader lire).

Le procédé d'enregistrement de la trace suivante:

Après le succès de Trace DDMS ouvert, nous allons construire la charge utile pour déclencher la vulnérabilité, la vulnérabilité spécifique voir exploiter la charge utile github (https://github.com/fs0c131y/ESFileExplorerOpenPortVuln).

boucle --header "Content-Type: demande / JSON" POST --request --data "{\" commande \ ": getDeviceInfo}" http: //192.168.137.10: 59777 -vvv

Le fichier traceur jeté TraceReader voir la pile d'appel, se trouve dans le programme entré com / EStrongs / android / f / c $ a.run () V pour faire face à notre demande, faire attention à instancier un objet de cette classe est en fait a.class au lieu c.class. :

Premier tampon douille de réception est alors lu pour extraire des données

Ensuite, le jugement n'est pas poster les données, si la demande est un poste du type de contenu de l'analyse syntaxique, lorsque toutes les préanalysée au dernier programme viendra label_189

label_189, effectuer la v2_7 = this.a.a_parse_url_other_data (v9, v10, v11, v6, v7); en outre analyser et exécuter la commande correspondante.

Il y a un problème, si JEB double-cliquez simplement pour accéder à la fonction de suivi sera fonction de leur propre classe, et l'appel réel est vraiment a.class (com / com / EStrongs / android / f / a) fonction a_parse_url_other_data en (ici Je suis confondu avec le nom de la fonction pour renommer le nom de la fonction d'origine est en fait a).

Le chiffre est faux de sauter à la fonction JEB de la position, en fait, nous analysons est a.class en a_parse_url_other_data:

Continuez à suivre vers le bas où nous venons de commencer une échappatoire déclenchée (com / EStrongs / android / f / A.Une):

L'analyse de cet endroit a fait beaucoup d'articles et fait, il n'y a plus beaucoup mentionné.

Après l'analyse de la commande correspondant à appeler la fonction retourne la fonction correspondant JSON:

Enfin, entrez com / EStrongs / android / f / c $ A.Une (Ljava / lang / String; Ljava / lang / String; Ljava / util / Propriétés; Ljava / io / InputStream;) réponse V va écrire de nouveau.

La fonction retourne le résultat est écrit dans le OutputStream est ensuite retourné.

Le déclencheur version ES la vulnérabilité de l'ensemble du processus sera généralement indiqué ci-dessus.

Il faut faire attention, si ce ne sont pas des applications vulnérables ES v2_7 est nul également entrer this.a ( "500 Internal Server Error", "SERVEUR ERREUR INTERNE :. Serve () a renvoyé une réponse nulle" ), en, ce qui est beaucoup ES applications seront appliquées sur le marché à 500 cause du rapport d'erreur.

Analyse 4.1.6.6.1 Version

4.1.6.6.1 Les versions suivantes analyseront ES Gestionnaire de fichiers, le fichier Manager version ES ne déclenche pas avec succès la vulnérabilité.

Pelotonner un regard direct, une erreur 500.

Déballage une lecture statique, et essentiellement le code dans le package f, mais plus que beaucoup d'autres classes, a.class est encore le lieu ESHttpServer atteindre.

pelotonner Ensuite, une capture de paquets ce que la pile d'appel.

boucle --header "Content-Type: application / json" POST --request --data "{\" commande \ ": getDeviceInfo}" http :. //192.168.0122: 59777 -vvv

Mauvais un peu plus que la découverte d'un certain nombre de fonctions dans cette version de l'ES, il peut être fait dans un certain nombre de logique de validation.

code d'analyse statique et trouvé à l'avant de la logique et presque avant l'application, mais après l'exécution com.estrongs.android.f.h.a (Ljava / lang / String; Ljava / util / Propriétés); V puis appelez bJ.

Avec bj bj vérifié et la méthode ap.a url () Détecte si l'environnement actuel est dans un environnement WIFI.

Continuez à suivre vers le bas, nous arrivons aux problèmes! Bp.q () ||! F.e (v8)) &&! F.Un (v8, v2_5) retourne vraie cause flag_object ici, donc le serveur renvoie 500 une valeur nulle.

bq.q () est vraie ou f.e et F.Un dans la logique vrai

Suivi Entrez bq.q (), pour répondre à la bp.p () et cw.e () sont vraies.

Le FexApplication.a (). GetSystemService ( "uiMode"). GetCurrentModeType () == 4 établie lorsque bp.p () pour vrai, selon les documents officiels uiMode 4 est UI_MODE_TYPE_TELEVISION.

En cw.e la nécessité de répondre à certaines exigences longueur et la largeur Interface

booléennes v0_1 = Math.sqrt (Math.pow ((((double) v0.heightPixels)) * 1 / (((doubles) v0.densityDpi)), 2) + Math.pow ((((double) v0.widthPixels )) * 1 / (((double) v0.densityDpi)), 2)) > ? = 20 vrai: false;

Alors que l'autre f.e (v8), F.Un (v8, v2_5) fonction est responsable de vérifier notre ip.

En outre, il y a une autre situation où notre IP est 127.0.0.1 quand flag_object ne peut pas nulle, mais vous devez d'abord remplir les conditions pré-v4 = null.

Voir v4 = as.bJ (v9), ont dit avant que la fonction est bJ responsable de vérifier l'URL, et puis nous retournons à bJ trouvé nulle de retour ne semble pas probable, quel que soit v9 uri sera construit avec « / » démarrer.

Cette demande ES version sur le marché, que ce soit pour aller si ((! Bp.q () ||! Fe (v8)) &&! Fa (v8, v2_5)) ou marcher si (v4! = NULL && comme. I (v4)! = 0) semblent ne peux pas commencer à flag_object = v8_1.a (v9, v10, v11, v6, v7) logique, donc ne serait pas en mesure de déclencher la vulnérabilité, mais peut-être il y a d'autres méthodes pour contourner J'espère que nous pouvons ajouter beaucoup.

Documents de référence

https://www.chainnews.com/articles/873565939043.htm

https://www.52pojie.cn/thread-856993-1-1.html

https://blog.csdn.net/caiqiiqi/article/details/86558862

https://bbs.ichunqiu.com/thread-49689-1-1.html

* L'auteur: xcy_merlin, réimpression s'il vous plaît préciser de FreeBuf.COM

Le premier lot de l'iPhone XS est prêt à bateau, titres intéressants presque égale à la valeur de marché de Sina, Amazon en Chine violation grave de données | Lei Feng Matin
Précédent
Parce que l'autisme, il maniait un marteau à sa fille.
Prochain
Chery Yi RAJ 5 Sport mis en vente Wan 7,69 à 9,79
choses tour auxiliaires autour, la viande moitié Sun Bin fait sauter le public
"Wandering la Terre" directeur Guo Fan "In the Mood engagé dans" James Cameron: la culture du cinéma chinois devrait être confiant
Pompage de la chaussure n'a pas d'importance, il est important de vous accompagner autour de fumer amis! | Chaussures juillet tableau des ventes
Notre forme de ville, de prise, mais pas de ville modèle, les experts ont appelé à une théorie de la conception de haut niveau complet et méthodes | Smart City Weekly
Chaque souffle est un endroit douloureux où la santé des enfants et de l'éducation?
Le nouveau X3 Dongfeng populaires roi Plaza officiellement mis en vente à partir de 66900
Angela vous immergent dans ce qui est exactement la pointe du goût
Kanye réclame alors 10 millions de dollars des États-Unis, l'atterrissage à la mode bazar d'été à Shanghai | Chao Wen fast food
Xiao Bian 599 $ pour commencer petit haut-parleur d'amour HD « oreille bois » peut également entendre l'ascenseur
« Louange de sable de Thunder! « Fête des lanternes pour envoyer des bénédictions que le héros drôle pour tout le monde a crié de manger des boulettes énigmes
Les écoles installent « artefact anti-brume » Il y a tellement difficile?