Bezpečnost webových aplikací Web Inkognito VŠE 05/2013

Post on 19-Jun-2015

359 views 4 download

transcript

Michal Špaček, @iz228 VŠE, květen 2013www.michalspacek.cz @spazef0rze

Slajdy jsou bez mých poznámek,nedávají tedy moc smysl pro toho, kdo na semináři nebyl.

Michal Špaček @spazef0rze www.michalspacek.cz

Útoky na web

SQL Injection

Cross-Site Scripting

Full Path Disclosure…

a stovky dalších

Michal Špaček @spazef0rze www.michalspacek.cz

Full Path Disclosure (FPD)

Vyzrazení plné cesty ke skriptuhttp://devblog.cz/2012/04/fpd-aneb-full-path-disclosure/

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Řešení?

display_errors = Off

Michal Špaček @spazef0rze www.michalspacek.cz

log_errors = On

Michal Špaček @spazef0rze www.michalspacek.cz

Cross-Site Scripting (XSS)

Útočník vloží na naši stránkuvlastní HTML nebo JS kód

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

hledej?search=a“><img src=“…

HTML Injection (Hi)

value=“a“><img src=“…“>

Michal Špaček @spazef0rze www.michalspacek.cz

Řešení?

htmlspecialchars($string)

Michal Špaček @spazef0rze www.michalspacek.cz

htmlspecialchars($string, ENT_QUOTES)

Michal Špaček @spazef0rze www.michalspacek.cz

Nepoužívat

strip_tags()

proti XSS

Michal Špaček @spazef0rze www.michalspacek.cz

SQL Injection

Útočník modifikuje SQL dotaz

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

"… WHERE znacka = '{$_GET['znacka']}'"

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

'… WHERE id = ' . $_GET['id']

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

' OR 1=1; --

Michal Špaček @spazef0rze www.michalspacek.cz

SELECT jmeno, adresa FROM vozidla

WHERE rz =

'$prectena';

Michal Špaček @spazef0rze www.michalspacek.cz

SELECT jmeno, adresa FROM vozidla

WHERE rz = '1AM 1337';

1AM 1337

Michal Špaček @spazef0rze www.michalspacek.cz

SELECT jmeno, adresa

FROM vozidla

WHERE rz = '' OR 1=1;

--';

' OR 1=1; --

Michal Špaček @spazef0rze www.michalspacek.cz

Řešení?

Prepared statements (PDO)

Michal Špaček @spazef0rze www.michalspacek.cz

SELECT jmeno, adresa

FROM vozidla

WHERE rz = ?;

' OR 1=1; --

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

mysql_set_charset()

mysql_real_escape_string()

Michal Špaček @spazef0rze www.michalspacek.cz

Nepoužívat

addslashes()

proti SQLIA

Michal Špaček @spazef0rze www.michalspacek.cz

2012 …

Michal Špaček @spazef0rze www.michalspacek.cz

2012 … 56

Michal Špaček @spazef0rze www.michalspacek.cz

2011 … 51

2010 … 59

2009 … 82

Michal Špaček @spazef0rze www.michalspacek.cz

Cross-SitePort Attack

(XSPA)

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

DistributedDenial-of-Service

(DDoS)

Michal Špaček @spazef0rze www.michalspacek.cz

Hashování hesel

Nepoužívat MD5

Ani SHA-1

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Řešení?

SHA-512 a salt?

hash_hmac()

Michal Špaček @spazef0rze www.michalspacek.cz

oclHashcat

md5($pass.$salt)

md5($salt.$pass)

sha1($pass.$salt)

sha1($salt.$pass)

Michal Špaček @spazef0rze www.michalspacek.cz

Lepší řešení?

scrypt

Michal Špaček @spazef0rze www.michalspacek.cz

bcryptBlowfish hashing

Michal Špaček @spazef0rze www.michalspacek.cz

crypt() salt=$2y$…

password_hash()password_verify()

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

robots.txt

Michal Špaček @spazef0rze www.michalspacek.cz

Michal Špaček @spazef0rze www.michalspacek.cz

/.svn/entries

Michal Špaček @spazef0rze www.michalspacek.cz

http://hostname/.svn/text-base/index.php.svn-base

That's it. That's me.

Michal Špačekwww.michalspacek.cz

@spazef0rze

Přijďte na školeníhttp://www.michalspacek.cz/skoleni