No description
  • HTML 70.6%
  • Rust 29.1%
  • Shell 0.3%
Find a file
2026-07-26 10:10:55 +02:00
.claude feat: inicital commit 2026-07-26 10:10:55 +02:00
docs feat: inicital commit 2026-07-26 10:10:55 +02:00
src feat: inicital commit 2026-07-26 10:10:55 +02:00
.gitignore feat: inicital commit 2026-07-26 10:10:55 +02:00
Cargo.lock feat: inicital commit 2026-07-26 10:10:55 +02:00
Cargo.toml feat: inicital commit 2026-07-26 10:10:55 +02:00
CLAUDE.md feat: inicital commit 2026-07-26 10:10:55 +02:00
README.md feat: inicital commit 2026-07-26 10:10:55 +02:00
tarpaulin-report.html feat: inicital commit 2026-07-26 10:10:55 +02:00

jeager_test

Painel TUI (Terminal User Interface) para pentest e reconhecimento de segurança. Desenvolvido em Rust com Ratatui, oferece 5 módulos especializados para análise estática, scanning de infraestrutura e integração com ferramentas externas via MCP (Model Context Protocol).

Rust License


Sumário


Funcionalidades

1. Servidor — TCP Port Scanner

  • Scan sequencial de portas (22, 80, 443, 3306, 8080)
  • Identificação automática de serviços (SSH, HTTP, HTTPS, MySQL, etc.)
  • Estados: Aberta, Fechada, Filtrada
  • Filtro por estado + navegação por resultado

2. PHP — Analisador Estático de Código

  • Scan de arquivos .php em diretório (top-level)
  • Detecção de vulnerabilidades:
    • RCE: eval(), exec(), system(), shell_exec(), passthru(), proc_open()
    • SQL Injection: padrões de query concatenada
    • XSS: echo/print sem escape
    • LFI/RFI: include/require com input controlável
    • Unserialize: unserialize() em dados não confiáveis
    • Header Injection: header() com input do usuário
  • Classificação por severidade: [ALTA], [MEDIA], [BAIXA]
  • Filtro por severidade + navegação detalhada

3. WordPress — Reconhecimento e CVE Matching

  • Fingerprinting HTTP: detecta se o alvo é WordPress
  • Extração de versão, tema ativo e plugins instalados
  • Enumeração de usuários via REST API (/wp-json/wp/v2/users)
  • Matching com CVEs hardcoded (WordPress core, themes e plugins populares)
  • Filtro por severidade das CVEs encontradas

4. CI/CD — Analisador de GitHub Actions

  • Scan do diretório .github/workflows/
  • Detecção de vulnerabilidades em workflows YAML:
    • Script Injection: ${{ github.event.issue.title }}, github.head_ref, etc.
    • Pwn Request: pull_request_target + actions/checkout
    • Workflow Run Inseguro: workflow_run sem validação
    • Secrets Hardcoded: AWS keys, GitHub tokens, API keys, private keys
  • Filtro por severidade + navegação por resultado

5. MCP — Model Context Protocol Client

  • Cliente JSON-RPC 2.0 over STDIO
  • Integração com servidores MCP via Docker (ex: pentest-tools-mcp)
  • list_tools: lista ferramentas disponíveis no servidor MCP
  • call_tool: invoca ferramenta com parâmetros JSON
  • Navegação por tools + visualização de output

Stack Tecnológica

Tecnologia Uso
Ratatui Renderização TUI (widgets, layout, cores)
crossterm Eventos de teclado e controle de terminal
tokio Runtime async, I/O não-bloqueante, processos
reqwest Cliente HTTP assíncrono (WordPress scanning)
serde + serde_json Serialização JSON-RPC (MCP)

Requisitos

  • Rust 1.78+ (edition 2021)
  • Docker (opcional, para o módulo MCP)
  • Para desenvolvimento: cargo-tarpaulin (cobertura de testes)
# Instalar tarpaulin (necessário apenas para dev)
cargo install cargo-tarpaulin

Instalação

# Clone o repositório
git clone <url-do-repo>
cd jeager_test

# Build de release
cargo build --release

# O binário estará em:
# ./target/release/jeager_test

Uso

# Executar diretamente
cargo run

# Ou o binário compilado
./target/release/jeager_test

A interface é dividida em:

  • Cabeçalho: título e abas dos 5 módulos
  • Painel principal (70%): resultado do módulo ativo
  • Logs (30%): mensagens de status e erros
  • Rodapé: atalhos de teclado por módulo

Fluxo típico

  1. Use / para selecionar o módulo desejado
  2. Pressione Tab para focar o campo de Alvo
  3. Digite o alvo (IP, URL ou caminho)
  4. Pressione Enter para confirmar
  5. Pressione S para iniciar o scan
  6. Use / para navegar nos resultados
  7. Pressione F para ciclar filtros (quando disponível)

Arquitetura

src/
├── main.rs           # Event loop async, handle_key_event, panic hook
├── app.rs            # Estado da aplicação, structs genéricas (ListState, WpState, McpState)
├── ui.rs             # Renderização Ratatui (draw_*_module, logs, footer)
├── php_scanner.rs    # Análise estática de código PHP
├── server_scanner.rs # TCP port scanner com trait Connector
├── wordpress_scanner.rs # HTTP fingerprinting + CVE matching
├── github_scanner.rs # Analisador de workflows GitHub Actions
└── mcp_client.rs     # Cliente JSON-RPC 2.0 MCP over STDIO

Padrões Arquiteturais

  • Trait + Mock pattern: todos os scanners usam traits para testabilidade
    • ConnectorTokioConnector (prod) / MockConnector (teste)
    • HttpClientReqwestClient (prod) / MockHttpClient (teste)
    • McpTransportStdioMcpTransport (prod) / MockMcpTransport (teste)
  • Generic ListState<T, F>: elimina duplicação de estado filtrável (PHP, Server, CI/CD)
  • FilterCycle + Filterable<F> traits: lógica de filtro genérica e type-safe
  • Panic hook: restaura terminal (raw mode + alternate screen) em caso de panic

Testes

O projeto mantém 100% de cobertura de código (linhas) como discipline de qualidade.

# Rodar todos os testes
cargo test

# Clippy (zero warnings)
cargo clippy -- -D warnings

# Formatação
cargo fmt

# Cobertura (requer cargo-tarpaulin)
cargo tarpaulin --fail-under 100

Estatísticas atuais

  • 182 testes passando
  • 897/897 linhas cobertas (100%)
  • Módulos cobertos:
    • app.rs — estado, navegação, filtros genéricos
    • php_scanner.rs — detecção de todas as categorias de vulnerabilidade
    • server_scanner.rs — port states, service mapping, connector trait
    • wordpress_scanner.rs — parsing HTML/JSON, CVE matching
    • github_scanner.rs — script injection, pwn request, secrets
    • mcp_client.rs — JSON-RPC, transport, parse/rpc/io errors
    • ui.rs — renderização de todos os módulos e estados
    • main.rs — event loop, key bindings

Controles

Tecla Ação Global
Q Sair da aplicação
Tab / Shift+Tab Alternar foco (Módulos ↔ Alvo)
/ Navegar entre módulos
Enter Confirmar alvo digitado
Esc Sair do modo de input
Backspace Apagar caractere no input
Tecla Ação no Painel
S Iniciar scan / listar tools / invocar tool
F Ciclar filtro de severidade/estado
/ Navegar resultados/tools

Roadmap

O desenvolvimento segue um plano de 3 sprints de melhoria:

Sprint A — Core Architecture & UX

  • A3: Panic hook para restaurar terminal
  • A4: Extração de estado por módulo (ListState<T,F>, WpState, McpState)
  • A1: Scans não-bloqueantes via tokio::sync::mpsc
  • A2: Cores por severidade ([ALTA] vermelho, [MEDIA] amarelo, [BAIXA] verde)

Sprint B — Scanner Quality

  • B1: Scan PHP recursivo (subdiretórios)
  • B2: Port scan concorrente (FuturesUnordered + Semaphore)
  • B3: Parsing WordPress robusto (serde_json, url::Url)
  • B4: Export de relatórios (JSON/CSV)

Sprint C — Polish & CI

  • C1: Dispatch de key handlers por módulo
  • C2: Pipeline CI (fmt, clippy, tarpaulin)
  • C3: Target input por módulo (não global)
  • C4: Uso de widget List do Ratatui

Licença

MIT


Nota de segurança: jeager_test é uma ferramenta de pentest educacional e profissional. Use apenas em sistemas que você possui autorização para testar.