Session Security Guide
Introduction to Sessions
Stateless HTTP
HTTP is stateless, meaning each request is treated independently. Web applications use sessions to maintain user state across multiple requests.
Session Identifiers (Session IDs)
Unique tokens that identify a user's session.
Stored in cookies, URL parameters, or HTML.
Each storage method has security implications.
Session ID Security Best Practices
Uniqueness: Each session ID should be unique to prevent duplication.
Randomness: Must be generated using a strong random number generator.
Expiration: Should expire after a reasonable time to reduce risk.
Common Session Attacks
Session Hijacking
Concept: An attacker obtains a valid session ID to impersonate a user.
Example: Using curl
with a captured session cookie:
Example: Using a browser's cookie editor to inject a session ID manually.
Session Fixation
Concept: An attacker sets a session ID and forces the victim to use it.
Example: Attacker assigns a session ID:
Cross-Site Scripting (XSS) - Session ID Theft
Concept: Injected JavaScript can steal session IDs.
Example: Injecting JavaScript to steal cookies:
Example: Using curl
to test for reflected XSS:
Cross-Site Request Forgery (CSRF)
Concept: Tricks a user into performing an action they did not intend while authenticated.
Example: Malicious HTML form to trigger CSRF attack:
Example: Using curl
to send a CSRF request:
Open Redirects
Concept: Redirecting users to malicious sites.
Example: Testing for open redirects using curl
:
Example: Using wfuzz
to fuzz for open redirect vulnerabilities:
/etc/hosts File Manipulation for Lab Environments
Adding Host Entries
Single entry:
Multiple entries:
Viewing file contents:
Editing the file:
Essential Security Tools
Nmap - Network Scanning
Gobuster - Directory Brute Forcing
SQLmap - SQL Injection Detection
Nikto - Web Server Scanning
Burp Suite
Burp Intruder: Automated fuzzing and brute-forcing.
Burp Repeater: Manually crafting and replaying HTTP requests.
Burp Scanner: Automated vulnerability scanning.
Security Best Practices
Use strong, randomly generated session IDs.
Store session IDs securely with HTTPOnly and Secure flags.
Implement CSRF protection using tokens.
Validate and sanitize all user input.
Use output encoding to prevent XSS.
Regenerate session IDs after login and sensitive actions.
Implement proper session timeouts.
Use HTTPS for all communication.
Consider deploying a Web Application Firewall (WAF).
Last updated