TT8320-J - Secure Java Coding Camp | Attacking & Securing Java / JEE Web Applications

Attacking and Securing Java Web Applications is a lab-intensive, hands-on Java / JEE security training course that provides a unique coverage of Java application security. In this course, students begin with penetration testing, hunting for bugs in Java web applications. They then thoroughly examine best practices for defensively coding web applications, covering all the OWASP Top Ten as well as several additional prominent vulnerabilities (such as file uploads, CSRF and direct object references). Students will repeatedly attack and then defend various assets associated with fully functional web applications and services. This hands-on approach drives home the mechanics of how to secure JEE web applications in the most practical of terms.

Audience Profile
This is an intermediate -level programming course, designed for experienced Java developers who wish to get up and running on developing well defended software applications.

Student Testimonials

Instructor did a great job, from experience this subject can be a bit dry to teach but he was able to keep it very engaging and made it much easier to focus. Student
Excellent presentation skills, subject matter knowledge, and command of the environment. Student
Instructor was outstanding. Knowledgeable, presented well, and class timing was perfect. Student

Click here to print this page »


Familiarity with Java and JEE is required and real world programming experience is highly recommended. Ideally students should have approximately 6 months to a year of Java and JEE working knowledge.

Detailed Class Syllabus

Session: Bug Hunting Foundation

The Language of Cybersecurity
· The Changing Cybersecurity Landscape
· AppSec Dissection of SolarWinds
· The Human Perimeter
· First Axiom in Web Application Security Analysis
· First Axiom in Addressing ALL Security Concerns
· Lab: Case Study in Failure
Lesson: Safe and Appropriate Bug Hunting/Hacking
· Warning to All Bug Hunters
· Working Ethically
· Respecting Privacy
· Bug/Defect Notification
· Bug Hunting Pitfalls

Session: Moving Forward From Hunting Bugs

· Open Web Application Security Project (OWASP)
· OWASP Top Ten Overview
· Web Application Security Consortium (WASC)
· CERT Secure Coding Standard
· Microsoft Security Response Center
· Software-Specific Threat Intelligence
· Tutorial: Working with Eclipse (JEE Version) and Apache TomEE 7x
· Tutorial: Working with the HSQL Database
· Lab: Case Study Setup and Review

Session: Bug Stomping 101

Lesson: Unvalidated Data
· Potential Consequences
· Defining and Defending Trust Boundaries
· Rigorous, Positive Specifications
· Allow Listing vs Deny Listing
· Challenges: Free-Form Text, Email Addresses, and Uploaded Files
· Lab: Defending Trust Boundaries

Lessons A01-A10

Lesson: A01: Broken Access Control
· Elevation of Privileges
· Insufficient Flow Control
· Unprotected URL/Resource Access/Forceful Browsing
· Metadata Manipulation (Session Cookies and JWTs)
· Understanding and Defending Against CSRF
· CORS Misconfiguration Issues
· Lab: Unsafe Direct Object References
· Lab: Spotlight: Verizon
· Lab: Cross-Site Request Forgeries
Lesson: A02: Cryptographic Failures
· Identifying Protection Needs
· Evolving Privacy Considerations
· Options for Protecting Data
· Transport/Message Level Security
· Weak Cryptographic Processing
· Keys and Key Management
· NIST Recommendations
· Lab: Defending Sensitive Data
Lesson: A03: Injection
· Pattern for All Injection Flaws
· Misconceptions With SQL Injection Defenses
· Drill Down on Stored Procedures
· Other Forms of Server-Side Injection
· Minimizing Server-Side Injection Flaws
· Client-side Injection: XSS
· Persistent, Reflective, and DOM-Based XSS
· Best Practices for Untrusted Data
· Lab: Defending Against SQL Injection
· Lab: Defending Against XSS
Lesson: A04: Insecure Design
· Secure Software Development Processes
· Shifting Left
· Principles for Securing All Designs
· Leveraging Common AppSec Practices and Control
· Paralysis by Analysis
· Actionable Application Security
· Additional Tools for the Toolbox
· Lab: Case Study Asset Analysis
Lesson: A05: Security Misconfiguration
· System Hardening: IA Mitigation
· Risks with Internet-Connected Resources
· Minimalist Configurations
· Application Allow Listing
· Secure Baseline
· Segmentation with Containers and Cloud
· Safe XML Processing
· Lab: Safe XML Processing
Session: Bug Stomping 102
Lesson: A06: Vulnerable and Outdated Components
· Problems with Vulnerable Components
· Software Inventory
· Managing Updates: Balancing Risk and Timeliness
· Virtual Patching
· Dissection of Ongoing Exploits
· Lab: Spotlight: Equifax
Lesson: A07: Identification and Authentication Failures
· Quality and Protection of Authentication Data
· Anti-Automation Defenses
· Multifactor Authentication
· Proper Hashing of Passwords
· Handling Passwords on Server Side
· Lab: Defending Authentication
Lesson: A08: Software and Data Integrity Failures
· Software Integrity Issues and Defenses
· Using Trusted Repositories
· CI/CD Pipeline Issues
· Protecting Software Development Resources
· Serialization/Deserialization
Lesson: A09: Security Logging and Monitoring Failures
· Detecting Threats and Active Attacks
· Best Practices for Logging and Logs
· Safe Logging in Support of Forensics
· Lab: Error Handling
Lesson: A10: Server-Side Request Forgeries (SSRF)
· Understanding SSRF
· Remote Resource Access Scenarios
· Complexity of Cloud Services
· SSRF Defense in Depth
· Positive Allow Lists

Session: Moving Forward with Application Security

Lesson: Applications: What Next?
· Common Vulnerabilities and Exposures
· CWE/SANS Top 25 Most Dangerous SW Errors
· Strength Training: Project Teams/Developers
· Strength Training: IT Organizations
· Lab: Spotlight: Capital One

Session: Secure Development Lifecycle (SDL)

Lesson: SDL Overview
· Attack Phases: Offensive Actions and Defensive Controls
· Secure Software Development Processes
· Shifting Left
· Actionable Items Moving Forward
Lesson: SDL In Action
· Risk Escalators
· Risk Escalator Mitigation
· SDL Phases
· Actions for each SDL Phase
· SDL Best Practices