Security Testing Java Web Applications
Security Testing Java Web Applications
Overview
This Security Testing Java Web Applications training teaches attendees how to pinpoint and
fix web application security issues found in Java code. Students learn how to find potential
problems during testing and how to implement security testing methodology, techniques,
and tools into their Java programming. References to A1, A2, etc. in the outline reference
specific vulnerabilities in the OWASP Top 10.
Note: To ensure ample one-on-one engagement with the instructor, this class is capped at
12 people, overriding Accelebrate’s default cap of 15.
Prerequisites
All students must have general Java, web development, and testing experience.
Materials
Attendees will not need to install any software on their computers for this class. The class
will be conducted in a remote environment that Accelebrate will provide; students will only
need a local computer with a web browser and a stable Internet connection. Any recent
version of Microsoft Edge, Mozilla Firefox, or Google Chrome will work well.
Objectives
Outline
Introduction
Cyber Security Basics
o What is security?
Copyright ©2003-2024 Accelebrate, LLC. Some outlines may contain content from our courseware partners; such
content is protected by these partners' copyrights. All trademarks are owned by their respective owners.
o Threat and risk
o Cyber security threat types
o Consequences of insecure software
OWASP Top 10 (Part 1)
o A1: Injection
Injection principles
Injection attacks
SQL injection
SQL injection best practices
Code injection
Injection best practices
o A2: Broken Authentication
Authentication basics
Authentication weaknesses
Spoofing on the Web
Testing for weak authentication
Case study – PayPal 2FA bypass
Password management
Security Testing
o Security testing vs functional testing
o Manual and automated methods
o Security testing methodology
Security testing – goals and methodologies
Overview of security testing processes
Identifying and rating assets
Threat modeling
Security testing approaches
The OWASP Top 10 (Part 2)
o A3: Sensitive Data Exposure
Information exposure
Exposure through extracted data and aggregation
Case study – Strava data exposure
o A4: XML External Entities (XXE)
DTD and the entities
Entity expansion
External Entity Attack (XXE)
o A5: Broken Access Control
Access control basics
Failure to restrict URL access
Testing for authorization issues
Confused deputy
File upload
o A6: Security Misconfiguration
Configuration principles
Configuration management
Java related components – best practices
o A7: Cross-site Scripting (XSS)
Cross-site scripting basics
Cross-site scripting types
XSS protection best practices
o A8: Insecure Deserialization
Serialization and deserialization challenges
Deserializing untrusted streams
Deserialization best practices
Using ReadObject
Copyright ©2003-2024 Accelebrate, LLC. Some outlines may contain content from our courseware partners; such
content is protected by these partners' copyrights. All trademarks are owned by their respective owners.
Sealed objects
Look ahead deserialization
Testing for insecure deserialization
Property Oriented Programming (POP)
o A9: Using Components with Known Vulnerabilities
Using vulnerable components
Untrusted functionality import
Importing JavaScript
Case study – The British Airways data breach
Vulnerability management
o A10: Insufficient Logging & Monitoring
Logging and monitoring principles
Insufficient logging
Plaintext passwords at Facebook
Logging best practices
OWASP security logging library for Java
Web Application Security Beyond the Top Ten
o Client-side security
o Tabnabbing
o Reverse tabnabbing
o Frame sandboxing
Cross-Frame Scripting (XFS) attack
Clickjacking
Clickjacking beyond hijacking a click
Clickjacking protection best practices
Using CSP to prevent clickjacking
Security Testing Techniques and Tools
o Code analysis
Security aspects of code review
Static Application Security Testing (SAST)
Using static analysis tools
o Dynamic analysis
Security testing at runtime
Penetration testing
Stress testing
Dynamic analysis tools
Dynamic Application Security Testing (DAST)
Web vulnerability scanners
SQL injection tools
Proxy servers
Fuzzing
Common software security weaknesses
o Input validation
Blacklists and whitelists
Data validation techniques
What to validate – the attack surface
Where to validate – defense in depth
How to validate – validation vs transformations
Output sanitization
Encoding challenges
Validation with regex
o Unsafe reflection
Reflection without validation
Wrap Up
o Secure coding principles
Copyright ©2003-2024 Accelebrate, LLC. Some outlines may contain content from our courseware partners; such
content is protected by these partners' copyrights. All trademarks are owned by their respective owners.
Principles of robust programming by Matt Bishop
Secure design principles of Saltzer and Schröder
o And now what?
Software security sources and further reading
Java resources
Security testing resources
Copyright ©2003-2024 Accelebrate, LLC. Some outlines may contain content from our courseware partners; such
content is protected by these partners' copyrights. All trademarks are owned by their respective owners.