Lesson
Plan Title: How to
Exploit Thread Safety Problems
Concept /
Topic To Teach:
Web
applications can handle many HTTP requests simultaneously. Developers often use
variables that are not thread safe. Thread safety means that the fields
of an object or class always maintain a valid state when used concurrently by
multiple threads. It is often possible to exploit a concurrency bug by loading
the same page as another user at the exact same time.
Because all threads share the same method area, and the method area is where
all class variables are stored, multiple threads can attempt to use the same
class variables concurrently.
General
Goal(s):
The user
should be able to exploit the concurrency error in the web application and view
login information for another user that is attempting the same function at the
same time.
This will
require the use of two browser windows.
Figure 1 Lesson 2
Solution:
Open a new
browser window by pressing CTRL-N. Position the window so that you see both
input fields. Enter user name "dave" in the left window and user name "jeff" in
the right window.
Click very
fast on the submit button in the right window and then in the left window.
Figure 2 2 Browser Windows
The result
should be that you receive the same data in both windows, even when using a
different user name!
Figure 3 Lesson 2 Completed
The root-cause
of this exploit is that the Java code uses a static variable for the user name.
When submitting twice, the same thread and hence the same static variable
containing the username of the first request will be used.
This is
obvious when examining the Java code:
private
static String currentUser;
Solution by Erwin Geirnaert | ![]() |