Burlando Waf 2.0

Click here to load reader

  • date post

    13-Aug-2015
  • Category

    Technology

  • view

    135
  • download

    38

Embed Size (px)

Transcript of 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 Sugestes para mitigao
  4. 4. 4/ 41 Entendendo o Problema WAF (web application firewall) Filtro com conjunto de regras Protege de ataques comuns Registra informaes 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=
  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 no so suficientes... Expresso regular regex no faz matching
  10. 10. 10/ 41 Entendendo o Problema ReDOS (Regular expression denial of service) Agrupamento Repetio e Alternncia com sobreposio ([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 so 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 padro no 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 no case sentive. Exemplo: /sell/cars.php?search= /sell/cars.php?search=
  14. 14. 14/ 41 Burlando um WAF Replace Keywords Alguns casos que no 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 ocorrncia de uma palavra), logo Request continua no 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) ento temos: /cars_show.php?car_id=-30 UNION SELECT 6,7,8,9
  15. 15. 15/ 41 Burlando um WAF Spaces to comment Trocar espaos em branco por comentrios /**/, ou mesmo adicionar comentrios em pontos aleatrios, 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 aplicao forando 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 prtica correta para limitar o buffer de entrada, logo um payload com tamanho extremo pode causar buffer overflow. funes como strcpy(),strcat() sem devido buffer limitado e definido podem causar estes problemas, por isso o recomendado usar funes 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 so encode64, url encode, double url encode... Exemplo: 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 tcnica que visa enviar muitos parmetros 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 Sugestes para mitigao No usar Regex que tenha redundncia Usar Whitelist e no Blacklist. Preveno sempre, contratar servios para auditoria na aplicao No esperar que o WAF faa tudo... Sanitizar informaes 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 sugesto do Tamper
  40. 40. 40/ 41 Perguntas ???
  41. 41. 41/ 41