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-2025-59712_CVE-2025-59713 — Snipe-IT PoC exploit for CVE-2025-59712 and CVE-2025-59713 | Kitploit
Ferramentas/GitHubGitHub/synacktiv/cve-2025-59712_cve-2025-59713
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubsynacktiv/cve-2025-59712_cve-2025-59713

CVE-2025-59712_CVE-2025-59713

Snipe-IT PoC exploit for CVE-2025-59712 and CVE-2025-59713

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
23há 10 mesesAinda não revisado

PoC para CVE-2025-59712 e CVE-2025-59713

Este PoC fornece um script automatizado para explorar CVE-2025-59712 (XSS no cabeçalho User-Agent) e CVE-2025-59713 (desserialização insegura).

Contexto

Estas duas vulnerabilidades foram descobertas pela Synacktiv durante uma pesquisa de vulnerabilidades no software Snipe-IT. O Snipe-IT é um sistema de gestão de ativos open-source baseado em Laravel, projetado para ajudar organizações a rastrear e gerir seus ativos físicos e digitais.

Um artigo técnico pode ser encontrado no aviso de segurança dedicado no site da Synacktiv.

Modos

Este script fornece três subcomandos, correspondentes aos modos de exploração: xss, rce e fullchain.

XSS

Este subcomando explora a CVE-2025-59712, que permite a um utilizador com privilégios reduzidos injetar JavaScript arbitrário na página HTML renderizada ao aceder à rota /reports/activity. Isto só pode ser feito por um administrador ou por um utilizador com permissões explícitas de visualização de relatórios. A injeção é possível devido à sanitização inadequada do campo User-Agent quando um utilizador atualiza as suas informações de perfil.

Para isso, fará primeiro login como o utilizador com privilégios reduzidos e depois injetará o código JavaScript definido no ficheiro fornecido através da flag --javascript.

root@kitploit:~
$ python3 exploit.py xss --help

 Usage: exploit.py xss [OPTIONS]

 Execute XSS attack only with custom JavaScript payload

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --url         -u       TEXT                    Target Snipe-IT URL [required]                                                                                                             │
│ *  --login       -l       TEXT                    Low-privileged username [required]                                                                                                         │
│ *  --password    -p       TEXT                    Low-privileged password [required]                                                                                                         │
│ *  --new-name    -n       TEXT                    New name for low-privileged user [required]                                                                                                │
│ *  --javascript  -js      TEXT                    Path to custom JavaScript file [required]                                                                                                  │
│    --proxy       -x       TEXT                    HTTP proxy (http://ip:port)                                                                                                                │
│    --verbose     -v       [quiet|normal|verbose]  Logging verbosity [default: normal]                                                                                                        │
│    --help                                         Show this message and exit.                                                                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

[!IMPORTANTE]
Durante a pesquisa de segurança, os testes foram realizados numa versão do Snipe-IT que, por predefinição, exibia o campo User-Agent no qual o JavaScript malicioso é injetado. Desde o commit 10e5d88, a propriedade User-Agent não é exibida por predefinição quando a tabela de registo de ações é renderizada. O administrador que irá acionar o XSS precisa, portanto, de ter marcado a caixa User-Agent nas opções de visualização para versões do Snipe-IT posteriores a este commit.

RCE

Este subcomando explora a CVE-2025-59713, que permite execução remota de código quando são conhecidas as credenciais de um administrador ou superadministrador. Para tal, são executados os seguintes passos:

  1. É acionada uma cópia de segurança da instância Snipe-IT.
  2. A cópia de segurança gerada é descarregada, editada em memória e enviada de volta para o Snipe-IT. A edição da cópia de segurança inclui instruções SQL adicionais no ficheiro db-dumps/mysql-snipeit.sql, que criam um novo campo personalizado e editam o último registo de ação com um objeto JSON contendo a cadeia de pop do Laravel durante a restauração.

[!DICA] Por predefinição, o Snipe-IT inclui o ficheiro .env na cópia de segurança. Se o script o detetar, o valor de APP_KEY é exibido e o ficheiro .env é guardado no diretório ./output (pode ser especificada uma localização personalizada para esse ficheiro com --output-dir).

  1. É acionada uma restauração a partir da cópia de segurança editada, que executará as instruções SQL adicionadas.

[!CUIDADO] Restaurar uma cópia de segurança desconecta todos os utilizadores ligados à instância.

  1. Assim que a restauração estiver concluída, a rota /api/v1/reports/activity é chamada, o que aciona a desserialização e executa a cadeia de pop do Laravel.
root@kitploit:~
$ python3 exploit.py rce --help

 Usage: exploit.py rce [OPTIONS]

 Execute RCE attack only (requires existing admin account)

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --url         -u       TEXT                    Target Snipe-IT URL [required]                                                                                                             │
│ *  --admin-user  -au      TEXT                    Admin username [required]                                                                                                                  │
│ *  --admin-pass  -ap      TEXT                    Admin password [required]                                                                                                                  │
│    --output-dir  -od      PATH                    Output dir for .env file [default: /home/ninja/Téléchargements/snipe-it-advisory/exploit/output]                                           │
│    --shell-ip    -si      TEXT                    Reverse shell IP address                                                                                                                   │
│    --shell-port  -sp      INTEGER                 Reverse shell port                                                                                                                         │
│    --command     -c       TEXT                    Custom command (overrides reverse shell)                                                                                                   │
│    --proxy       -x       TEXT                    HTTP proxy (http://ip:port)                                                                                                                │
│    --verbose     -v       [quiet|normal|verbose]  Logging verbosity [default: normal]                                                                                                        │
│    --help                                         Show this message and exit.                                                                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Fullchain

O subcomando fullchain tem como objetivo encadear ambas as vulnerabilidades XSS e RCE. Corresponde a um cenário em que apenas tem acesso a um utilizador com privilégios reduzidos e pretende obter execução remota de código. Isto só funcionará se o utilizador que visitar a página /reports/activity for um administrador ou superadministrador. De facto, apenas estes papéis têm direitos para criar e restaurar uma cópia de segurança, o que é necessário para envenenar a base de dados e acionar posteriormente a cadeia de pop do Laravel.

Para isso, o script irá:

  1. Formatar um modelo JavaScript com uma cadeia de pop do Laravel que executará, por predefinição, uma shell reversa bash (pode personalizar esta opção com a flag --command, tal como no modo RCE).
  2. Fazer login como o utilizador com privilégios reduzidos e injetar o campo User-Agent com uma tag <script> para forçar o navegador da vítima a carregar o modelo JavaScript malicioso.
  3. Iniciar um servidor HTTP rogue para distribuir o modelo mencionado, bem como as suas dependências.
  4. Quando um administrador ou superadministrador visitar a rota /reports/activity, o XSS é acionado e o JavaScript malicioso é carregado e executado pelo navegador da vítima. A partir daí, são executados os mesmos passos que no módulo RCE, mas em JavaScript.
  5. Quando a cópia de segurança é restaurada, o navegador da vítima emite um pedido GET (callback) para o servidor HTTP Python para notificar que a cópia de segurança foi restaurada e que a rota da API para acionar o RCE pode ser chamada.

Este modo utiliza várias bibliotecas JavaScript adicionais, todos os créditos vão para os seus respetivos autores:

  • crypto-js.js: Utilizado para realizar operações criptográficas, o código original pode ser encontrado aqui.
  • jszip.js e jszip-utils.js: Utilizados para edição em memória de ficheiros ZIP. Os repositórios oficiais podem ser encontrados respetivamente aqui e aqui.
root@kitploit:~
$ python3 exploit.py fullchain --help

 Usage: exploit.py fullchain [OPTIONS]

 Execute full attack chain: XSS -> Backup manipulation -> RCE

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --url         -u       TEXT                    Target Snipe-IT URL [required]                                                                                                             │
│ *  --login       -l       TEXT                    Low-privileged user's username [required]                                                                                                  │
│ *  --password    -p       TEXT                    Low-privileged user's password [required]                                                                                                  │
│ *  --new-name    -n       TEXT                    New name for low-privileged user [required]                                                                                                │
│    --ip          -i       TEXT                    HTTP server IP address (default: auto-detect)                                                                                              │
│ *  --port        -P       INTEGER                 HTTP server port [required]                                                                                                                │
│    --admin-user  -au      TEXT                    Admin username to create [default: admin_rce]                                                                                              │
│    --admin-pass  -ap      TEXT                    Admin password to create [default: password123]                                                                                            │
│    --shell-ip    -si      TEXT                    Reverse shell IP address                                                                                                                   │
│    --shell-port  -sp      INTEGER                 Reverse shell port                                                                                                                         │
│    --command     -c       TEXT                    Custom command (overrides reverse shell)                                                                                                   │
│    --proxy       -x       TEXT                    HTTP proxy (http://ip:port)                                                                                                                │
│    --verbose     -v       [quiet|normal|verbose]  Logging verbosity [default: normal]                                                                                                        │
│    --help                                         Show this message and exit.                                                                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Instalação

Para executar este script, execute os seguintes comandos:

root@kitploit:~
$ git clone https://github.com/synacktiv/CVE-2025-59712_CVE-2025-59713
$ cd CVE-2025-59712_CVE-2025-59713
$ python3 -m venv .venv && source .venv/bin/activate
$ python3 -m pip install -r requirements.txt

Dockerfile para ambiente de teste

Também é fornecido um Dockerfile para experimentar o script e reproduzir a exploração da vulnerabilidade. Ele puxa uma versão vulnerável do Snipe-IT, configura a base de dados com php artisan e define dois utilizadores:

  1. Utilizador admin com uma palavra-passe predefinida AdminPassword123!
  2. Utilizador lowpriv com uma palavra-passe predefinida LowPrivUser123!

Antes de executar o contentor, os ficheiros .env e snipe-it.conf precisam de ser atualizados com o URL da instância Snipe-IT:

root@kitploit:~
$ sed -i 's|^APP_URL=.*|APP_URL=http://<IP>:<PORT>|' .env
$ sed -i 's|\(ServerName\s*\).*|\1http://<IP>:<PORT>|' snipe-it.conf

O contentor pode então ser executado:

root@kitploit:~
$ docker build . -t "snipe-it-cve"
$ docker run -p 80:80 --name "snipe-it-debian" snipe-it-cve:latest
Baixar ferramenta