How To Break Web Software
How To Break Web Software
Software
Functional and Security Testing of Web
Applications and Web Services
Joe Basirico
Dev. Manager
Course outline
– So Organizations can..
• Understand the vulnerabilities and risks that their software
systems pose
• Incorporate security and manage risk throughout the Software
Development and Management lifecycle.
Vulnerabilities
9000
8000
7000
6000
5000
4000 Vulnerabilities
3000
2000
1000
0
1999 2000 2001 2002 2003 2004 2005 2006 2007 2008
(Extrapolated)
http://www.cert.org/stats/fullstats.html
Need More?
Reliability
Maintainability Performance
Security
Functionality Usability
The fault model
• Overview
• When to apply this attack
• How to conduct this attack
• How to protect against this attack
• Example or Demo
Course outline
• Use a tool!
– Grep is your friend ☺
Panning for gold
Grep – or other regex search
JavaScript is
• JavaScript is not a security feature!!!!
• JavaScript is not a security feature!!!!
• JavaScript is not a security feature!!!!
not a security
• JavaScript is not a security feature!!!!
• JavaScript is not a security feature!!!!
feature!!!!
• JavaScript is not a security feature!!!!
• JavaScript is not a security feature!!!!
• JavaScript is not a security feature!!!!
• JavaScript is not a security feature!!!!
Attack 2 Bypass client side validation
Overview
• Hidden fields
• Input size restrictions
Bypass client side validation
How to conduct this attack
We put in:
sam’ --
(effectively removes the need for a password!)
New Query:
Select * From Financial_Records Where username = ‘sam’-- ’
and password = ‘ ‘
Result: Sam’s records without needing a password!
Attack 3 Buffer overflows
Overview
• Try variable length strings and look for = signs at the end
(base64 encoding)
• Change one letter and look how the encrypted string changes
– ROT
– XOR
• Use a tool
– Napkin
– Many online tools
• VGhpcyBpcyBzZWN1cmUgcmlnaHQ/
• dGhlIHF1aWNrIGJyb3duIGZveA==
• %73%75%70%65%72%20%73%65%63%75%72%65%21
• rtodq rdbtqd?
• F8238BA10DCB2F19F21D5A48FB735558
• 64C7F53D540AAFB387FEE20A40BF03854E0925B3
Complete list
• Gathering Information on the • Attacking User Supplied Input
Target Data
– Panning for gold – Cross-site scripting
– Guessing files and directories – SQL injection
– Holes left by other people – Directory traversal
• Vulnerabilities in sample applications
• Language Based Attacks
• Attacking the Client – Buffer overflows
– Bypass restrictions on input choices
– Canonicalization
– Bypass client-side validation – NULL-string attacks
• State-Based Attacks • Attacking the Server
– Hidden fields – SQL injection II – Stored procedures
– CHI parameters – Command injection
– Cookie poisoning – Fingerprinting the server
– URL jumping – Denial of service
– Session hijacking
• Authentication
– Fake Cryptography
– Breaking authentication
– Cross-site tracing
– Forcing weak cryptography
How to Contact Me - Joe Basirico
Telephone
c) 1 (206) 227-6458
w) 1 (206) 438-3910
Questions? Comments?