Secure Coding Attack Lab
Hands-On Application Security and PCI DSS Workshop - 2 days
Modern applications are assembled from APIs, databases, third-party components, browser code, authentication services and cryptographic libraries. A weakness in any one of these layers can expose payment data or provide a path into connected systems. This intensive workshop concentrates on the practical engineering work required to identify, reproduce and correct the application weaknesses covered by PCI DSS Requirement 6, with technical coverage aligned to current OWASP web and API security risks.
Participants work directly with deliberately vulnerable applications, intercepted requests, source code, API endpoints and security-testing tools. The instructor brings over 30 years of industry experience and delivers the course from a working practitioner’s perspective, using realistic development and troubleshooting workflows rather than academic lectures.
Learning Outcomes
Participants will be able to:
- Establish a controlled application-security testing environment
- Trace untrusted input through application code and data flows
- Reproduce SQL, LDAP, XPath, command and object-injection weaknesses
- Identify unsafe buffer, pointer, deserialization and shared-data handling
- Detect weak cryptographic implementations and insecure key handling
- Test APIs, communication channels and client-side functionality
- Identify XSS, CSRF and business-logic abuse cases
- Test authentication, authorisation and access-control enforcement
- Apply secure coding corrections to vulnerable components
- Validate fixes through repeatable negative and regression testing
- Perform focused manual secure-code reviews
- Produce actionable vulnerability findings and remediation evidence
- Integrate practical security checks into development and release workflows
Prerequisites
- Basic software-development or application-support experience
- Familiarity with HTTP requests, responses and web applications
- Basic understanding of APIs and database-backed applications
- Ability to read code in at least one common programming language
- Basic command-line skills
- Administrator access to the supplied lab workstation or virtual machine
- A laptop capable of running the designated lab environment
- No previous penetration-testing experience required
Training Outline
- Practical Application-Security Lab Environment
- Isolated Testing Architecture
- Deliberately vulnerable application deployment
- Local application and database services
- Test-user and role configuration
- Application reset and recovery procedures
- Safe handling of test data
- Security Testing Toolchain
- Browser developer tools
- Intercepting proxy configuration
- HTTP request repeater
- API client configuration
- Command-line request utilities
- Source-code editor integration
- Database inspection tools
- Static analysis utilities
- Dependency and secret scanning tools
- Application Attack-Surface Mapping
- Web routes and application functions
- API endpoints and HTTP methods
- Parameters, headers, cookies and request bodies
- File uploads and data-import functions
- Authentication and session boundaries
- Role and permission boundaries
- Database interaction points
- External service integrations
- Client-side trust boundaries
- Isolated Testing Architecture
- Practical Secure-Code Review Workflow
- Source-Code Orientation
- Application entry points
- Controllers and route handlers
- Service-layer functions
- Data-access components
- Authentication middleware
- Authorisation checks
- Cryptographic operations
- Error-handling routines
- Untrusted Data Tracing
- Input sources
- Data transformations
- Validation boundaries
- Encoding boundaries
- Security-sensitive sinks
- Cross-component data flow
- Client-controlled state
- Server-controlled state
- Review Techniques
- Entry-point analysis
- Source-to-sink tracing
- Security-control verification
- Positive and negative path review
- Abuse-case review
- Diff-based security review
- Tool-assisted code review
- Manual validation of automated findings
- Source-Code Orientation
- Injection Attack Lab
- SQL Injection
- Query parameter manipulation
- Form-input manipulation
- Authentication query weaknesses
- Numeric and string-context injection
- Error-based behaviour
- Blind response behaviour
- Unsafe dynamic queries
- Parameterised query remediation
- Database-permission restrictions
- Remediation verification
- Command Injection
- Operating-system command construction
- Shell metacharacter handling
- Argument injection
- Unsafe process execution
- Command allow-listing
- Safe process APIs
- Privilege reduction
- Corrective testing
- LDAP Injection
- Directory-search filters
- Authentication filter manipulation
- Distinguished-name handling
- Escaping and validation
- Safe directory-query construction
- Fix validation
- XPath and XML Injection
- XPath query construction
- XML input handling
- Query predicate manipulation
- Safe expression handling
- Parser configuration
- Remediation testing
- Object and Expression Injection
- Dynamic property access
- Expression-language evaluation
- Template injection concepts
- Reflection and dynamic invocation
- Unsafe object binding
- Restrictive binding models
- Allow-listed property handling
- Fault and Error Injection
- Invalid input types
- Boundary-value manipulation
- Missing and malformed parameters
- Exception-path testing
- Fail-open behaviour
- Information leakage through errors
- Secure error-response handling
- SQL Injection
- Data and Data-Structure Attack Lab
- Buffer and Boundary Weaknesses
- Fixed-size data structures
- Length and bounds validation
- Integer conversion risks
- Integer overflow and underflow
- Truncation and sign errors
- Safe memory-handling functions
- Boundary-focused testing
- Pointer and Reference Handling
- Null-reference conditions
- Stale object references
- Shared mutable state
- Unsafe lifecycle assumptions
- Resource ownership
- Defensive reference validation
- Unsafe Deserialization
- Untrusted serialized input
- Type reconstruction
- Polymorphic object handling
- Gadget-chain exposure concepts
- Schema-restricted formats
- Trusted-type allow-listing
- Integrity verification
- Secure replacement patterns
- Mass Assignment and Object Binding
- Automatic request-to-object mapping
- Hidden and privileged properties
- Over-posting
- Data-transfer objects
- Explicit property mapping
- Property-level authorisation
- Negative test cases
- Shared Data and Concurrency
- Race conditions
- Time-of-check to time-of-use weaknesses
- Duplicate transaction processing
- Shared session state
- Locking and atomicity
- Idempotency controls
- Concurrency test design
- File and Data Processing
- File-name manipulation
- Path traversal
- Content-type trust
- File-size and structure validation
- Archive extraction risks
- Temporary-file handling
- Secure storage boundaries
- Malicious data-import scenarios
- Buffer and Boundary Weaknesses
- Cryptography Usage Attack Lab
- Cryptographic Implementation Review
- Approved algorithm selection
- Deprecated algorithm identification
- Cipher mode selection
- Key-length verification
- Random-number generation
- Initialization-vector handling
- Salt and nonce handling
- Library and provider configuration
- Password Protection
- Plaintext password discovery
- Reversible password storage
- Fast-hash weaknesses
- Password-hashing functions
- Salt generation
- Work-factor configuration
- Credential migration strategies
- Password-verification testing
- Encryption at Rest
- Sensitive-field identification
- Key separation
- Data-encryption boundaries
- Authenticated encryption
- Integrity protection
- Decryption authorisation
- Secure failure handling
- Encryption in Transit
- TLS configuration review
- Certificate validation
- Hostname verification
- Trust-store handling
- Insecure protocol fallback
- Internal service communication
- API transport protection
- Key and Secret Management
- Hard-coded credentials
- Embedded API keys
- Source-repository exposure
- Configuration-file secrets
- Environment-based secret injection
- Central secret storage
- Key rotation
- Secret revocation
- Log and diagnostic leakage
- Automated secret scanning
- Cryptographic Misuse Testing
- Predictable tokens
- Reused nonces
- Static initialization vectors
- Weak signing implementations
- Missing integrity checks
- Improper certificate validation
- Secure remediation verification
- Cryptographic Implementation Review
- Business-Logic Attack Lab
- Business-Process Mapping
- Intended transaction sequence
- Required approvals
- State transitions
- Trust assumptions
- Monetary and quantity boundaries
- User and administrator functions
- Server-side enforcement points
- Workflow Manipulation
- Step skipping
- Request replay
- Out-of-order operations
- Duplicate submissions
- State-parameter tampering
- Transaction rollback abuse
- Partial-completion abuse
- Server-side state validation
- Parameter and Value Manipulation
- Price manipulation
- Quantity manipulation
- Discount and promotion abuse
- Currency and decimal handling
- Negative and extreme values
- Hidden-field manipulation
- Server-side value calculation
- Boundary and invariant enforcement
- Function and Feature Abuse
- Undocumented functionality
- Administrative function exposure
- Feature-flag manipulation
- Debug-function exposure
- Bulk-operation misuse
- Export-function misuse
- Account-recovery abuse
- Rate and quota bypass
- Race and Replay Scenarios
- Concurrent request submission
- Duplicate payment operations
- One-time action reuse
- Token replay
- Idempotency-key handling
- Transaction locking
- Replay-resistant design
- Business-Process Mapping
- API Security Attack Lab
- API Discovery and Inspection
- API documentation review
- Endpoint enumeration
- HTTP method testing
- Request-body inspection
- Authentication-token handling
- Versioned endpoint discovery
- Hidden and deprecated endpoints
- API Object-Level Authorisation
- Object-identifier manipulation
- Horizontal access testing
- Cross-account data access
- Record update and deletion testing
- Server-side ownership validation
- Deny-by-default access
- Negative authorisation tests
- API Function-Level Authorisation
- User-to-administrator function access
- HTTP method switching
- Restricted route exposure
- Role-check placement
- Centralised policy enforcement
- Privilege regression testing
- API Property-Level Authorisation
- Sensitive property exposure
- Excessive data response
- Privileged property modification
- Request-field allow-listing
- Response-field filtering
- Role-specific data models
- API Resource Protection
- Pagination limits
- Request-size limits
- Query-complexity limits
- Rate limiting
- Batch-request controls
- Expensive operation protection
- Timeout and cancellation handling
- API Inventory and Lifecycle
- Endpoint ownership
- Version inventory
- Deprecated API handling
- Test and staging endpoint exposure
- Documentation consistency
- Route retirement
- Security regression coverage
- API Discovery and Inspection
- Communication Protocol and Channel Security
- HTTP Security Behaviour
- Method restrictions
- Header trust
- Proxy-header handling
- Host-header manipulation
- Content-type enforcement
- Redirect handling
- Caching controls
- Service-to-Service Communication
- Service identity
- Mutual authentication
- Certificate trust
- Token audience and scope
- Message integrity
- Replay protection
- Timeout and retry behaviour
- Real-Time and Asynchronous Channels
- WebSocket authentication
- Message authorisation
- Queue and topic permissions
- Event payload validation
- Subscription isolation
- Message replay
- Dead-letter data exposure
- HTTP Security Behaviour
- Client-Side Security Attack Lab
- Browser Trust Boundaries
- Client-side validation bypass
- Hidden-field manipulation
- Local storage exposure
- Browser token storage
- JavaScript-accessible secrets
- Server-side validation requirements
- Cross-Site Scripting
- Reflected XSS
- Stored XSS
- DOM-based XSS
- HTML-context injection
- Attribute-context injection
- JavaScript-context injection
- Unsafe DOM operations
- Context-aware output encoding
- HTML sanitisation
- Content Security Policy
- Remediation validation
- Cross-Site Request Forgery
- State-changing request discovery
- Cookie-based authentication
- Forged form submissions
- API request forgery
- Anti-CSRF tokens
- SameSite cookie controls
- Origin and referer validation
- Re-authentication for sensitive actions
- Fix verification
- Client-Side Functional Abuse
- Disabled-control bypass
- Front-end role-check bypass
- JavaScript function invocation
- Client-calculated values
- Exposed configuration
- Source-map exposure
- Server-side control enforcement
- Browser Communication Controls
- Cross-origin resource sharing
- Trusted-origin configuration
- Credentialed cross-origin requests
- Frame embedding
- Clickjacking protection
- Security-header validation
- Browser Trust Boundaries
- Authentication Attack Lab
- Credential Handling
- Hard-coded credentials
- Default credentials
- Credential disclosure
- Username enumeration
- Password reset weaknesses
- Credential transport
- Secure credential storage
- Authentication Workflow Testing
- Login request manipulation
- Multi-factor workflow bypass
- Recovery-flow abuse
- Remember-me functionality
- Account-lockout behaviour
- Rate limiting
- Re-authentication controls
- Session Management
- Session-token predictability
- Session fixation
- Token reuse
- Logout invalidation
- Idle and absolute timeout
- Concurrent session handling
- Cookie security attributes
- Session rotation
- Server-side revocation
- Token-Based Authentication
- Token structure review
- Signature validation
- Algorithm enforcement
- Issuer and audience validation
- Expiration handling
- Scope enforcement
- Refresh-token protection
- Token revocation
- Credential Handling
- Access-Control Attack Lab
- Access-Control Model Mapping
- Users, roles and permissions
- Resources and operations
- Ownership boundaries
- Administrative boundaries
- Tenant boundaries
- Policy decision points
- Policy enforcement points
- Horizontal Privilege Escalation
- User-to-user data access
- Identifier substitution
- Cross-account actions
- Resource ownership checks
- Tenant-isolation testing
- Vertical Privilege Escalation
- User-to-administrator access
- Restricted function invocation
- Role-parameter manipulation
- Privileged route access
- Server-side permission enforcement
- Direct Object Reference Testing
- Sequential identifiers
- Predictable identifiers
- Identifier discovery
- Read, update and delete operations
- Indirect reference patterns
- Per-object authorisation
- Enforcement Weaknesses
- Missing middleware
- Inconsistent endpoint checks
- Client-side-only restrictions
- Fail-open permission checks
- Cached authorisation decisions
- Default-allow policies
- Deny-by-default remediation
- Access-Control Regression Testing
- Role-permission test matrix
- Positive access tests
- Negative access tests
- Cross-role tests
- Cross-tenant tests
- Automated authorisation checks
- Access-Control Model Mapping
- Secure Remediation Workshop
- Vulnerability Triage
- Reproduction reliability
- Attack preconditions
- Data and function exposure
- Exploitability
- Business impact
- Root-cause classification
- Remediation priority
- Secure Coding Corrections
- Input validation
- Parameterised operations
- Context-aware output encoding
- Explicit object binding
- Centralised authorisation
- Secure cryptographic APIs
- Safe error handling
- Least-privilege execution
- Secure default configuration
- Fix Validation
- Original attack replay
- Negative testing
- Boundary testing
- Alternate payload testing
- Role-based regression testing
- API regression testing
- Static analysis reruns
- Dependency scan reruns
- Evidence capture
- Vulnerability Triage
Disclaimer
This training outline is provided as a proposed instructional framework and may be refined, reordered, expanded or otherwise amended by the trainer to accommodate participant experience, technical constraints, organisational priorities, lab progress and emerging industry practices. Such adjustments may be made at the trainer’s professional discretion without prior notice, provided that the overall learning objectives and intended practical character of the programme are preserved.
Practical, connected learning
My wider training approach brings hands-on implementation and systems thinking together, connecting technology with real operational needs.