SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Agenda
1.   Segurança
2.   Injeção de código
3.   Ameaças
4.   Oportunidades
Disponibilidade
IHDR Image Header

  This chunk must appear FIRST. Its
contents are:
Width: 4 bytes
Height: 4 bytes
[…]

Width and height give the image
dimensions in pixels. They are 4-byte
integers. Zero is an invalid value.
The maximum for each is (2^31)-1 in
order to accommodate languages which
have difficulty with unsigned 4-byte
values.
Integridade
Gerenciamento de sessão/navegação

JavaScript
HTTP_REFERRER
Cookies
 Expiração
 Segurança
 Escopo
Confidencialidade
Trocando senhas

<?PHP
  $login =   $_GET[“login”];
  $senha =   encripta($_GET[“senha”]);
  $cmd   =   “echo ”.$senha;
  $cmd .=    “ | passwd –-stdin ”.$login;

  system($cmd);
?>
Trocando senhas

$ echo <senha> | passwd --stdin login

$ echo $6$jYk… | passwd --stdin bill



$ echo $6$pOi… | passwd --stdin bill;dd
if=/dev/zero of=/tmp/lixo bs=1M
Dá pra limitar os danos?

$ echo $6$pOi… | passwd --stdin bill&&dd
if=/dev/zero of=/tmp/lixo bs=1M

$ echo $6$pOi… | passwd --stdin bill -
K||dd if=/dev/zero of=/tmp/lixo bs=1M

$ echo $6$pOi… | passwd --stdin `dd
if=/dev/zero of=/tmp/lixo bs=1M`
A essência do problema
1. Não se pode confiar em dados recebidos de
   terceiros

2. Não se deve confiar em dados recuperados
   da memória secundária

3. Política e funcionalidade não devem ser
   fortemente acopladas
Principais vulnerabilidades OWASP
SQL Injection
• Ataque em que um formulário é preenchido
  com informações que interferem no fluxo de
  execução de consultas

• Frequentemente aplicado em etapas de login
  – Geralmente, a seção de um sistema web onde há
    maior preocupação com segurança
Exemplo de injeção de SQL
• Isto:

SELECT * FROM Bugs
WHERE bug_id = $_GET['bugid’]

• Pode resultar nesta instrução!

SELECT * FROM Bugs
WHERE bug_id = 1234 OR TRUE
Um exemplo pior

UPDATE Accounts
SET password = SHA2('$password')
WHERE account_id = $account_id

• Vira...

UPDATE Accounts
SET password = SHA2(...)
WHERE account_id = 1234 OR TRUE
Directory traversal
• Tipo de ataque que faz com que uma aplicação
  web acesse um arquivo não-desejado

• Mais uma vez, ocorre quanto não se trata
  adequadamente parâmetros de entrada

• Se um dos parâmetros indica um nome de
  arquivo, é possível manipulá-lo para que aponte
  para arquivos arbitrários no sistema do servidor
Exemplo básico
• Suponha um script que suporte isto:
http://www.xxx.com/members/seepic.cgi?arq=0
01.jpg
<?
  ...
  /* le imagem a ser exibida */
  $base = “/amadoras/”
  $hdl = fopen($base.$_GET['arq'], “r”);
  $imagem = fread($hdl, filesize($hdl));
  print $imagem;
  fclose($hdl);
?>
Outras possibilidades
• http://www.xxx.com/members/seepic.cgi?arq
  =../../../../../../../../../../etc/passwd

   Alguns ataques usam caminhos codificados.
    Uma possibilidade é utilizar parâmetros com
    codificação de URL:

seepic.cgi?arq=%2e%2e%2f... → (../)
seepic.cgi?arq=%2e%2e%5c... → (..)
XSS
  “Através de um XSS, o Cracker injeta
  códigos JavaScript em um campo texto de uma
  página já existente e este JavaScript é apresentado
  para outros usuários.”
                                            -- Wikipédia


• Quase lá!
  – XSS pode ser reflexivo ou armazenado
Google Gruyere
• http://google-gruyere.appspot.com/

• Aplicação propositalmente desenvolvida com
  bugs

• Um “testbed” para experiências em segurança
Outras possibilidades?

• LDAP Injection?

• SMTP Injection?

• Quick Response Injection?
Existem oportunidades!

• Assume-se que aplicações são “naturalmente
  frágeis”

• Investe-se em segurança da “infraestrutura”
  – Firewalls e IDS
  – Consultoria
  – $$$
O desenvolvedor

• Conhece as principais tecnologias envolvidas

• Está no cerne do problema

• Possivelmente tem maior background
  acadêmico
Possível suporte

• https://www.owasp.org/

• www.microsoft.com/security/sdl/

• OWASP ESAPI

• (ISC)2 – Secure Software Lifecycle Professional
Carlos ‘Bill’ Nilton
carlos.nilton@gmail.com
       @cnacorrea

Weitere ähnliche Inhalte

Was ist angesagt?

Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSamyr Abdo
 
Construindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasConstruindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasRafael Jaques
 
Palestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingPalestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingLuis Gustavo Almeida
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBErick Belluci Tedeschi
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on RailsJulio Monteiro
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)Leandro Lugaresi
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaCarlos Santos
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...Rafael Jaques
 
Técnicas de Invasão - INFOESTE 2015
Técnicas de Invasão - INFOESTE 2015Técnicas de Invasão - INFOESTE 2015
Técnicas de Invasão - INFOESTE 2015C H
 
Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2Cyrille Grandval
 
A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01Reinaldo Junior
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 

Was ist angesagt? (15)

Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr Abdo
 
Aula 10 - Cross Site Scripting (XSS)
Aula 10 - Cross Site Scripting (XSS)Aula 10 - Cross Site Scripting (XSS)
Aula 10 - Cross Site Scripting (XSS)
 
Construindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasConstruindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de Balas
 
Sql injection
Sql injectionSql injection
Sql injection
 
Palestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingPalestra de segurança em PHP - Hacking
Palestra de segurança em PHP - Hacking
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on Rails
 
Aula 9 - Backdoor
Aula 9 - BackdoorAula 9 - Backdoor
Aula 9 - Backdoor
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
 
Técnicas de Invasão - INFOESTE 2015
Técnicas de Invasão - INFOESTE 2015Técnicas de Invasão - INFOESTE 2015
Técnicas de Invasão - INFOESTE 2015
 
Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2Proteja sua aplicação com o zend framework 2
Proteja sua aplicação com o zend framework 2
 
A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 

Ähnlich wie Segurança de aplicações web

Segurança em Aplicações Web
Segurança em Aplicações WebSegurança em Aplicações Web
Segurança em Aplicações WebCassio Ramos
 
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...tdc-globalcode
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesClavis Segurança da Informação
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos WebSergio Henrique
 
Seguranca e Criptografia de Dados
Seguranca e Criptografia de DadosSeguranca e Criptografia de Dados
Seguranca e Criptografia de DadosFelipe Plattek
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Clavis Segurança da Informação
 
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraAprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraClavis Segurança da Informação
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguroCharles Fortes
 
Engenharia de Software II - Teste de segurança de software
Engenharia de Software  II - Teste de segurança de softwareEngenharia de Software  II - Teste de segurança de software
Engenharia de Software II - Teste de segurança de softwareJuliano Padilha
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Seminário PHP Injection/ SQL Injection
Seminário PHP Injection/ SQL InjectionSeminário PHP Injection/ SQL Injection
Seminário PHP Injection/ SQL InjectionDavi Rodrigues
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...As Zone
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Thiago Dieb
 

Ähnlich wie Segurança de aplicações web (20)

Segurança em Aplicações Web
Segurança em Aplicações WebSegurança em Aplicações Web
Segurança em Aplicações Web
 
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Web app flaws
Web app flawsWeb app flaws
Web app flaws
 
Testes de segurança em aplicações web
Testes de segurança em aplicações webTestes de segurança em aplicações web
Testes de segurança em aplicações web
 
Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
Seguranca e Criptografia de Dados
Seguranca e Criptografia de DadosSeguranca e Criptografia de Dados
Seguranca e Criptografia de Dados
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010
Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010
Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010
 
Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
 
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraAprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
 
Engenharia de Software II - Teste de segurança de software
Engenharia de Software  II - Teste de segurança de softwareEngenharia de Software  II - Teste de segurança de software
Engenharia de Software II - Teste de segurança de software
 
PHP MySQL Aula 07
PHP MySQL Aula 07PHP MySQL Aula 07
PHP MySQL Aula 07
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Seminário PHP Injection/ SQL Injection
Seminário PHP Injection/ SQL InjectionSeminário PHP Injection/ SQL Injection
Seminário PHP Injection/ SQL Injection
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
 

Segurança de aplicações web

  • 1.
  • 2. Agenda 1. Segurança 2. Injeção de código 3. Ameaças 4. Oportunidades
  • 4. IHDR Image Header This chunk must appear FIRST. Its contents are: Width: 4 bytes Height: 4 bytes […] Width and height give the image dimensions in pixels. They are 4-byte integers. Zero is an invalid value. The maximum for each is (2^31)-1 in order to accommodate languages which have difficulty with unsigned 4-byte values.
  • 8.
  • 9. Trocando senhas <?PHP $login = $_GET[“login”]; $senha = encripta($_GET[“senha”]); $cmd = “echo ”.$senha; $cmd .= “ | passwd –-stdin ”.$login; system($cmd); ?>
  • 10. Trocando senhas $ echo <senha> | passwd --stdin login $ echo $6$jYk… | passwd --stdin bill $ echo $6$pOi… | passwd --stdin bill;dd if=/dev/zero of=/tmp/lixo bs=1M
  • 11. Dá pra limitar os danos? $ echo $6$pOi… | passwd --stdin bill&&dd if=/dev/zero of=/tmp/lixo bs=1M $ echo $6$pOi… | passwd --stdin bill - K||dd if=/dev/zero of=/tmp/lixo bs=1M $ echo $6$pOi… | passwd --stdin `dd if=/dev/zero of=/tmp/lixo bs=1M`
  • 12. A essência do problema 1. Não se pode confiar em dados recebidos de terceiros 2. Não se deve confiar em dados recuperados da memória secundária 3. Política e funcionalidade não devem ser fortemente acopladas
  • 14. SQL Injection • Ataque em que um formulário é preenchido com informações que interferem no fluxo de execução de consultas • Frequentemente aplicado em etapas de login – Geralmente, a seção de um sistema web onde há maior preocupação com segurança
  • 15. Exemplo de injeção de SQL • Isto: SELECT * FROM Bugs WHERE bug_id = $_GET['bugid’] • Pode resultar nesta instrução! SELECT * FROM Bugs WHERE bug_id = 1234 OR TRUE
  • 16. Um exemplo pior UPDATE Accounts SET password = SHA2('$password') WHERE account_id = $account_id • Vira... UPDATE Accounts SET password = SHA2(...) WHERE account_id = 1234 OR TRUE
  • 17. Directory traversal • Tipo de ataque que faz com que uma aplicação web acesse um arquivo não-desejado • Mais uma vez, ocorre quanto não se trata adequadamente parâmetros de entrada • Se um dos parâmetros indica um nome de arquivo, é possível manipulá-lo para que aponte para arquivos arbitrários no sistema do servidor
  • 18. Exemplo básico • Suponha um script que suporte isto: http://www.xxx.com/members/seepic.cgi?arq=0 01.jpg <? ... /* le imagem a ser exibida */ $base = “/amadoras/” $hdl = fopen($base.$_GET['arq'], “r”); $imagem = fread($hdl, filesize($hdl)); print $imagem; fclose($hdl); ?>
  • 19. Outras possibilidades • http://www.xxx.com/members/seepic.cgi?arq =../../../../../../../../../../etc/passwd  Alguns ataques usam caminhos codificados. Uma possibilidade é utilizar parâmetros com codificação de URL: seepic.cgi?arq=%2e%2e%2f... → (../) seepic.cgi?arq=%2e%2e%5c... → (..)
  • 20. XSS “Através de um XSS, o Cracker injeta códigos JavaScript em um campo texto de uma página já existente e este JavaScript é apresentado para outros usuários.” -- Wikipédia • Quase lá! – XSS pode ser reflexivo ou armazenado
  • 21. Google Gruyere • http://google-gruyere.appspot.com/ • Aplicação propositalmente desenvolvida com bugs • Um “testbed” para experiências em segurança
  • 22. Outras possibilidades? • LDAP Injection? • SMTP Injection? • Quick Response Injection?
  • 23.
  • 24. Existem oportunidades! • Assume-se que aplicações são “naturalmente frágeis” • Investe-se em segurança da “infraestrutura” – Firewalls e IDS – Consultoria – $$$
  • 25. O desenvolvedor • Conhece as principais tecnologias envolvidas • Está no cerne do problema • Possivelmente tem maior background acadêmico
  • 26. Possível suporte • https://www.owasp.org/ • www.microsoft.com/security/sdl/ • OWASP ESAPI • (ISC)2 – Secure Software Lifecycle Professional