larga escala atravÉs de falhas de ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...sql...

41
IDENTIFICANDO VULNERABILIDADES EM LARGA ESCALA ATRAVÉS DE FALHAS DE DESENVOLVIMENTO

Upload: others

Post on 16-Jul-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

IDENTIFICANDO VULNERABILIDADES EM LARGA ESCALA ATRAVÉS DE FALHAS DE

DESENVOLVIMENTO

Page 2: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Quem sou eu:Desenvolvedor PHP?-Sim

Entusiasta da área de segurança? -Sim

Então trabalha com segurança? -Não, se trabalhar é ganhar dinheiro, resposta é não.

Evangelizador PHP? -É alguém que ajuda a comunidade de alguma forma, seja divulgando ou repassando conhecimento ou de alguma outra forma.

Page 3: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão

“qualquer objeto que serve de modelo para a elaboração de outro”

google

Page 4: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Parte 1

Estudo de uma falha

Page 5: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Estudo de uma falha de segurança● Estudo de falha● Identificar o padrão● Forçar o erro● Trabalhar injeção● Eliminar falsos positivos● Validar retorno

Page 6: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão

Page 7: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão

Page 8: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão

Page 9: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão

Page 10: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

XSSCross-Site Scripting (XSS) attacks are a type of injection, in which malicious

scripts are injected into otherwise benign and trusted web sites.

Page 11: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

XSS

Page 12: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

XSSPadrão => Texto na requisição GET/POST se repete no corpo do texto.

Forçar Erro => Alterar parâmetro GET/POST.

Trabalhar injeção => Alterar tags html e verificar se existe filtros na impressão.

Eliminar falso positivo => Checar se esta realmente esta visível.

Validar retorno => se as tags foram realmente impressas com o texto.

Page 13: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Sql InjectionAttack consists of insertion or "injection" of a SQL query via the input data from the

client to the application.

Page 14: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Sql Injection

Page 15: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Sql InjectionPadrão => É utilizado número ou texto no GET/POST para retorno de informação.

Forçar erro => Inserindo aspas.

Trabalhar injeção => Inserção das aspas.

Eliminar falso positivo => Validar se erro já existe antes das aspas inseridas.

Page 16: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Sql InjectionValidar retorno => Se tiver error de query devido a entrada de parâmetro. Já era! Exemplo:

Warning: mysql_

PostgreSql Error:

Microsoft OLE DB Provider for Oracle

Page 17: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Local File Download / Path Traversal

A path traversal attack (also known as directory traversal) aims to access files and directories that are stored outside the web root folder.

Page 18: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Local File Download / Path Traversal

Page 19: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Local File Download / Path TraversalPadrão => É utilizado caminho do arquivo no GET/POST para escolha de arquivo para download.

Forçar Erro => Alterando parâmetro GET/POST, referente ao arquivo.

Trabalhar injeção => Navegar pelas pastas encontrando arquivos utilizando ../ procurando pelo arquivo de origem ou index. Exemplo:

site.com.br/index.php?file=../../index.php

Page 20: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Local File Download / Path TraversalEliminar falso positivo => Caso venha arquivo vazio ou arquivo de erro.

Validar retorno => Verificar no retorno se aquele é realmente um arquivo de sistema. O arquivo deve iniciar com:

<? / <?php / <% / <%@

Page 21: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Local File Inclusion

The File Inclusion vulnerability allows an attacker to include a file, usually exploiting a "dynamic file inclusion" mechanisms implemented in the target

application.

Page 22: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Local File Inclusion

Page 23: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Local File InclusionPadrão => É utilizado caminho do arquivo no GET/POST para escolha de arquivo para leitura.

Forçar Erro => Alterando parâmetro GET/POST.

Trabalhar injeção => Navegar pelas pastas encontrando arquivos utilizando ../

site.com.br/index.php?page=../../etc/passwd

Eliminar falso positivo => Caso venha arquivo vazio.

Page 24: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão / Desenvolvimento X Vulnerabilidade

Local File InclusionValida retorno => Verificar no retorno se aquele é realmente um arquivo de sistema. Ira mostrar linhas padrões para sistemas linux como etc/passwd.

Page 25: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Parte 2

Localizando alvos

Page 26: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Localizando alvos● Utilização de buscadores

○ Quais?■ Google■ Bing■ Yandex■ DukeDukeGo■ Yahoo■ Outros

○ Problemas■ Sensibilidade a automação■ Paginação■ Diversificação de tecnologia

Page 27: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Localizando alvos● Identificações de padrões das vulnerabilidades

○ Via url○ Estrutura○ Via Conteúdo da página

■ Título■ Formulários■ Corpo

○ Via extensão○ Outros

Page 28: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Localizando alvos● Utilização de dorks baseadas em na identificação dos padrões

○ Exploitdb○ 0day.today

● Extração dos dados.● Gerenciar requisições.● Eliminação falsos positivos.

Page 29: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão de dorksXSS site:com.ar inurl:index.php?titulo=

Page 30: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão de dorksSQL INJECTION site:com.ar inurl:index.asp?id=

Page 31: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão de dorksLOCAL FILE DOWNLOAD site:com.ar inurl:descarga.php?file=

Page 32: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Padrão de dorksLOCAL FILE INCLUSION site:com.ar inurl:index.php?pagina=

FAIL

Page 33: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Extração de dadosPHP Avenger - php avenger sh --dork=”index.php?titulo” --check=”xss”

Baseado no script o inrul do Cleiton Pinheiro

Page 34: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

ResultadosXSS

Page 35: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

ResultadosSql Injection

Page 36: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

ResultadosLocal File Download / Path Traversal

Page 37: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

ResultadosLocal File Inclusion

EM BREVE...

Page 38: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Bibliotecas

Page 39: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Bibliotecas

Page 40: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Bibliotecas

Page 41: LARGA ESCALA ATRAVÉS DE FALHAS DE ...confraria0day.com.br/wp-content/uploads/2016/09/c0d_12...Sql Injection Padrão => É utilizado número ou texto no GET/POST para retorno de informação

Fim / Contatohttps://github.com/aszone/

https://github.com/lenonleite/

https://packagist.org/packages/aszone/

http://lenonleite.com.br

http://php.lenonleite.com.br/

http://www.aszone.com.br/

@lenonleite