paint-brush
Una falla no revelada anteriormente permitió a los piratas informáticos secuestrar millones de sistemas mediante archivos de apariencia inocentepor@psychopper
338 lecturas
338 lecturas

Una falla no revelada anteriormente permitió a los piratas informáticos secuestrar millones de sistemas mediante archivos de apariencia inocente

por Fikri Azhar13m2025/01/28
Read on Terminal Reader

Demasiado Largo; Para Leer

Zip Slip es una vulnerabilidad grave que está muy extendida en el proceso de extracción de archivos. El equipo de Snyk Security descubrió la vulnerabilidad y la divulgó de manera responsable 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.
featured image - Una falla no revelada anteriormente permitió a los piratas informáticos secuestrar millones de sistemas mediante archivos de apariencia inocente
Fikri Azhar HackerNoon profile picture
0-item



¿Qué es la vulnerabilidad ZIP SLIP?

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.


Cómo aprovechar el código ZIP

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.





Etapa de análisis de vulnerabilidad


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.




Etapa de explotación

Para tahap ini saya menyiapkan 2 hal para entorno serangan nya:

  1. 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)













¿Cómo entraste en el mundo de la ciberseguridad?

¿Por qué eres una autoridad en seguridad digital?

¿Cuál es su experiencia en este espacio?

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?

¿Existen tendencias o amenazas emergentes en materia de ciberseguridad que los lectores deberían tener en cuenta?

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 mantenerse seguro en línea?

¿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.

Pensamientos adicionales


Conclusión


Asegúrese de eliminar toda la información anterior antes de escribir y enviar su borrador. ¡Gracias!