
Une vulnérabilité de débordement de tampon dans le protocole de contrôle de Flexense SyncBreeze Enterprise v10.4.18 permet à des attaquants distants d'exécuter du code arbitraire en envoyant un paquet conçu au port TCP 9121.
L'exploit cible Sync Breeze exécuté sur Windows 10 (x86, build: 16299), affectant la version 10.4.18, où un attaquant non authentifié peut effectuer un débordement SEH via une connexion TCP, entraînant une exécution de code à distance. Cet exploit suppose que toutes les atténuations de sécurité sont désactivées (par exemple, ASLR, DEP).
Écraser l'adresse pointant vers le Handler
La nouvelle adresse 1015a2f0 est utilisée pour écraser l'ancienne adresse qui référençait la fonction _except_handler. Cette nouvelle adresse pointe vers les instructions assembleur suivantes :
pop eax ; esp += 0x04
pop ebx ; esp += 0x04
ret ; esp now points to the buffer
Sauter par-dessus l'adresse écrasée
Après que l'exécution se poursuit dans le tampon, il est nécessaire de faire un jmp par-dessus l'adresse précédemment écrasée (1015a2f0) car celle-ci sera maintenant interprétée comme une instruction, cela se fait avec : jmp 0xffffff93.
Aligner la pile avec le tampon
Pour préparer une exécution stable et cohérente du shellcode fourni, nous alignons le pointeur de pile avec le tampon de sorte que esp pointe vers le début du nop-sled de taille dynamique.
Exécuter le shellcode
Lorsque le pointeur esp pointe vers le début du nop-sled, nous exécutons simplement l'instruction jmp esp pour exécuter le shellcode. Le shellcode peut contenir au maximum 400 octets, vous pouvez augmenter cette plage en remappant le nop-sled et/ou le padding.
Lors de la création/génération du shellcode, il est important d'éviter les mauvais caractères suivants : \x00\x02\x0A\x0D.
graph TB
subgraph s1["1: obtenir l'exécution"]
a1["écraser l'adresse pointant vers le <code>Handler</code>"]
a2["récupérer l'adresse du tampon depuis la pile (p/p/r)"]
a3["sauter par-dessus l'adresse écrasée (de : p/p/r)"]
a1 --> a2 --> a3
end
subgraph s2["2: atteindre le tampon"]
b1["aligner <code>esp</code> avec le début du <br> nop-sled (ajouter : 0xe70)"]
b2["sauter vers <code>esp</code> pour <br> exécuter le <span style="color:red">shellcode</span>"]
b1 --> b2
end
s1 --> s2

python3 exploit.py --host <host> --port <port> --file <file>
| Option | Description |
|---|---|
| host | l'interface sur laquelle Sync Breeze écoute |
| port | le port sur lequel Sync Breeze écoute |
| file | la sortie brute de msfvenom |