burlando um WAF

Click here to load reader

  • date post

    31-Jul-2015
  • Category

    Internet

  • view

    270
  • download

    7

Embed Size (px)

Transcript of burlando um WAF

1. 1/ 37 Burlando um WAF 25 de maio de 2015 2. 2/ 37 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/ 37 Agenda Entendendo o problema Burlando um WAF Automatizando o ataque Sugestes para mitigao 4. 4/ 37 Entendendo o Problema WAF (web application firewall) Filtro com conjunto de regras Protege de ataques comuns Registra informaes de ataques Bloqueia ataques 5. 5/ 37 Entendendo o Problema Filtra tanto Request como Response 6. 6/ 37 Entendendo o Problema Request exemplo: GET /sell/cars.php?search= 7. 7/ 37 Entendendo o Problema Match exato BlackList... alert(, union select script eval... 8. 8/ 37 Entendendo o Problema Block por IP DoS Spoofing ? 9. 9/ 37 Entendendo o Problema Regras no so suficientes... Expresso regular regex no faz matching 10. 10/ 37 Burlando um WAF 11. 11/ 37 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/ 12. 12/ 37 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= 13. 13/ 37 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 14. 14/ 37 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() - 15. 15/ 37 Burlando um WAF Outras formas... Objetivo o mesmo burlar 16. 16/ 37 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= 17. 17/ 37 Burlando um WAF HPP(HTTP Parameter Pollution) Uma tcnica que visa enviar muitos parmetros para assim burlar filtros de ambientes. 18. 18/ 37 Burlando um WAF Mude o IP use Proxy Mude o User Agent 19. 19/ 37 Burlando um WAF Outras formas... obfuscar encodar apenas um caracter etc... 20. 20/ 37 Automatizando o ataque Por que automatizar ? 21. 21/ 37 Automatizando o ataque Payloadmask https://github.com/CoolerVoid/payloadmask 22. 22/ 37 23. 23/ 37 Futuro da ferramenta github.com/CoolerVoid/payloadmask/issues 24. 24/ 37 Automatizando o ataque 0d1n https://github.com/CoolerVoid/0d1n 25. 25/ 37 Automatizando o ataque 0d1n https://github.com/CoolerVoid/0d1n 26. 26/ 37 Automatizando o ataque 27. 27/ 37 Automatizando o ataque 28. 28/ 37 Automatizando o ataque 29. 29/ 37 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 30. 30/ 37 Automatizando o ataque 31. 31/ 37 Automatizando o ataque 32. 32/ 37 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 33. 33/ 37 Automatizando o ataque Futuro da ferramenta... github.com/CoolerVoid/0d1n/issues 34. 34/ 37 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. 35. 35/ 37 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 36. 36/ 37 Perguntas ??? 37. 37/ 37