Mostrando postagens com marcador SQLi. Mostrar todas as postagens
Mostrando postagens com marcador SQLi. Mostrar todas as postagens

quinta-feira, 21 de maio de 2015



Falha que afeta sistemas com PHP permite uma injeção SQL no banco de dados.

Resumo


Programas afetados: PHP Collab, XAMPP, Apache, MySQL

Sistemas afetados: Windows

Versões afetadas: Windows (7,Server 2008, Server 2012), PHP (5.x), XAMPP (todas), Apache (todas), MySQL (todas)

Solução


Aguardar uma atualização e/ou desativar o recurso.

Explorando


1- Usando a "dork" abaixo é possível encontrar os sites possivelmente vulneráveis

filetype:php inurl:"/general/login.php?PHPSESSID="

2- Navegue até

http://site.alvo/phpcollab/topics/deletetopics.php?project=

3- Execute uma injeção de SQL ou use o link em um programa para esse fim



"Conhecimento não é crime, crime é o que você faz com ele."

quarta-feira, 20 de maio de 2015



A pedido do leitor Josemar Simpson, estarei falando nesse post sobre duas técnicas de invasão conhecidas como SQLi e XSS Brute Force.

A maior parte dos grandes sites atuais já possui ferramentas implementadas contra os dois tipos de ataque, porém, páginas "mal programadas" e serviços desatualizados fazem com que ainda seja possível ocorrer esse tipo de invasão.

Conceitos Básicos


A utilização da injeção de SQL consiste em manipular o banco de dados (SQL), na maior parte das vezes por meio de uma URL do próprio site, afim de obter alguma informação privilegiada como credenciais de login.

Já o ataque Cross Site Script (XSS) consiste na utilização de códigos maliciosos que geralmente são injetados em links ou qualquer outra caixa de texto de uma página, na maior parte dos ataques desse tipo, não há uma invasão propriamente dita, mas sim um erro na exibição do site/página afetada, podendo ser um "deface" (desfiguração de uma página), ou um buffer overflow (estouro da capacidade do servidor e consequente queda do site), ou ainda um simples redirecionamento, que pode levar o usuário à uma simples página de "deface" ou em casos mais perigosos em páginas de "phishing".

Programas mais Usados


Os programas mais famosos para a realização do SQLi são o Havij no windows e o SQLMap no linux.

Já no caso do XSS, o XSSBeef no linux, no windows não conheço programa funcional para a automatização desse tipo de ataque.

É claro que existem mais programas disponíveis na web, principalmente para a plataforma linux e também existe a exploração de ambas vulnerabilidades no "modo manual" utilizando-se somente um navegador e os códigos maliciosos.

Afinal, qual a melhor forma?


Para começar a responder essa pergunta, digo somente, "depende".

No caso do SQLi a utilização é mais eficaz em sistemas desatualizados e que possuam um banco de dados rodando a tecnologia SQL/MySQL, pois isso garante um maior sucesso na invasão. Com os programas, é possível também realizar ataques de força bruta em qualquer página que necessite de credenciais.

Do lado do XSS, há a "vantagem" de se poder injetá-lo em qualquer campo de texto disponível em um site e com o poder de um programa a possibilidade um Brute Force faz com que páginas de login ou qualquer uma que necessite de uma credencial possa ser passada mais facilmente.

Caso estejamos falando do "modo manual", ambas as técnicas podem durar o mesmo tempo e considerando que se quer um resultado mais devastador, o SQLi pode fornecer qualquer informação presente no banco de dados do servidor atacado.

Conclusão

Apesar de suas limitações, o SQLi pode ser uma opção bem interessante para obtenção de informações direto do banco de dados de um servidor. Já o XSS pode ser mais abrangente mas pode não ser tão invasivo em alguns casos.

A escolha final cabe ao atacante (devidamente autorizado), pois o emprego de técnicas de invasão dependem de quanto a técnica está dominada e o quanto está conhecida, pois "receitas de bolo" não existem.

Extra


Abaixo um gráfico que mostra os tipos de tecnologias mais afetadas em 2013 pelas duas falhas ao mesmo tempo.


Legenda:

Azul: Aplicações Web Proprietárias - 40%
Alaranjado: Plugins e Módulos para CMS - 30%
Cinza: Pequenos CMS - 25%
Amarelo: CMS mais Usadas - 5%

CMS: Content Management System (Sistema de Gerenciamento de Conteúdo, sigla em inglês).


O artigo completo do site, encontra-se aqui (em inglês).

Agradeço a leitura e te espero no nosso grupo do Facebook.

quinta-feira, 24 de outubro de 2013

Recentemente um grupo hacker chamado "TeamBerserk" declarou no Twitter que roubou cerca de $ 100.000 dólares obtido através de usuários e senhas capturadas de um ISP californiano e usando essas informações para acessar as suas contas bancárias.

Um vídeo prova foi upado, mostrando como eles usaram SQL Injection contra o ISP para acessar o banco de dados que continha email, usuários e senhas em texto plano e usaram essas informações para roubar dinheiro dos clientes.

Vamos ver o que é SQL Injection e quão sério um ataque deste tipo pode ser. SQLi é uma vulnerabilidade encontrada em aplicações web onde o atacante pode injetar códigos SQL no banco e utilizar isso para acessar recursos internos. Usando esta técnica, hackers maliciosos podem determinar a estrutura do banco e comprometer e/ou baixar todos os dados dos servidores.



Eles levaram apenas 15 minutos para hackear o site com uma ferramenta chamada sqlmap, roubaram os dados e tiveram acesso imediato a contas de email, Paypal e internet banking.



É muito difícil lembrar de diversas senhas, por isso o que a maioria faz é usar a mesma em tudo. Sua senha do Facebook é a mesma do Twitter? E a do site do seu banco?

Agora já deve estar mais do que explicado porque esse tipo de falha é extremamente perigosa. No vídeo de prova de conceito, o atacante escolhei randomicamente um usuário e sua respectiva senha e tentou logar em diversos outros sites, entre eles PayPal, Gmail e CitiBank, e o mais impressionante é que ele conseguiu.



Agora que você já está ciente que ataques podem vir de qualquer lugar, não deixe isso acontecer, se você usa internet banking, compra pela internet, ou acessa outros dados sensíveis, o melhor a se fazer, pelo menos para dificultar é usar senhas difíceis e variadas para cada serviço.

Fonte: The Hacker News

quinta-feira, 3 de outubro de 2013

Smartphone
O alerta foi feito pela IBM, que divulgou seu relatório X-Force 2013 que traz uma análise do cenário de segurança de TI durante os seis primeiros meses do ano, e tenta ajudar as organizações a compreender melhor os riscos que correm. O relatório aponta que os ataques contra empresas estão ficando cada vez mais sofisticados, e alguns deles se mostraram oportunistas, explorando aplicações web vulneráveis a Injeção de SQL, mais conhecida através do termo americano SQL Injection – um tipo de ameaça que aproveita falhas em sistemas que interagem com bases de dados via SQL.
Outros ataques bem sucedidos aconteceram devido a uma violação básica de confiança entre o usuário final e sites ou perfis de redes sociais que ele pensava ser legítimo e seguro. "As mídias sociais tornaram-se um novo playground para os golpistas", disse Kevin Skapinetz, diretor de programa de estratégia de produtos para sistemas de segurança da IBM. Os criminosos exploram relações de confiança, por meio das redes sociais ou spam com aparência profissional, por exemplo, para enviar links maliciosos que parecem ter sido enviados por amigos ou pessoas que seguem a vítima nas redes sociais.
Os criminosos estão vendendo contas em sites de redes sociais, algumas delas pertencentes a pessoas reais cujas credenciais foram comprometidas, outras delas criadas para parecer realista e criar uma teia de conexões. No mínimo, essas contas servem para inflar determinadas páginas de "likes" ou falsificar comentários, embora usos mais maliciosos podem servir para realizar atividades criminosas – o que pode ser equivalente a uma identidade online falsa.
A capacidade de um único ataque influenciar as ações de milhões de pessoas em tempo real é alarmante. Os atacantes estão mirando os usuários e abusando de sua confiança, aproveitando a psicologia por trás do comportamento nas mídias sociais.
Ataques redes sociais

Dispositivos móveis na mira dos hackers

Os dispositivos móveis também estão se tornando um ímã para hackers. "Apesar de as vulnerabilidades móveis continuarem crescendo a um ritmo acelerado, ainda as vemos como uma pequena porcentagem das vulnerabilidades gerais relatadas no período", explica o relatório da IBM.
O que pode estar piorando o cenário de infecção de gadgets móveis é a proliferação desse tipo de dispositivo no local de trabalho graças à grande adoção do Bring Your Own Device (BYOD) – que pode se tornar um pesadelo para as empresas.
O relatório da IBM também observou que ataques distribuídos de negação de serviço (DDoS) estão sendo usados para mais do que apenas interromper o serviços de seus alvos. Os ataques estão sendo utilizados como uma forma de distração, permitindo que os atacantes violem outros sistemas da empresa. "Os criminosos derrubam um site, colocam as pessoas de TI focadas em uma determinada direção, amarram seus recursos ao ataque DDoS, enquanto uma violação mais sofisticada é realizada e ninguém está prestando atenção", explica Marc Gaffan, cofundador da Incapsula.
Nos últimos anos, também presenciamos um crescimento explosivo de dispositivos Android no mercado, e os criminosos também estão atentos a essa área de crescimento. Como o número de usuários de celulares que operam Android se expande rapidamente, os criadores de malwares também aumentaram seus esforços proporcionalmente para não perder essa grande oportunidade. O fato de apenas 6% dos dispositivos com sistema operacional móvel do Google estar rodando uma versão mais recente do Android (pelo menos a 4.2) também ajuda a aumentar a proliferação de ataques.
Ao todo, o estudo da IBM analisou 4.100 novas vulnerabilidades de segurança e 900 milhões de novas páginas e imagens nos primeiros seis meses de 2013.

Fonte:  Canal Tech

terça-feira, 16 de julho de 2013

E ai pessoal!

Como eu comentei no post Introdução à Segurança da Informação - Parte 10, vou fazer uma subsérie de posts com algumas práticas para mostrar como funcionam as principais vulnerabilidades na visão da OWASP.

Antes de começar tenho que avisar que este é a lista de 2010 não esta nova de 2013, acho que as aplicações vulneráveis de teste ainda não atualizaram as mudanças, mas como é pouca a diferença podemos nos basear muito bem por aqui. Estou usando a aplicação de testes também da OWASP a Multillidae que tem uma boa base para quem está começando, com dicas nas páginas vulneráveis, e também para os mais experientes, pois essas ajudas e a complexidade da falha podem ser alteradas.

Como comentado no post anterior dessa série, quando se fala em injection vem logo a cabeça o SQL Injection. Como estamos falando de Introdução à Segurança da Informação, podemos começar por ele mesmo, vou mostrar aqui alguns modos de atacar um site por SQL Injection.

Eu já postei aqui um paper em várias partes chamado "Pentest em sites com Metasploit", que o objetivo era mostrar como era possível fazer um pentest completo em uma aplicação web apenas com o Metasploit, mas o motivo de estar citando aqui essa série é porque em algumas partes eu citei o sqlmap e até foi mostrado como usa-lo para atacar falhas de SQL Injection. Se você já tem um conhecimento prévio recomendo dar uma olhada lá, caso esteja realmente iniciando agora recomendo que guarde esse link para depois e continue sua leitura aqui neste post.

Vamos ver algo bem básico neste post sobre SQL Injection.

Basicamente, as vulnerabilidades de Injection acontecem quando você pode passar todas as proteções e mandar códigos para serem executados no servidor ou banco de dados. No nosso caso aqui, vamos mandar alguns códigos para o servidor na hora da verificação de autenticação que vai nos liberar acesso a uma área restrita do site, logar sem ter um usuário e senha.

Para facilitar a explicação, deixei na dificuldade mínima e dicas habilitadas.

Neste caso temos o formulário de login, um teste básico que podemos fazer é colocar um apóstrofo no campo e enviar e ver o que acontece. Em muitos casos onde ha a vulnerabilidade as saídas de erro não são tratadas corretamente e acabam aparecendo na página.


No caso de um site real vulnerável você receberia uma página em branco ou a mesma página com a mensagem "/owaspbwa/owaspbwa-svn/var/www/mutillidae/classes/MySQLHandler.php on line 108: Error executing query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''' AND password=''' at line 1 () (0) [Exception] " aparecendo em algum lugar. As outras informações são as dicas do Mutillidae.

Para entendermos melhor como isso funciona, vamos observar a linha Diagnostic Information que contém o comando executado no banco de dados quando preenchemos os campos de login e senha.

Com um pouco de conhecimento em banco de dados SQL podemos ver que ele pega tudo da tabela accounts onde o usuário é ' (o apóstrofo que eu coloquei) e a senha é vazio. Se eu colocar qualquer coisa ali ele vai testar, ver que não encontrou nada igual no banco e retornar "false" que quer dizer que eu digitei o usuário ou senha errado. Neste caso eu obtive o erro porque a aplicação não soube lidar com o caractere que eu usei. Se você parar para notar, os conteúdos dos campos são delimitados pelos mesmos apóstrofos, com isso criei um conflito que misturou todo o comando e me retornou o erro. Isso quer dizer que, como ele aceitou numa boa um apóstrofo eu posso utilizá-lo para fechar o conteúdo do campo e continuar escrevendo o comando diretamente do formulário de login.

Vamos ao exemplo mais prático, o famoso ' or 1=1 --. Para os mais leigos, isso quer dizer que o comando que será executado no banco vai ser um pouco diferente, vejamos:

SELECT * FROM accounts WHERE username='' or 1=1 --' AND password='' or 1=1 --'

Com isso temos, pegue tudo da tabela accounts onde o usuário é vazio ou 1 é igual a 1 e a senha é vazio ou 1 é igual a 1 e ignore todo o resto (os dois traços). Lembram-se acima quando eu falei que o banco checaria e por não ter a combinação de usuário/senha ele retornaria "false"? E agora, o que você acha que ele vai retornar? "True"! Isso mesmo, por mais que ele não encontre as credenciais que eu passei ele sempre vai cair na verificação de que 1 é sempre igual a 1, por isso retorna "true" e nos autentica:



E ai está! Conseguimos os detalhes das contas cadastradas no site.

Mas não paramos por aqui, ainda temos algumas coisas a ressaltar. Não será em todos os casos que isso vai funcionar, os comandos variam com a linguagem que o banco de dados usa, veja abaixo algumas outras possibilidades:

b’ or ‘ 1=’
‘ or ’1
‘ or ‘|
‘ or ‘a’='a
‘ or ”=’
‘ or 1=1–
‘) or (‘a’='a
‘ or ’1′=’1
admin ‘ – -
‘ ou 0=0 –
“ou 0=0 –
ou 0=0 –
‘ ou 0=0 #
“ou 0=0 #
ou 0=0 #
‘ ou ‘ x’='x
“ou” x”=”x
‘) ou (‘ x’='x
‘ ou 1=1 –
“ou 1=1 –
ou 1=1 –
‘ ou a=a –
“ou” a”=”a
‘) ou (‘ a’='a
“) ou (“a”=”a
hi “ou” a”=”a
hi “ou 1=1 –
hi ‘ ou 1=1 –
hi ‘ ou ‘ a’='a
hi ‘) ou (‘ a’='a
hi”) ou (“a”=”a
‘ or ‘x’='x

Mas não pare por ai! Se nada der certo, procure forçar um erro para ter uma pista de qual banco de dados está sendo usado, com essa informação procure como que aquele banco em específico trata os comandos e entradas e use sua imaginação para bolar uma injeção de código. Nem sempre pegar o que já está pronto pode te ajudar.

Agora uma coisa muito interessante que poucos se preocupam em falar, como podemos proteger os sites de Injection? Mais simples do que você imagina, ou não depende da complexidade da sua aplicação. A regra mais importante aqui é "trate todo a entrada como maliciosa", com isso em mente você poderá prever todas ou boa parte das possibilidades. Avalie, filtre e trate antes de chegar ao banco de dados. Existem algumas funções já prontas, como o Magic Quotes por exemplo, que prometem filtrar esses parâmetros, não sou a melhor pessoa para falar sobre isso porque não sou programador, mas recomendo que procure mais sobre isso.

Não preciso comentar em manter sempre tudo atualizado e regularizado, isso pode não resolver, mas pode diminuir o estrago ou até mesmo diminuir a quantidade de informação vazada.

E para finalizar, um ultimo ponto que considero interessante é a utilização de um WAF (Web Application Firewall), que vai detectar essas ameaças e cortar a conexão antes que um dano maior ocorra, e um concelho, não mostre mais do que o necessário, trate todos os erros que sua aplicação pode gerar.

Eu fico por aqui depois desse longo post, espero que tenham entendido e gostado, porque querendo ou não tem pelo menos mais 9 desses vindo por ai :)

Também indico que baixem e testem o Multillidae, que tem várias situações para você tentar resolver que sem dúvida vão refinar seu conhecimento.

Bons estudos e até a próxima!

sábado, 13 de julho de 2013

E ai pessoal!

Esta semana eu participei da gravação do webinar da Clavis sobre OWASP Top 10 e como não poderia ser diferente, o próximo post do guia teria que ser sobre as principais vulnerabilidades de aplicações web.

Antes de mais nada, acredito que já saibam quem é a OWASP e o que é o OWASP Top 10 então não vou perder muito tempo com isso, se você não conhece absolutamente nada ou muito pouco sobre a OWASP ou sobre o Top 10 acesse o site da OWASP.

O Top 10 de mais conhecidas e exploradas vulnerabilidades de aplicações web teve uma atualização esse ano, mas pouca coisa mudou, alguns tópicos foram unidos, outros mudaram de posição e algumas novidades surgiram, mas apenas mudando a ordem, as ameaças "de sempre" continuam lá. Vamos ver elas uma a uma.

A1 - injection

Quando falamos de injection o que vem a cabeça é o famoso SQL Injection, mas não é só isso, injection é tudo que pode ser passado como parâmetro e uma aplicação vulnerável vai recebe-lo e será executada em algum lugar, como em um banco de dados, em sistemas como LDAP ou até mesmo na shell do sistema operacional. Isso quer dizer que o famoso SQL Injection é apenas uma das variantes desse tipo de ataque.

A2 - Broken Authentication and Session Management

Algumas aplicações que envolvem autenticação e gerenciamento de sessão normalmente não são implementadas corretamente permitindo que atacantes comprometam senhas, tokens e outras ferramentas de autenticação apenas manipulando URL's e alguns parâmetros, ou até mesmo elevando seus privilégios na aplicação para um ataque maior.


A3 – Cross-Site Scripting (XSS)

O XSS é basicamente um tipo de injeção, normalmente voltado ao usuário e seu browser específico, onde passando uma url com um código malicioso, ou de algum modo injetando isso para que quando a página seja carregada esse código seja carregado e infecte a vítima, ou mande seus dados de sessão para o atacante, ou fazendo um defacement no site, ou também enviando o usuário a um site malicioso.

A4 – Insecure Direct Object References

Uma referência dessas ocorre quando um desenvolvedor expõe uma referência a uma implementação de um objeto interno como um diretório, arquivo ou banco de dados. Sem um certo controle ou proteção, um atacante pode manipular essas referências e obter acesso não autorizado a estes arquivos.

A5 – Security Misconfiguration

Uma boa segurança requer ter uma aplicação bem configurada, tanto quanto frameworks, servidor, banco de dados, plataforma e tudo mais. Manter as configurações na instalação Default é normalmente inseguro. Manter softwares sempre atualizados é uma boa prática.

A6 – Sensitive Data Exposure

Muitas aplicações web não protegem de uma forma eficaz informações sensíveis, como número de cartão de crédito, CPF e credenciais. Atacantes mal intencionados podem roubar esses dados ou modifica-los para outros ataques, como engenharia social e roubo de identidade e outros. Esse tipo de informação necessita uma proteção extra como por exemplo uma boa criptografia e precaução quando são transmitidas com os browsers.

A7 – Missing Function Level Access Control

Boa parte das aplicações web atuais verificam todas as informações de permissão de acesso antes de torná-las visíveis em sua interface. Normalmente essas aplicações precisam fazer as mesmas verificações com o servidor, se essas requisições não forem verificadas e propriamente tratadas, os atacantes podem forjar requisições para tentar obter acesso não autorizado a certas informações.

A8 - Cross-Site Request Forgery (CSRF)

Um parente próximo do XSS, esse tipo de ataque força um usuário logado a mandar uma requisição HTTP e incluindo nela seu cookie e outras informações de autenticação para uma aplicação vulnerável. Isso permite que um usuário mal intencionado force o browser da vítima a gerar requisições em seu nome convencendo o servidor de que essas requisições são legítimas da vítima.

A9 - Using Components with Known Vulnerabilities

Basicamente é manter sua aplicação desatualizada, em uma versão com vulnerabilidades conhecidas e disponibilizadas publicamente. Normalmente essas aplicações rodam com todos os privilégios no sistema, se esta aplicação for explorada o atacante pode ter acesso total ao sistema em que a aplicação está rodando.

A10 – Unvalidated Redirects and Forwards

Aplicações web frequentemente redirecionam usuários para outras páginas e sites. Sem uma validação nesses dados de redirecionamento, pode-se redirecionar uma vítima para uma página com malware ou phishing, ou acessar conteúdo não autorizado.


Isto é uma explicação básica da atualização deste ano do OWASP Top 10. Nos próximos posts dessa série vamos ver na prática alguns exemplos de cada uma dessas categorias. Assim que o webinar for disponibilizado pela Clavis eu atualizo este post com o vídeo ou o link.

Até lá!


EDIT: Segue ai o vídeo do Webinar da Clavis.


Subscribe to RSS Feed Follow me on Twitter!