Session Hijacking

advertisement
Project Presentation
Ram Santhanam
Application Level Attacks - Session
Hijacking & Defences
What is a session?

Definition from FOLDOC


Typically maintained by the server





Includes a data store or a table to store user state and other user specific
information
Includes an index to the table (aka session key or session-id)
Created on first request or after an authentication process
Session-id exchanged between browser and server on every request.
Different ways to exchange session-ids




A lasting connection between a user (or user agent i.e. browser) and a server
usually involving the exchange of many requests
URL Rewriting
Hidden Form fields
Cookies (most common)
Hijacking


Stealing of this session-id and using it to impersonate and access data
Passive attack difficult to detect
Typical Session
1: Request Connection
2: Create Session
3: Session Id
Client
(Browser)
5: Validate Session
4: Subsequent Requests
(Session id passed)
Server
6: Retrieve Session Data
7: Successful response
Session
Data
Attack Methods

Guessing Session Id


Session Fixing


same subnet as client or server
Man in the Middle Attack (SSL)


trusting private networks, vulnerabilites in web servers, etc
Session Sniffing (typical on non SSL sessions)


predictable, session created before authenticated
Security Vulnerabilities in Hops


shorter length, predictable
ARP Poisoning, DNS Spoofing
Cross Site Scripting (XSS)

User trusting source, application vulnerability
Session Sniffing
1: Request Connection
2: Create Session
3: Session Id
Client
(Browser)
5: Validate Session
4: Subsequent Requests
(Session id passed)
Server
6: Retrieve Session Data
7: Successful response
sniff
Request
(session-id)
Successful
Response
Hacker
Session
Data
Man in the Middle Attack
1: Request HTTPS
Connection
2: Request HTTPS
Connection
4: Provide HTTP Response
3: Provide Server
Certificate
With public key
Client
(Browser)
5: Subsequent Requests
Hacker
Machine 1
Server
6: Forward Request
Request
(session-id)
Wait for Session to be created
Pass Session Id
Successful
Response
Hacker
Machine 2
Cross Site Scripting (XSS)
Hacker inserts a rogue script to a trusted
site.
 Common in social / community sites.

Defence Methods

Educating the users




Using high entropy in session id generation (see Tomcat e.g.)


reduce window of vulnerability
Using Context data for validating session-ids.


limit damage if session is hijacked
Re-generating session-ids


difficult to sniff
Forcing Re-authentication or step-up authentication


reduce window of vulnerability
Using SSL for all communications


Higher the entropy more difficult to predict
Timing out sessions


Paying attention to https vs. non-https
Properly signing out
Not clicking on links but copying and pasting them.
make it difficult to use a hijacked id
Input validation

prevent XSS and other vulnerabilities
Tomcat Session Id generation








The session id is generated through by a random number.
For random number generation, Java's SecureRandom class is
used. This class provides a cryptographically strong random
number generator using DSA/RSA/MD5 or SHA-1
The seed (64 bit) for generating the random number is
constructed by bitwise xoring the system time with an entropy
string
The entropy string comes from a hash value constructed from
the device drivers running on the server.
Using the SecureRandom class a 16 (128 bit) byte random
number is generated.
A one way hash of the random number is performed.
A 32 byte (256 bit) hexadecimal number is created from by
taking 4 bits at a time from the 16 bytes.
This 32 byte (256 bit) is used as the jsessionid
Questions?
Download