Daniel Moreno Novatec
Novatec Editora Ltda. 2017. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates PY20170922 Revisão gramatical: Tássia Carvalho Editoração eletrônica: Carolina Kuwabata Capa: Carolina Kuwabata ISBN: 978-85-7522-613-1 Histórico de impressões: Outubro/2017 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 Email: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
Sumário Agradecimentos...15 Isenção de responsabilidade...16 Sobre o autor...17 Prefácio...18 Nota inicial...20 Parte I Introdução... 22 Capítulo 1 Introdução ao HTML...23 1.1 Introdução ao HTML... 23 1.2 Estrutura do documento HTML...24 1.3 Abertura e fechamento de tags...24 1.4 Principais tags... 25 1.4.1 <!-- -->...26 1.4.2 <a>...26 1.4.3 <b>...26 1.4.4 <br>...27 1.4.5 <div>...27 1.4.6 <form>...28 1.4.7 <h1>, <h2>, <h3>, <h4>, <h5> e <h6>...30 1.4.8 <iframe>...30 1.4.9 <img>...30 1.4.10 <input>...31 1.4.11 <meta>...33 1.4.12 <pre>...33 1.4.13 <script>...34 7
8 Pentest em Aplicações Web 1.4.14 <span>...34 1.4.15 <textarea>...34 1.5 Principais atributos das tags...34 1.5.1 class...35 1.5.2 disabled...36 1.5.3 hidden...36 1.5.4 id...36 1.5.5 maxlength...37 1.5.6 style...37 Capítulo 2 Introdução ao CSS...38 2.1 Introdução ao CSS...38 2.1.1 Arquivo externo...38 2.1.2 Tag <style>...41 2.1.3 Atributo style...41 2.2 Principais propriedades do CSS...42 2.2.1 background...42 2.2.2 height e width...42 2.2.3 position...42 2.2.4 z-index... 44 Capítulo 3 Introdução ao PHP...45 3.1 Introdução ao PHP...45 3.2 Estrutura de um documento PHP... 46 3.3 Comentários...47 3.4 Finalização de instruções e quebra de linha...47 3.5 Mensagens de erros e a função phpinfo()...49 3.5.1 Mensagens de erros...49 3.5.2 phpinfo()...50 3.6 Tipos de dados...50 3.6.1 String...50 3.6.2 Numérico...55 3.6.3 Booleanos...56 3.6.4 Bits... 60 3.6.5 Variáveis... 60 3.6.6 Arrays...63 3.7 Diferença entre atribuição e comparação...66 3.8 Associatividade e precedência das operações...70
Sumário 9 3.9 Condicionais...72 3.9.1 if...73 3.9.2 if...else...75 3.9.3 if...elseif...else...76 3.9.4 switch...case...default... 77 3.10 Laços de repetição...79 3.10.1 while... 80 3.10.2 for...81 3.10.3 foreach...82 3.11 Arquivos...83 3.12 Funções...87 3.12.1 Funções e o escopo de variáveis... 90 3.12.2 Funções predefinidas...94 3.13 Cookies e sessões...112 3.13.1 Cookies...113 3.13.2 Sessões...120 3.14 Incluindo outros arquivos...121 3.14.1 include...121 3.14.2 include_once...122 3.14.3 require...123 3.14.4 require_once...123 Capítulo 4 Introdução ao SQL... 124 4.1 Introdução ao SQL...124 4.1.1 Acessando o MySQL...124 4.1.2 Criando a base de dados...125 4.1.3 Criando tabelas...126 4.1.4 Inserindo valores...128 4.1.5 Consultando valores...128 4.1.6 Atualizando valores...131 4.1.7 Removendo valores...132 4.1.8 Tabela information_schema...132 4.2 Operadores e funções do SQL...134 4.3 Integrando o MySQL ao PHP...137 4.4 Criando manualmente uma página de phishing...140
10 Pentest em Aplicações Web Parte II Pentest em aplicações web...145 Capítulo 5 Introdução ao web pentest...146 5.1 Introdução ao pentest web...146 Capítulo 6 Reconhecimento... 149 6.1 Google Hacking...149 6.1.1 Operadores especiais...151 6.1.2 Mineração de dados...156 6.1.3 Consultas ofensivas...158 6.2 Shodan...163 6.3 Arquivo robots.txt...164 6.4 Ícone de sites...165 6.5 Mensagens de erro...165 6.6 Clonagem de sites...166 6.6.1 wget...166 6.6.2 httrack...168 6.7 Mapeamento da infraestrutura...168 Capítulo 7 Scanning... 170 7.1 Whatweb...170 7.2 Nmap...171 7.3 Nmap Scripting Engine (NSE)...173 7.3.1 Categoria auth...178 7.3.2 Categoria brute...184 7.3.3 Categoria default...189 7.3.4 Categoria discovery...195 7.3.5 Categoria DoS...204 7.3.6 Categoria exploit...204 7.3.7 Categoria external...206 7.3.8 Categoria fuzzer...207 7.3.9 Categoria safe...208 7.4 Dirb...208 7.5 Dirbuster...211 7.6 Burp Suite...217 7.6.1 Configurando o browser...218 7.6.2 Conexões HTTPS...221 7.6.3 Capturando e modificando conexões via proxy...222 7.6.4 Aba Target...227
Sumário 11 7.6.5 Aba Proxy...235 7.6.6 Aba Spider...243 7.6.7 Aba Scanner...250 7.6.8 Aba Intruder...250 7.6.9 Aba Repeater...265 7.6.10 Aba Sequencer...266 7.6.11 Aba Decoder...268 7.6.12 Aba Comparer...268 7.6.13 Aba Extender... 274 7.6.14 Aba Project options...276 7.6.15 Aba User options...279 7.7 Proxies alternativos...279 Capítulo 8 Exploração de falhas...281 8.1 A1 Injeção...282 8.1.1 Injeção SQL...282 8.1.2 Injeção em formulários de e-mail... 311 8.1.3 Injeção de códigos (code injection)... 316 8.1.4 Injeção de comandos (command injection)...319 8.1.5 Injeção HTML...321 8.1.6 Injeção XPATH...324 8.1.7 Injeção XPATH às cegas (blind XPath injection)...326 8.1.8 Injeção SOAP...328 8.1.9 Injeção LDAP...329 8.1.10 Injeção em iframes...330 8.2 A2 Quebra de autenticação e gerenciamento de sessão...330 8.2.1 Senhas esquecidas...332 8.2.2 Senhas em formulários...333 8.2.3 Validação de logins (JavaScript)...333 8.2.4 Ataques de força bruta...335 8.2.5 Botões de sair (logout)...352 8.2.6 Gerenciamento de cookies...354 8.2.7 ID de sessão na URL...359 8.2.8 Fixação de sessão (Session fixation)...362 8.3 A3 Cross-site Scripting...364 8.3.1 XSS refletido...365 8.3.2 XSS armazenado...375 8.3.3 XSS baseado em DOM...376 8.3.4 Cross-site Tracing...377 8.3.5 Frameworks de exploração XSS...377
12 Pentest em Aplicações Web 8.4 A4 Quebra do controle de acesso...382 8.4.1 Formulários inseguros para troca de senhas...383 8.4.2 Travessia de diretórios (Directory traversal)...385 8.4.3 Inclusão de arquivos locais (Local File Inclusion LFI)...386 8.4.4 Inclusão de arquivos remotos (Remote File Inclusion RFI)...390 8.4.5 Server Side Request Forgery (SSRF)...392 8.4.6 XML External Entity Attacks (XXE)...393 8.5 A5 Configurações incorretas de segurança...396 8.5.1 Conta anônima habilitada no servidor FTP...396 8.5.2 CVE-2015-3306...399 8.5.3 Configurações incorretas do WebDAV...401 8.5.4 Escuta do tráfego HTTP (Man-in-the-Middle)...402 8.5.5 Escuta do tráfego HTTPS (Man-in-the-Middle)...405 8.5.6 SSLStrip... 410 8.5.7 SSLStrip2...412 8.5.8 Rogue DHCP e DHCP starvation...413 8.6 A6 Exposição de dados sensíveis... 416 8.6.1 Criptografia dos dados com base64... 416 8.7 A7 Proteção insuficiente contra ataques... 417 8.8 A8 Cross-site Request Forgery (CSRF)... 417 8.8.1 Token anti-csrf...419 8.9 A9 Utilização de componentes conhecidamente vulneráveis...423 8.9.1 CVE-2014-0160...424 8.9.2 CVE-2014-6271...427 8.9.3 Cifras SSL defasadas...428 8.10 A10 APIs não protegidas...428 8.11 Vulnerabilidades adicionais...428 8.11.1 Upload irrestrito de arquivos (Unrestricted file upload)...428 8.11.2 Redirecionamentos e encaminhamentos inválidos...432 8.11.3 Poluição de parâmetros (HTTP Parameter Pollution)...432 8.11.4 CRLF Injection / HTTP Response Splitting...433 8.11.5 Ataque ao cabeçalho Host (Host Header Attack)...433 8.11.6 Ataque ao método HTTP (HTTP method tampering)...438 Capítulo 9 Ferramentas automatizadas... 439 9.1 SQLMap...439 9.2 jsql...443 9.3 Commix... 444 9.4 Nikto... 444
Sumário 13 9.5 Vega...445 9.6 Skipfish... 446 9.7 Wapiti...447 9.8 Acunetix...448 Capítulo 10 Escalonamento de privilégios...449 Capítulo 11 Manutenção do acesso... 455 Capítulo 12 Negação de serviço (Denial Of Service DoS)...462 12.1 CVE-2013-2028...462 12.2 CVE-2007-6750...463 12.3 HTTP Unbearable Load King (HULK)...464 Capítulo 13 Correções...466 13.1 Injeção SQL...467 13.2 Injeção em formulários de e-mail...469 13.3 Injeção de comandos (command injection)...469 13.4 Senhas esquecidas...470 13.5 Validação via JavaScript...470 13.6 Cross-site scripting e injeção HTML...470 13.7 Man-in-the-Middle...471 13.8 Exposição de dados sensíveis...472 13.9 Remote File Inclusion (RFI), Local File Inclusion (LFI) e travessia de diretórios.473 13.10 Cross-site Request Forgery (CSRF)... 474 13.11 Clickjacking...475 13.12 Redirecionamento não validado...476 13.13 RIPS...476 Capítulo 14 Considerações finais... 478 Referências bibliográficas...480