Skip to content

Commit c0e8c06

Browse files
committed
Copied changes from English to en if newer
1 parent b2dcb85 commit c0e8c06

File tree

9 files changed

+108
-99
lines changed

9 files changed

+108
-99
lines changed

src/main/webapp/lesson_plans/en/CSRF.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@
2121
</div>
2222
<p><b>General Goal(s):</b> </p>
2323
<!-- Start Instructions -->
24-
Your goal is to send an email to a newsgroup that contains an image whose URL is pointing to a malicious request. Try to include a 1x1 pixel image that includes a URL. The URL should point to the CSRF lesson with an extra parameter "transferFunds=4000". You can copy the shortcut from the left hand menu by right clicking on the left hand menu and choosing copy shortcut. Whoever receives this email and happens to be authenticated at that time will have his funds transferred. When you think the attack is successful, refresh the page and you will find the green check on the left hand side menu.
24+
Your goal is to send an email to a newsgroup that contains an image whose URL is pointing to a malicious request. Try to include a 1x1 pixel image that includes a URL. The URL should point to the CSRF lesson with an extra parameter "transferFunds=4000". You can copy the shortcut from the left hand menu by right clicking on the left hand menu and choosing copy shortcut. Whoever receives this email and happens to be authenticated at that time will have his funds transferred. When you think the attack is successful, refresh the page and you will find the green check on the left hand side menu.<br/><b>Note that the "Screen" and "menu" GET variables will vary between WebGoat builds. Copying the menu link on the left will give you the current values.</b>
2525
<!-- Stop Instructions -->
2626

src/main/webapp/lesson_plans/en/CsrfPromptByPass.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
left hand menu by right clicking on the left hand menu and choosing copy shortcut. Whoever
2828
receives this email and happens to be authenticated at that time will have his funds transferred.
2929
When you think the attack is successful, refresh the page and you will find the green check on
30-
the left hand side menu.
30+
the left hand side menu.<br/>
31+
<b>Note that the "Screen" and "menu" GET variables will vary between WebGoat builds. Copying the menu link on the left will give you the current values.</b>
3132
<!-- Stop Instructions -->
3233

src/main/webapp/lesson_plans/en/CsrfTokenByPass.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
The page that presents the transfer funds form contains a valid request token. The URL for the
3232
transfer funds page is the same as this lesson with an extra parameter "transferFunds=main". Load
3333
this page, read the token and append the token in a forged request to transferFunds. When you think
34-
the attack is successful, refresh the page and you will find the green check on the left hand side menu.
34+
the attack is successful, refresh the page and you will find the green check on the left hand side menu.<br/>
35+
<b>Note that the "Screen" and "menu" GET variables will vary between WebGoat builds. Copying the menu link on the left will give you the current values.</b>
3536
<!-- Stop Instructions -->
3637

3738

Lines changed: 51 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,68 @@
11
<!-- Start Instructions -->
22
<h1>How To Work With WebGoat</h1>
33
<p>
4-
Welcome to a short introduction to WebGoat.<br>
5-
Here you will learn how to use WebGoat and additional tools for the lessons.<br><br>
4+
Welcome to a brief overview of WebGoat.<br>
65
</p>
76
<h2>Environment Information</h2>
87
<p>
9-
WebGoat uses the Apache Tomcat server. It is configured to run on localhost although this can be
10-
easily changed. This
11-
configuration is for single user, additional users can be added in the tomcat-users.xml file.
12-
If you want to use WebGoat in a laboratory or in
13-
class you might need to change this setup. Please refer to the Tomcat Configuration
14-
in the Introduction section.</p>
8+
WebGoat uses the Apache Tomcat server but can run in any application server. It is configured to run on
9+
localhost although this can be easily changed, see the "Tomcat Configuration" section in the Introduction. </p>
1510

1611
<h2>The WebGoat Interface</h2>
1712
<p>
18-
<img src="images/introduction/interface.jpg"><br><br>
19-
1. These are Lesson Categories in WebGoat. Click on a Category to see all Lessons in it.<br>
20-
2. This will show technical hints to solve the lesson.<br>
21-
3. This will show the HTTP Request Parameters<br>
22-
4. This will show the HTTP Request Cookies<br>
23-
5. This will show goals and objectives of the lesson.<br>
24-
6. This will show the underlying Java source code.<br>
25-
7. This will show the complete solution of the selected lesson.<br>
26-
8. If you want to restart a lesson you can use this link.</p>
13+
<img src="images/introduction/interface.png"><br><br>
14+
1. Lesson Categories in WebGoat. Click on a Category to see specific Lessons.<br>
15+
2. This will show the underlying Java source code.<br>
16+
3. This will show the complete solution of the selected lesson.<br>
17+
4. This will show goals and objectives of the lesson.<br>
18+
5. This will show technical hints to solve the lesson.<br>
19+
6. This shows the HTTP request data<br>
20+
7. If you want to restart a lesson you can use this link.</p>
2721
<h2>Solve The Lesson</h2>
2822
<p>
29-
Always start with the lessons plan. Then try to solve the lesson and if necessary,
23+
Always start with the lesson plan. Then try to solve the lesson and if necessary,
3024
use the hints. The last hint is the solution text if applicable. If you cannot solve the lesson using the hints, you may view the
3125
solution for complete details.</p>
32-
<h2>Read And Edit Parameters</h2>
33-
<p>
34-
To read and edit Parameters you need a local proxy to intercept the HTTP request.
35-
Here we use WebScarab. More information on WebScarab can be found in the "Useful Tools" Chapter.
36-
After installing WebScarab and configuring your browser to use it as proxy on localhost we can start.<br><br>
37-
<img src="images/introduction/HowToUse_1.jpg"><br><br>
38-
We have to select "Intercept Request" in the tab "Intercept". If we send a HTTP request we get a new WebScarab window.<br><br>
39-
<img src="images/introduction/HowToUse_2.jpg"><br><br>
40-
Here we can read and edit the intercepted parameter. After "Accept changes" the request will be sent to the server.
26+
27+
<h2>Read And Edit Parameters/Cookies</h2>
28+
<p>
29+
To read and edit parameters and cookies you need a local proxy like OWASP ZAP to intercept the HTTP request.
30+
More information on ZAP can be found in the "Useful Tools" section in the Introduction.
31+
</p>
32+
33+
<h2>Configuring new WebGoat users</h2>
34+
<p>
35+
WebGoat uses spring-security.xml to configure users.
36+
<br/>
37+
<pre>
38+
&lt;!-- Authentication Manager --&gt;
39+
&lt;authentication-manager alias="authenticationManager"&gt;
40+
&lt;authentication-provider&gt;
41+
&lt;user-service&gt;
42+
&lt;user name="guest" password="guest" authorities="ROLE_WEBGOAT_USER" /&gt;
43+
&lt;user name="webgoat" password="webgoat" authorities="ROLE_WEBGOAT_ADMIN" /&gt;
44+
&lt;user name="server" password="server" authorities="ROLE_SERVER_ADMIN" /&gt;
45+
&lt;/user-service&gt;
46+
&lt;/authentication-provider&gt;
47+
&lt;/authentication-manager&gt;
48+
</pre>
49+
</p>
50+
<h2>Adding Users</h2>
51+
<p>
52+
Usually WebGoat only requires logging in with the user:guest and password:guest.
53+
But maybe in laboratory you have made a setup with one server and a lot of
54+
clients. In this case you might want to have a user for every client,
55+
you will have to alter /WEB-INF/spring-security.xml to add additional users. <b>We recommend not to use real passwords
56+
as the passwords are stored in plain text in this file!</b>
4157
</p>
42-
<h2>Read And Edit Cookies</h2>
58+
<h3>Adding a new User</h3>
4359
<p>
44-
Often it is not only necessary to change the value of the parameters but to change the value of cookies.
45-
We can use WebScarab to intercept the request and change cookies values just like parameter data as explained in the last topic.<br><br>
46-
<img src="images/introduction/HowToUse_3.jpg"><br><br>
47-
We get a new window on sending a HTTP request. On the screenshot you see where we can find cookies and how to edit the values of them.
60+
Adding a user is straight forward. You can use the guest entry as an example. The added
61+
users should have the same role as the guest user. The new user/password will not show on the login page.
62+
Add lines like this to the /WEB-INF/spring-security.xml file:
4863
</p>
64+
<pre>
65+
&lt;user name="guest2" password="guest2" authorities="ROLE_WEBGOAT_USER" /&gt;
66+
...
67+
</pre>
4968
<!-- Stop Instructions -->

src/main/webapp/lesson_plans/en/HttpBasics.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<p>
99
<b>How HTTP works:</b>
1010
</p>
11-
All HTTP transactions follow the same general format. Each client request and server response has three parts: the request or response line, a header section, and the entity body. The client initiates a transaction as follows: <br>
11+
All HTTP transactions follow the same general format. Each client request and server response has three parts: the request or response line, a header section and the entity body. The client initiates a transaction as follows: <br>
1212
<br>
1313
The client contacts the server and sends a document request <br>
1414
</div>
@@ -20,8 +20,8 @@
2020
After sending the request and headers, the client may send additional data. This data is mostly used by CGI programs using the POST method.<br>
2121
<p><b>General Goal(s):</b> </p>
2222
<!-- Start Instructions -->
23-
Enter your name in the input field below and press "go" to submit. The server will accept the request, reverse the input, and display it back to the user, illustrating the basics of handling an HTTP request.
23+
Enter your name in the input field below and press "Go!" to submit. The server will accept the request, reverse the input and display it back to the user, illustrating the basics of handling an HTTP request.
2424
<br/><br/>
2525
The user should become familiar with the features of WebGoat by manipulating the above
26-
buttons to view hints, show the HTTP request parameters, the HTTP request cookies, and the Java source code. You may also try using WebScarab for the first time.
26+
buttons to view hints, show the HTTP request parameters, the HTTP request cookies, and the Java source code. You may also try using OWASP Zed Attack Proxy for the first time.
2727
<!-- Stop Instructions -->
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<div align="Center">
2+
<p><b>Lesson Plan Title:</b> How to Exploit "Off-by-One" Buffer Overflow Vulnerabilities</p>
3+
</div>
4+
<p><b>Concept / Topic To Teach:</b></p>
5+
How to Exploit a Web Based "Off-by-One" Buffer Overflow.
6+
<br>
7+
<div align="Left">
8+
<p><b>How the attack works:</b>
9+
</p>
10+
Despite being more rare, buffer overflow vulnerabilities on the web occur when a tier of the application has insufficient memory allocated to deal with the data submitted by the user. Typically, such a tier would be written in C or a similar language.
11+
12+
For the particular subset, namely, off-by-one overflows, this lesson focuses on the consequences of being able to overwrite the position for the trailing null byte.
13+
14+
As a result, further information is returned back to the user, due to the fact that no null byte was found.
15+
</div>
16+
<p><b>Lesson Goal(s):</b> </p>
17+
<!-- Start Instructions -->
18+
<p>Welcome to the <b>OWASP Hotel</b>! Can you find out which room a VIP guest is staying in?</p>
19+
<!-- Stop Instructions -->
20+
* Understand how a buffer overflow vulnerability can be triggered on a web application.<br>
21+
* Understand what type of value lengths are likely to trigger a buffer overflow.<br>

src/main/webapp/lesson_plans/en/PasswordStrength.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
</div>
44
<p><b>Concept / Topic To Teach:</b> </p>
55
<!-- Start Instructions -->
6-
Accounts are only as secure as their passwords. Most users have the same weak password everywhere. If you want to protect them against brute-force-attacks your application should have good requirements for passwords. The password should contain lower case letters, capitals and numbers. The longer the password, the sbetter.
6+
Accounts are only as secure as their passwords. Most users have the same weak password everywhere. If you want to protect them against brute-force-attacks your application should have good requirements for passwords. The password should contain lower case letters, capitals, numbers and special characters. The longer the password, the better, consider using a passphrase instead. For
7+
more information see: <a href="https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Implement_Proper_Password_Strength_Controls" target="_blank">OWASP proper password strength</a>.
78
<!-- Stop Instructions -->
8-
<br>
9+
<br/><br/>
910
<p><b>General Goal(s):</b> </p>
1011
For this exercise, your job is to test several passwords on <a href="https://howsecureismypassword.net/" target="_blank">https://howsecureismypassword.net/</a>

src/main/webapp/lesson_plans/en/SoapRequest.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
<!-- Start Instructions -->
66
Web Services communicate through the use of SOAP requests. These requests are submitted to a web service in an attempt to execute a function defined in the web service definition language (WSDL). Let's learn something about WSDL files. Check out WebGoat's web service description language (WSDL) file.
77
<p><b>General Goal(s):</b> </p>
8-
Try connecting to the WSDL with a browser or Web Service tool. The URL for the web service is: http://localhost/WebGoat/services/SoapRequest The WSDL can usually be viewed by adding a ?WSDL on the end of the web service request.
8+
Try connecting to the WSDL with a browser or Web Service tool. The URL for the web service is: http://localhost/WebGoat/services/SoapRequest The WSDL can usually be viewed by adding a ?WSDL on the end of the web service request. You must access 2 of the operations to pass this lesson.
99
<!-- Stop Instructions -->

src/main/webapp/lesson_plans/en/TomcatSetup.html

Lines changed: 24 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,16 @@ <h2>Introduction</h2>
55
and other possible configurations for Tomcat. This is just
66
a short description which should be enough in most cases. For more advanced tasks please
77
refer to the Tomcat documentation. Please note that all solutions
8-
are written for the standard configurations on port 80. If you use another port you have
8+
are written for the standard configurations on port 80 or 8080. If you use another port you have
99
to adjust the solution to your configuration.</p>
1010

1111
<h2>The Standard Configurations</h2>
12-
<p>There are two standard Tomcat configurations. In the basic configurations you use the server on your localhost.
13-
Both are identically with the only difference
14-
that in one tomcat is running on port 80 and 443 (SSL) and in the other tomcat is running on port 8080 and 8443. In Linux you have
15-
to start WebGoat as root or with sudo if you want to run it on port 80 and
16-
443.
17-
As running software as root is dangerous we strongly advice to use
18-
the port 8080 and 8443. In Windows you can
19-
run WebGoat.bat to run it on port 80 and WebGoat_8080.bat to run it on port 8080. In Linux you
20-
can use webgoat.sh and run it with webgoat.sh start80 or webgoat.sh start8080. The user in these
21-
configurations is guest with password guest
12+
<p>WebGoat has multiple ways of being run. The <a href="https://github.com/WebGoat/WebGoat/wiki/Installation-(WebGoat-6.0)">
13+
WebGoat Wiki</a> is the best place to find the latest configuration instructions.
14+
By default WebGoat will run on port 8080. In the basic configurations you use the server on your localhost.
15+
In Linux you have to start WebGoat as root or with sudo if you want to run it on port 80 and
16+
443. Running software as root is dangerous we strongly advice to use
17+
the port 8080 and 8443.
2218
</p>
2319

2420
<h2>Server Configurations</h2>
@@ -31,84 +27,54 @@ <h2>Server Configurations</h2>
3127

3228
<h3>Change Ports</h3>
3329
<p>
34-
To change the ports open the server_80.xml which you find in tomcat/conf and change the
35-
non-SSL port. If you want to use it on port 8079 for example:
30+
To change the ports open Tomcat's server.xml which you find in tomcat/conf and change the
31+
non-SSL port. If you want to change your
32+
Tomcat server to use it on port 8079 for example:
3633
</p>
3734

3835
<pre>
39-
&lt;!-- Define a non-SSL HTTP/1.1 Connector on port 8079 --&gt;
40-
&lt;Connector address=&quot;127.0.0.1&quot; port=&quot;8079&quot;...
36+
&lt;!-- Define a non-SSL HTTP/1.1 Connector on port 8079 --&gt;
37+
&lt;Connector address=&quot;127.0.0.1&quot; port=&quot;8079&quot;...
4138
</pre>
4239
<p>
4340
You can also change the SSL connector to another port of course.
4441
In this example to port 8442:
4542
</p>
4643
<pre>
47-
&lt;!-- Define a SSL HTTP/1.1 Connector on port 8442 --&gt;
48-
&lt;Connector address=&quot;127.0.0.1&quot; port=&quot;8442&quot;...
44+
&lt;!-- Define a SSL HTTP/1.1 Connector on port 8442 --&gt;
45+
&lt;Connector address=&quot;127.0.0.1&quot; port=&quot;8442&quot;...
4946
</pre>
47+
</p>
48+
You can also modify WebGoat's pom.xml file to change the port. You will need to modify
49+
the tomcat7-maven-plugin plugin configuration.
50+
</p>
5051
<br>
5152

5253
<h3>Make WebGoat Reachable From Another Client</h3>
5354
<p>THIS MAKES IT POSSIBLE TO REALLY ATTACK YOUR SERVER! DO NOT DO THIS
5455
UNTIL YOU KNOW WHAT YOU ARE DOING. THIS CONFIGURATION SHOULD BE ONLY USED IN
5556
SAFE NETWORKS!</p>
56-
<p>By its default configurations WebGoat is only
57+
<p>By its default configuration, WebGoat is only
5758
reachable within the localhost. In a laboratory or a class
5859
there is maybe the need of having a server and a few clients.
5960
In this case it is possible to make WebGoat reachable.
6061
</p>
61-
<p>The reason why WebGoat is only reachable within the localhost is
62-
the parameter address in the connectors for the non-SSL and SSL connection in server_80.xml. It is set
63-
to 127.0.0.1. The applications only listens on the port of this address for
64-
incoming connections if it is set. If you remove this parameter the server listens on all IPs on the
65-
specific port.</p>
6662

67-
<h3>Permit Only Certain Clients Connection</h3>
63+
<h3>Permit Only Certain Client Connection</h3>
6864
<p>
6965
If you have made WebGoat reachable it is reachable for
7066
all clients. If you want to make it reachable only for certain clients specified
71-
by there IP you can archive this by using a 'Remote Address Filter'.
67+
by their IP you can archive this by using a 'Remote Address Filter'.
7268
The filter can be set in a whitebox or blackbox approach. Here is
73-
only discussed the whitebox approach. You have to add following lines to the Host section of web_80.xml:
69+
only discussed the whitebox approach. You have to add following lines to the
70+
Host section of server.xml in your Tomcat server configuration:
7471
</p>
7572
<pre>
7673
&lt;Valve className=&quot;org.apache.catalina.valves.RemoteAddrValve&quot;
7774
allow=&quot;127.0.0.1,ip1,ip2&quot;/&gt;
7875
</pre>
7976
<p>In this case only localhost, ip1 and ip2 are permitted to connect.</p>
8077

81-
<h2>WebGoat Default Users and Roles for Tomcat</h2>
82-
<p>
83-
WebGoat requires the following users and roles to be configured in order for the application to run.
84-
<br/>
85-
<pre>
86-
&gt;role rolename="webgoat_basic"/&lt;
87-
&gt;role rolename="webgoat_admin"/&lt;
88-
&gt;role rolename="webgoat_user"/&lt;
89-
&gt;user username="webgoat" password="webgoat" roles="webgoat_admin"/&lt;
90-
&gt;user username="basic" password="basic" roles="webgoat_user,webgoat_basic"/&lt;
91-
&gt;user username="guest" password="guest" roles="webgoat_user"/&lt;
92-
</pre>
93-
</p>
94-
<h2>Adding Users</h2>
95-
<p>
96-
Usually using WebGoat you just use the user guest with the password guest.
97-
But maybe in laboratory you have made a setup with one server and a lot of
98-
clients. In this case you might want to have a user for every client
99-
and you have to alter tomcat-users.xml
100-
in tomcat/conf as the users are stored there. <b>We recommend not to use real passwords
101-
as the passwords are stored in plain text in this file!</b>
102-
</p>
103-
<h3>Add User</h3>
104-
<p>
105-
Adding a user is straight forward. You can use the guest entry as an example. The added
106-
users should have the same role as the guest user. Add lines like this to the file:
107-
</p>
108-
<pre>
109-
&lt;user name=&quot;student1&quot; password=&quot;password1&quot; roles=&quot;webgoat_user&quot;/&gt;
110-
&lt;user name=&quot;student2&quot; password=&quot;password2&quot; roles=&quot;webgoat_user&quot;/&gt;
111-
...
112-
</pre>
78+
11379

11480
<!-- Stop Instructions -->

0 commit comments

Comments
 (0)