Download - Enkla hackerknep för testare
Enkla hackerknep för testare
Michael Boman
Omegapoint AB
Kort om Michael Boman
• Säkerhetskonsult på Omegapoint (Stockholm)– Inriktning: Sårbarheter och skadlig kod
• Penetrationstestare• Incidenthanterare• Kursinstruktör
– Säker utveckling (J2EE & .NET)– Säkerhetstestning
Omegapoint-säkrar utvecklingen
Vi är det ledande Svenska konsultföretaget inom utveckling av säkra IT system med hög kvalitet.
Våra expertkonsulter levererar:
• Lösningar
• Uppdrag
• Utbildningar
Vi är experter på hela utvecklingscykeln från design, krav och utveckling till test och överlämning.
Göteborg
MalmöKalmar
Stockholm
Falun
Vad kommer vi kommer att gå igenom
• Vad är säkerhetstestning?• Skillnaden mellan test och säkerhetstest• Säkerhetstestning av webbapplikationer /
fet-applikationer & klient/server system• Verktyg för webbapplikationstestning• OWASP Testing Guide och OWASP Top 10• DEMO (SQL Injection & XSS)• Hur du går vidare
Vad är säkerhetstestning?
• Kärt barn har många namn– Säkerhetstestning– Penetrationstestning– Etisk Hackning (eng: ethical hacking)
Skillnaden mellan testning och säkerhetstestning
• ”Vanlig” test testar generellt att testa att system utför vad det skall göra enligt de krav som ställts
• Säkerhetstestning testar vad mer man kan få systemet att göra
Säkerhetstestning av webbapplikationer / feta klienter
• OWASP Testing Guide• OWASP Top 10• SANS/Mitre Top 25
WebbapplikationKlient/Server & Fet-applikation
Sky
ddsv
ärde
Hög
tLå
gt
O2 - Cross-Site Scripting (XSS)
O3 - Broken Authentication and Session Management
O4 - Insecure Direct Object References
O5 - Cross-Site Request Forgery (CSRF)
O8 - Failure to Restrict URL Access
O9 - Insufficient Transport Layer Protection
O10 - Unvalidated Redirects and Forwards
M1 - Failure to Preserve Web Page Structure ('Cross-site Scripting')
M2 - Improper Sanitization of Special Elements used in an SQL Command ('SQL Injection')
M3 - Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')
M4 - Cross-Site Request Forgery (CSRF)
M7 - Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
M8 - Unrestricted Upload of File with Dangerous Type
M11 - Use of Hard-coded Credentials
M12 - Buffer Access with Incorrect Length Value
M13 - Improper Control of Filename for Include/Require Statement in PHP Program ('PHP File Inclusion')M14 - Improper Validation of Array Index
M15 - Improper Check for Unusual or Exceptional Conditions
M16 - Information Exposure Through an Error Message
M17 - Integer Overflow or Wraparound
M18 - Incorrect Calculation of Buffer Size
M20 - Download of Code Without Integrity Check
M22 - Allocation of Resources Without Limits or Throttling
M23 - URL Redirection to Untrusted Site ('Open Redirect')
M25 - Race Condition
O1 - InjectionO6 - Security Misconfiguration
O7 - Insecure Cryptographic Storage
M5 - Improper Access Control (Authorization)
M6 - Reliance on Untrusted Inputs in a Security Decision
M9 - Improper Sanitization of Special Elements used in an OS Command ('OS Command Injection')
M10 - Missing Encryption of Sensitive Data
M19 - Missing Authentication for Critical Function
M21 - Incorrect Permission Assignment for Critical Resource
M24 - Use of a Broken or Risky Cryptographic Algorithm
Verktyg för webbapplikationstestning
• Man-in-the-middle proxy– Paros Proxy– Webscarab– BURP Suite
• Fuzzing verktyg– JBroFuzz– Fuzzdb (databas med fuzzing strängar)
• Klienter och utvecklingsverktyg
OWASP Testning Guide och OWASP Top 10
• OWASP Testing Guide– 66 olika tester definierade spritt över 10 olika
områden
• OWASP Top 10– Dom 10 mest allvarliga säkerhetsproblemen– Refererad i PCI-DSS standarden
OWASP Top 10 (2010)
• A1: Injection• A2: Cross-Site Scripting (XSS)• A3: Broken Authentication and Session Management• A4: Insecure Direct Object References• A5: Cross-Site Request Forgery (CSRF)• A6: Security Misconfiguration• A7: Insecure Cryptographic Storage• A8: Failure to Restrict URL Access• A9: Insufficient Transport Layer Protection• A10: Unvalidated Redirects and Forwards
DEMO
• SQL Injection• Cross Site Scripting (XSS)
SQL InjectionTeori
SQL-statements
sql = "SELECT * FROM users WHEREuser = '" + user + "' AND password = '" + password + "' ";
SQL-statements
sql = "SELECT * FROM users WHEREuser = '" + user + "' AND password = '" + password + "'";
SQL Injection Exempel
user = 'OR 1=1 --password = blabla
SQL-statements
sql = "SELECT * FROM users WHEREuser = '' OR 1=1 --' AND password = 'blabla' ";
SQL-statements
sql = "SELECT * FROM users WHEREuser = ‘‘ OR 1=1 --’ AND password = ‘blabla’";
SQL Injection - konsekvenser
• Exponering av allt i databasen som databasanvändaren kan få åtkomst till– Läs, skriv, ändra, ta bort - förstör
• Kringgå autentisering / inloggning• Exekvera kod på server• Läsa filer på databasen
Okänd applikation
• Kan man lära sig schemat för en okänd applikation?
• Kända systemtabeller– Microsoft: Sysobjects, …– Oracle: User_tables, User_source, …
• Kända systemvariabler– User, …
SQL InjectionDemo
Cross Site Scripting (XSS)Teori
Cross-Site Scripting
• Attackeraren kör (skript) kod i användarens webbläsare– Kan styra vad användaren ser och gör
Cross-Site Scripting Typer
• Typ 0: DOM• Typ 1: Reflekterad• Typ 2: Lagrad
Cross-Site Scripting (typ 2)
Cross-Site Scripting
• Kräver skript stöd i webbläsaren– JavaScript– VBScript (IE)
Cross Site Scripting (XSS)Demo
Hur du går vidare
• Skapa ett labb där du kan öva och utveckla dina kunskaper
• Läs ”facklitteratur”– Böcker– Tidningar– Bloggar– Mailinglistor– Sociala nätverk