paint-brush
Une faille jusqu'alors non révélée a permis aux pirates de pirater des millions de systèmes via des fichiers apparemment innocentspar@psychopper
338 lectures
338 lectures

Une faille jusqu'alors non révélée a permis aux pirates de pirater des millions de systèmes via des fichiers apparemment innocents

par Fikri Azhar13m2025/01/28
Read on Terminal Reader

Trop long; Pour lire

Zip Slip est une vulnérabilité grave qui est répandue dans le processus d'extraction d'archives. La vulnérabilité a été découverte et divulguée de manière responsable par l'équipe de sécurité de Snyk avant d'être rendue publique le 5 juin 2018. Le problème affecte des milliers de projets, y compris ceux appartenant à de grandes entreprises telles que HP, Amazon, Apache, Pivotal et bien d'autres.
featured image - Une faille jusqu'alors non révélée a permis aux pirates de pirater des millions de systèmes via des fichiers apparemment innocents
Fikri Azhar HackerNoon profile picture
0-item



Qu'est-ce que la vulnérabilité ZIP SLIP ?

Zip Slip est une vulnérabilité grave qui est répandue dans le processus d'extraction d'archives, permettant aux attaquants d'écrire n'importe quel fichier sur le système. En règle générale, cela entraîne une RCE (Remote Code Execution) . La vulnérabilité a été découverte et divulguée de manière responsable par l'équipe de sécurité de Snyk avant d'être rendue publique le 5 juin 2018. Le problème affecte des milliers de projets, y compris ceux appartenant à de grandes entreprises telles que HP, Amazon, Apache, Pivotal et bien d'autres.


Zip Slip est exploité via des archives spécialement conçues avec des noms de fichiers qui incluent un parcours de répertoire (eg, ../../evil.sh) . Cette vulnérabilité peut se produire dans de nombreux formats d'archive, tels que tar, ghz, jar, war, cpio, apk, rar et 7z.


Le cœur de cette vulnérabilité est la traversée de répertoires, où un attaquant peut accéder à des parties des fichiers système en dehors du dossier cible. L'attaquant peut alors remplacer le fichier exécutable et l'exécuter à distance, ou attendre que le système ou l'utilisateur appelle le fichier, afin de pouvoir exécuter des commandes sur la machine de la victime. De plus, cette vulnérabilité peut également causer des dommages en écrasant les fichiers de configuration ou d'autres ressources sensibles, et peut être exploitée à la fois sur la machine de l'utilisateur et sur le serveur.


Comment exploiter un glissement de code postal

Vous devez d'abord me permettre d'exploiter la vulnérabilité ZIP Slip avec une application Android qui a déjà été développée pour vous aider à démarrer.


Vous avez également utilisé Google Maps pour télécharger des cartes locales Kita Harus MenTélécharger la ressource en cliquant sur le bouton + layar.


Tetapi sebelum kita analyse Flow dari cara kerja apk ini kita harus memakai apk Burpsuite. Pour que votre apk Burpsuite soit une application, vous pouvez utiliser des applications Web et mobiles. Alat ini berfungsi untuk mendeteksi kerentanan, menganalisis, and mengatasi masalah keamanan .


Anda bisa mendownload Tools nya dengan Cliquez sur le lien ci-dessous :

https://portswigger.net/burp/communitydownload


Vous avez besoin d'intercepter des cartes de kit de mau menambahkan nya, et d'analyser kalau apk dans la location karena permintaan API nya masih memakai protocol HTTP tidak menggunakan HTTPS yang dimana memungkinkan Attacker tidak hanya bisa melihat traffic yang di kirim et diterima, Tetapi juga bisa manipuler/memodifikasi request et réponse nya secara Cleartext.


Et il n'y a rien de plus simple que de mémoriser HTTP dans la zone sélectionnée, Contohnya jenis serangan yang sedang kita buat ini.



Nous vous proposons d'utiliser JADX pour utiliser les outils d'ingénierie inverse qui vous permettent d'analyser statiquement efficacement pour créer des applications permettant de structurer et de loger des applications.


Définir l'analyse du fichier network_security_config.xml en utilisant la configuration cleartextTrafficPermitted="true" . Il est donc possible de configurer le trafic en texte clair pour permettre le domaine yang diizinkan. Tetapi apakah domain ini benar-benar digunakan pour le résumé de CleartextTraffic. Bisa saja ini dibuat hanya untuk pengujian / tidak digunakan dalam production.



ini adalah Hasil intercepter ketika kita mentélécharger des cartes nya yang dimana dia mengambil fichier ZIP au format .ghz





Dan mencoba mendownload file .ghz secara manual dengan copas di laptop. Berikut adalah isi fichier ZIP laconique.


Pour récupérer les données de recherche, vous devez décompresser une autre application avec la commande find / | grep australia oceania_nauru.map de l'émulateur mobile shell adb nya et pastikan juga kalau kita sudah memiliki akses root di emulatornya.





Vous devez dilihat kalau path file yang di décompresser à partir de :

/data/media/0/Android/data/io.hextree.pocketmaps/files/Download/pocketmaps/maps/

Ici, vous trouverez ce menu et vous aurez besoin d'une application benar-benar meng-unzip file map nya.





Étape d'analyse de la vulnérabilité


Mari kita lihat lebih dekat pada arbitraire file write Vulnerability dalam aplikasi nya, Seperti yang sudah kita ketahui issue nya terkait dengan File ZIP Maps Handling. Analyse statique Lakukan lagi avec mot-clé mencari : ZipEntry agar mengetahui class kode nya meng-handle file ZIP mapnya.



Sebelum kita analyse lebih dalam code nya, dit akan mengikuti panduan dari snyk team pour mencari kode yang sering diimplementasi tetapi rentan. Berikut adalah salah satu panduan yang khusus pour bahasa java, Bisa baca lebih lanjut : https://github.com/snyk/zip-slip-vulnerability

Avantages :

Kode berikut rentan terhadap serangan zip slip karena tidak melakukan validasi yang memadai terhadap jalur file dalam arsip zip sebelum mengekstraknya. Ici, e.getName() donne un nom de fichier à un autre fichier, seperti ../../malicious.sh . Il s'agit d'un fichier succinct jusqu'à la destination de destinationDir yang ditentukan.

 InputStream input = zip.getInputStream(e); IOUtils.copy(input, write(f));

Setelah file dibuat, konten file langsung disalin tanpa memeriksa jalur keluaran apakah sudah aman atau tidak. J'ai juste un menu succinct qui vous permet d'accéder à l'application racine, dans le dossier du système racine dans lequel vous avez déjà trouvé les diakses oleh aplikasi, c'est-à-dire qu'il y a du contenu dans l'application.


Karena kita sudah mengetahui kode yang rentan sesuai panduan mari kita code d'analyse de l'apk nya :

Chemin Pembuatan Tanpa Validasi :

 String str3 = file.getAbsolutePath() + File.separator + nextEntry.getName();

Ici, j'ai un fichier ( str3 ) indiquant le chemin d'accès indiqué dans votre fichier ( file.getAbsolutePath() ) avec le nom de l'entrée zip ( nextEntry.getName() ). Cependant, nextEntry.getName() vous permet d'accéder au chemin d'accès des éléments en fonction de ../../ , et de créer un fichier sous la direction de votre fichier ( file ).

Dessin du chemin Setelah, fichier atau direktori dibuat langue:

 if (nextEntry.isDirectory()) { new File(str3).mkdir(); } else { e(zipInputStream, str3, eVar, "" + i3 + " Unzipping " + str2, size, null); }

Je membuat atau menulis file tanpa memastikan bahwa str3 adalah jalur yang aman.




Phase d'exploitation

Pour que cela se produise, 2 heures pour l'environnement sont les suivantes :

  1. Configuration de l'environnement de moquerie HTTP dynamique : extension HTTP Mock de burpsuite pour cette réponse ainsi que de l'application avec les règles mencocokkan et input manual http history . Pada contoh dibawah ini saya merubah réponse nya dengan memilih Redirect to URL, sehingga setiap réponse aplikasi secara temps réel akan mengambil réponse dari HTTP Mock.


2. Configuration de l'environnement du serveur local : vous pouvez demander à ce que le kit de cocokkan soit redirigé vers un serveur local malveillant pour obtenir un zip malveillant :

 from flask import Flask, jsonify, send_file import zipfile, io app = Flask(__name__) @app.route('/map.json') def map_json(): response = { "maps-0.13.0_0-path": "maps", "maps-0.13.0_0": [ {"name": "maliciousmaps_USA", "size": "300k", "time": "2025-01"}, ] } return jsonify(response) @app.route('/map.ghz') def map_archive(): # Create a ZipFile object zip_buffer = io.BytesIO() filename = "../../downloads/hax" with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zip_file: content = "You have been hacked" zip_file.writestr(filename, content) zip_buffer.seek(0) return send_file( zip_buffer, mimetype='application/zip', as_attachment=True, download_name='map.ghz' ) if __name__ == '__main__': app.run(debug=True, port=1234)













Comment êtes-vous arrivé dans la cybersécurité ?

Pourquoi êtes-vous une autorité en matière de sécurité numérique ?

Quelle est votre expertise dans ce domaine ?

La cybercriminalité est en constante évolution. Quelles sont les nouveautés dans le monde de la cybercriminalité que la communauté HackerNoon pourrait connaître dans le cadre de la lutte contre les fraudeurs numériques ?

Existe-t-il des tendances ou des menaces émergentes en matière de cybersécurité auxquelles les lecteurs devraient prêter attention ?

Chevaux de Troie, malwares, logiciels espions et bien plus encore. Que savez-vous des derniers bugs qui pourraient infecter nos chers PC et voler nos informations ? Mais ce n'est pas tout : faites-nous savoir quels autres cyber-malveillants existent !

Comment assurer votre sécurité en ligne ?

Comment naviguez-vous dans les nouvelles technologies présentant des vulnérabilités ? Les maisons intelligentes, l’IA et l’Internet des objets ont leurs vulnérabilités.

Réflexions supplémentaires


Conclusion


Assurez-vous de supprimer toutes les informations ci-dessus avant de rédiger et de soumettre votre brouillon. Merci !