diff --git a/webgoat/main/project/JavaSource/WebGoatLabels_english.properties b/webgoat/main/project/JavaSource/WebGoatLabels_english.properties
new file mode 100644
index 000000000..4939dc531
--- /dev/null
+++ b/webgoat/main/project/JavaSource/WebGoatLabels_english.properties
@@ -0,0 +1,228 @@
+#General
+LessonCompleted=Congratulations. You have successfully completed this lesson.
+RestartLesson=Restart this Lesson
+SolutionVideos=Solution Videos
+ErrorGenerating=Error generating
+InvalidData=Invalid Data
+
+
+#HttpBasics.java
+EnterYourName=Enter your Name
+Go!=Go!
+
+#BasicAuthentication.java
+BasicAuthHeaderNameIncorrect=Basic Authentication header name is incorrect.
+BasicAuthHeaderValueIncorrect=Basic Authentication header value is incorrect.
+BasicAuthenticationWhatIsNameOfHeader=What is the name of the authentication header:
+BasicAuthenticationWhatIsDecodedValueOfHeader=What is the decoded value of the authentication header:
+Submit=Submit
+BasicAuthenticationGreenStars1=Close your browser and login as
+BasicAuthenticationGreenStars2= to get your green stars back.
+BasicAuthenticationStage1Completed=Congratulations, you have figured out the mechanics of basic authentication. - Now you must try to make WebGoat reauthenticate you as: - username: basic - password: basic. Use the Basic Authentication Menu to start at login page.
+BasicAuthenticationAlmostThere1=You're almost there! You've modified the
+BasicAuthenticationAlmostThere2= header but you are still logged in as
+BasicAuthenticationAlmostThere3=. Look at the request after you typed in the 'basic' user credentials and submitted the request. Remember the order of events that occur during Basic Authentication.
+BasicAuthenticationReallyClose=You're really close! Changing the session cookie caused the server to create a new session for you. This did not cause the server to reauthenticate you. When you figure out how to force the server to perform an authentication request, you have to authenticate as:
user name: basic password: basic
+BasicAuthenticationUseTheHints=Use the hints! One at a time...
+
+BasicAuthenticationHint1=Basic authentication uses a cookie to pass the credentials. Use a proxy to intercept the request. Look at the cookies.
+
+BasicAuthenticationHint2=Basic authentication uses Base64 encoding to 'scramble' the " + "user's login credentials.
+BasicAuthenticationHint3=Basic authentication uses 'Authorization' as the cookie name to " + "store the user's credentials.
+BasicAuthenticationHint4=Use WebScarab -> Tools -> Transcoder to Base64 decode the value in the Authorization cookie.
+
+BasicAuthenticationHint5=Basic authentication uses a cookie to pass the credentials. Use a proxy to intercept the request. Look at the cookies.
+BasicAuthenticationHint6=Before the WebServer requests credentials from the client, the current session is checked for validitity.
+BasicAuthenticationHint7=If the session is invalid the webserver will use the basic authentication credentials
+BasicAuthenticationHint8=If the session is invalid and the basic authentication credentials are invalid, new credentials will be requested from the client.
+BasicAuthenticationHint9=Intercept the request and corrupt the JSESSIONID and the Authorization header.
+
+
+#WeakAuthenticationCookie.java
+InvalidCookie=Invalid cookie
+IdentityRemembered=Your identity has been remembered
+InvalidUsernameAndPassword=Invalid username and password entered.
+UserName=User Name
+Password=Password
+Login=Login
+RequiredFields=Required Fields
+WeakAuthenticationCookiePleaseSignIn=Please sign in to your account. See the OWASP admin if you do not have an account.
+SignIn=Sign in
+PasswordForgotten=Goodbye! Your password has been forgotten
+WelcomeUser=Welcome,
+YouHaveBeenAuthenticatedWith=You have been authenticated with
+Logout=Logout
+Refresh=Refresh
+
+WeakAuthenticationCookieHints1=The server authenticates the user using a cookie, if you send the right cookie.
+WeakAuthenticationCookieHints2=Is the AuthCookie value guessable knowing the username and password?
+WeakAuthenticationCookieHints3=Add 'AuthCookie=********;' to the Cookie: header using WebScarab.
+WeakAuthenticationCookieHints4=After logging in as webgoat a cookie is added. 65432ubphcfx After logging in as aspect a cookie is added. 65432udfqtb Is there anything similar about the cookies and the login names?
+
+#RemoteAdminFlaw.java
+RemoteAdminFlawHint1=WebGoat has 2 admin interfaces.
+RemoteAdminFlawHint2=WebGoat has one admin interface that is controlled via a URL parameter and is 'hackable'
+RemoteAdminFlawHint3=WebGoat has one admin interface that is controlled via server side security constraints and should not be 'hackable'
+RemoteAdminFlawHint4=Follow the Source!
+RemoteAdminFlawHint5=On success you will see new submenu items in the menupoint 'Admin Functions'
+
+
+
+
+
+
+#PathBasedAccessControl.java
+CurrentDirectory=Current Directory is:
+ChooseFileToView=Choose the file to view:
+ViewFile=View File
+AccessDenied=Access denied
+ItAppears1=It appears that you are on the right track. Commands that may compromise the operating system have been disabled. You are only allowed to see one file in this directory.
+ItAppears2=It appears that you are on the right track. Commands that may compromise the operating system have been disabled. You are only allowed to see files in the webgoat directory.
+CongratsAccessToFileAllowed=Congratulations! Access to file allowed
+FileInAllowedDirectory=File is already in allowed directory - try again!
+AccessToFileDenied1=Access to file/directory "
+AccessToFileDenied2=" denied
+FileTooLarge=File is too large
+FileBinary=File is binary
+TheFollowingError=The following error occurred while accessing the file: <
+PathBasedAccessControlInstr1=The '
+PathBasedAccessControlInstr2=' user has access to all the files in the lesson_plans/English directory. Try to break the access control mechanism and access a resource that is not in the listed directory. After selecting a file to view, WebGoat will report if access to the file was granted. An interesting file to try and obtain might be a file like tomcat/conf/tomcat-users.xml
+ErrorGenerating=Error generating
+ViewingFile=Viewing file:
+File=File:
+Dir=Dir:
+IsFile= - isFile():
+Exists= - exists():
+PathBasedAccessControlHint1=Most operating systems allow special characters in the path.
+PathBasedAccessControlHint2=Use a file explorer to find the tomcat\\webapps\\WebGoat\\lesson_plans directory");
+PathBasedAccessControlHint3=Try .. in the path
+PathBasedAccessControlHint4=Try ..\\..\\..\\LICENSE
+
+
+
+
+#CommandInjection.java
+Command=Command
+CommandInjectionRightTrack1=It appears that you are on the right track. Commands that may compromise the operating system have been disabled. The following commands are allowed: netstat -a, dir, ls, ifconfig, and ipconfig.
+CommandInjectionRightTrack2=It appears that you are on the right track. Commands that may compromise the operating system have been disabled. This lesson is a command injection lesson, not access control.
+YouAreCurrentlyViewing=You are currently viewing:
+SelectFileFromListBelow=select file from list below
+SelectLessonPlanToView=Select the lesson plan to view:
+View=View
+CommandInjectionHint1=The application is using a system command to return the contents of a file.
+CommandInjectionHint2=The ampersand(&) separates commands in the Windows 2000 command shell. In Unix the separator is typically a semi-colon(;)
+CommandInjectionHint3=Use a proxy to insert & netstat -a on Windows or ;netstat -a on Unix.
+CommandInjectionHint4=Note that the server may enclose the submitted file name within quotes
+
+
+
+#NumericSqlInjection.java
+NumericSqlInjectionSecondStage=Bet you can't do it again! This lesson has detected your successfull attack and has now switched to a defensive mode. Try again to attack a parameterized query.
+NoResultsMatched=No results matched. Try Again.
+NumericSqlInjectionSecondStage2=Now that you have successfully performed an SQL injection, try the same type of attack on a parameterized query.
+ErrorParsingAsNumber=Error parsing station as a number:
+SelectYourStation=Select your local weather station:
+
+SqlNumericInjectionHint1=The application is taking the input from the select box and inserts it at the end of a pre-formed SQL command.
+SqlNumericInjectionHint2=This is the code for the query being built and issued by WebGoat:
"SELECT * FROM weather_data WHERE station = " + station
+SqlNumericInjectionHint3=Compound SQL statements can be made by joining multiple tests with keywords like AND and OR. Try appending a SQL statement that always resolves to true.
+SqlNumericInjectionHint4=Try to intercept the post request with WebScarab and replace the station with [ 101 OR 1 = 1 ].
+
+
+
+
+#StringSqlInjection.java
+StringSqlInjectionSecondStage=Now that you have successfully performed an SQL injection, try the same type of attack on a parameterized query. Restart the lesson if you wish to return to the injectable query.
+EnterLastName=Enter your last name:
+NoResultsMatched=No results matched. Try Again.
+SqlStringInjectionHint1=The application is taking your input and inserting it at the end of a pre-formed SQL command.
+SqlStringInjectionHint2=This is the code for the query being built and issued by WebGoat:
"SELECT * FROM user_data WHERE last_name = "accountName"
+SqlStringInjectionHint3=Compound SQL statements can be made by joining multiple tests with keywords like AND and OR. Try appending a SQL statement that always resolves to true
+SqlStringInjectionHint4=Try entering [ smith' OR '1' = '1 ].
+
+
+
+
+
+
+
+#LogSpoofing.java
+LoginFailedForUserName=Login failed for username
+LoginSucceededForUserName=LOGIN SUCCEEDED FOR USERNAME
+LogSpoofingHint1=Try to fool the human eye by using new lines.
+LogSpoofingHint2=Use CR (%0d) and LF (%0a) for a new line.
+LogSpoofingHint3=Try: Smith%0d%0aLogin Succeeded for username: admin
+LogSpoofingHint4=Try: Smith%0d%0aLogin Succeeded for username: admin<script>alert(document.cookie)</script>
+
+#StoredXss.java
+StoredXssHint1=You can put HTML tags in your message.
+StoredXssHint1=Bury a SCRIPT tag in the message to attack anyone who reads it.
+StoredXssHint1=Enter this: <script language=\"javascript\" type=\"text/javascript\">alert(\"Ha Ha Ha\");</script> in the message field.
+StoredXssHint1=Enter this: <script>alert(document.cookie);</script> in the message field.
+MessageContentsFor=Message Contents For
+Title=Title
+PostedBy=Posted by
+CouldNotFindMessage=Could not find this message
+Message=Message
+MessageList=Message List
+CouldNotAddMessage=Could not add message to database
+ErroGeneratingMessageList=Error while getting message list.
+
+#ReflectedXSS.java
+ReflectedXSSWhoops1=Whoops! You entered
+ReflectedXSSWhoops2= instead of your three digit code. Please try again.
+ShoppingCart=Shopping Cart
+ShoppingCartItems=Shopping Cart Items -- To Buy Now
+Price=Price
+Quantity=Quantity
+Total=Total
+TotalChargedCreditCard=The total charged to your credit card
+UpdateCart=UpdateCart
+EnterCreditCard=Enter your credit card number
+Enter3DigitCode=Enter your three digit access code
+Purchase=Purchase
+ReflectedXSSHint1=A simple script is <SCRIPT>alert('bang!');</SCRIPT>.
+ReflectedXSSHint2=Can you get the script to disclose the JSESSIONID cookie?
+ReflectedXSSHint3=You can use <SCRIPT>alert(document.cookie);</SCRIPT> to access the session id cookie
+ReflectedXSSHint4=Can you get the script to access the credit card form field?
+ReflectedXSSHint5=Try a cross site trace (XST) Command: <script type=\"text/javascript\">if ( navigator.appName.indexOf(\"Microsoft\") !=-1){var xmlHttp = new ActiveXObject(\"Microsoft.XMLHTTP\");xmlHttp.open(\"TRACE\", \"./\", false); xmlHttp.send();str1=xmlHttp.responseText; while (str1.indexOf(\"\\n\") > -1) str1 = str1.replace(\"\\n\",\"<br>\"); document.write(str1);}</script>");
+
+#HtmlClues.java
+HtmlCluesBINGO=BINGO -- admin authenticated
+HtmlCluesHint1=You can view the HTML source by selecting 'view source' in the browser menu.
+HtmlCluesHint2=There are lots of clues in the HTML
+HtmlCluesHint3=Search for the word HIDDEN, look at URLs, look for comments.
+
+#JavaScriptValidation.java
+3LowerCase=Field1: exactly three lowercase characters
+Exactly3Digits=Field2: exactly three digits
+LettersNumbersSpaceOnly=Field3: letters, numbers, and space only
+EnumerationOfNumbers=Field4: enumeration of numbers
+SimpleZipCode=Field5: simple zip code
+ZIPDashFour=Field6: zip with optional dash four
+USPhoneNumber=Field7: US phone number with or without dashes
+
+ServerSideValidationViolation=Server side validation violation: You succeeded for
+JavaScriptValidationHint1=The validation is happening in your browser.
+JavaScriptValidationHint2=Try modifying the values with a proxy after they leave your browser
+JavaScriptValidationHint3=Another way is to delete the JavaScript before you view the page.
+
+#HiddenFieldTampering.java
+TotalPriceIs=Your total price is
+ThisAmountCharged=This amount will be charged to your credit card immediately.
+
+HiddenFieldTamperingHint1=This application is using hidden fields to transmit price information to the server.
+HiddenFieldTamperingHint2=Use a program to intercept and change the value in the hidden field.
+HiddenFieldTamperingHint3=Use WebScarab to change the price of the TV from "
+HiddenFieldTamperingHint32= to
+
+
+
+
+
+
+
+
+
+
+
diff --git a/webgoat/main/project/JavaSource/WebGoatLabels_german.properties b/webgoat/main/project/JavaSource/WebGoatLabels_german.properties
new file mode 100644
index 000000000..cfd190b41
--- /dev/null
+++ b/webgoat/main/project/JavaSource/WebGoatLabels_german.properties
@@ -0,0 +1,208 @@
+#General
+LessonCompleted=Herzlichen Glückwunsch! Sie haben diese Lektion erfolgreich abgeschlossen.
+RestartLesson=Lektion neu beginnen
+SolutionVideos=Lösungsvideos
+ErrorGenerating=Fehler beim Generieren von
+InvalidData=Ungültige Daten
+
+#HttpBasics.java
+EnterYourName=Geben Sie Ihren Namen ein
+Go!=Los gehts!
+
+#BasicAuthentication.java
+BasicAuthHeaderNameIncorrect=Basic Authentication Header Name ist inkorrekt.
+BasicAuthHeaderValueIncorrect=Basic Authentication Header Wert ist inkorrekt.
+BasicAuthenticationWhatIsNameOfHeader=Was ist der Name des Authentication Header:
+BasicAuthenticationWhatIsDecodedValueOfHeader=Was ist der dekodierte Wert des Authentication Header:
+Submit=Abschicken
+BasicAuthenticationGreenStars1=Schließen Sie Ihren Browser und loggen sich Sich als
+BasicAuthenticationGreenStars2= ein um Ihre grünen Sterne wiederzubekommen.
+BasicAuthenticationStage1Completed=Herzlichen Glückwunsch, Sie haben die Grundlagen von Basic Authentication verstanden - Jetzt versuchen Sie sich von WebGoat als: username: basic - password: basic authentisieren zu lassen. Benutzen Sie das Basic Authentication Menu um eine Login Seite zu öffnen.
+BasicAuthenticationAlmostThere1=Sie Sind fast da! Sie haben den
+BasicAuthenticationAlmostThere2= Header manipuliert aber Sie sind immernoch als
+BasicAuthenticationAlmostThere3= eingeloggt. Schauen Sie sich den Request an nachdem Sie die 'basic' Authentisierungsdaten eingetippt haben und die Anfrage abgeschickt haben. Halten Sie sich die Reihenfolge der Ereignisse die bei Basic Authentication eintreten vor Augen.
+BasicAuthenticationReallyClose=Sie sind sehr nahe dran! Durch das Ändern des Session Cookie haben Sie den Server dazu gebracht eine neue Session für Sie zu erstellen. Dies hat sie allerdings nicht re-authentisiert. Wenn Sie herausgefunden haben wie Sie den Server dazu zwingen können Sie zu re-authentisieren dann authentisieren Sie sich als:
user name: basic password: basic
+BasicAuthenticationUseTheHints=Benutzen Sie die Hinweise! Einen nach dem anderen...
+BasicAuthenticationHint1=Basic authentication uses a cookie to pass the credentials. Use a proxy to intercept the request. Look at the cookies.
+
+BasicAuthenticationHint2=Basic authentication uses Base64 encoding to 'scramble' the " + "user's login credentials.
+BasicAuthenticationHint3=Basic authentication uses 'Authorization' as the cookie name to " + "store the user's credentials.
+BasicAuthenticationHint4=Use WebScarab -> Tools -> Transcoder to Base64 decode the value in the Authorization cookie.
+
+BasicAuthenticationHint5=Basic authentication uses a cookie to pass the credentials. Use a proxy to intercept the request. Look at the cookies.
+BasicAuthenticationHint6=Before the WebServer requests credentials from the client, the current session is checked for validitity.
+BasicAuthenticationHint7=If the session is invalid the webserver will use the basic authentication credentials
+BasicAuthenticationHint8=If the session is invalid and the basic authentication credentials are invalid, new credentials will be requested from the client.
+BasicAuthenticationHint9=Intercept the request and corrupt the JSESSIONID and the Authorization header.
+
+
+
+#WeakAuthenticationCookie.java
+InvalidCookie=Ungültiger Cookie!
+IdentityRemembered=Ihre Identität wurde abgespeichert
+InvalidUsernameAndPassword=Benutzername und Passwort ungültig.
+UserName=Benutzername
+Password=Passwort
+Login=Anmelden
+RequiredFields=*Benötigte Felder
+WeakAuthenticationCookiePleaseSignIn=Bitte melden Sie sich an. Kontaktieren Sie den OWASP Administrator wenn Sie keine Anmeldedaten haben.
+SignIn=Anmeldung
+PasswordForgotten=Auf Wiedersehen! Ihr Passwort wurde vergessen
+WelcomeUser=Willkommen,
+YouHaveBeenAuthenticatedWith=Sie wurden authentisiert mit
+Logout=Abmelden
+Refresh=Neu Laden
+
+WeakAuthenticationCookieHints1=The server authenticates the user using a cookie, if you send the right cookie.
+WeakAuthenticationCookieHints2=Is the AuthCookie value guessable knowing the username and password?
+WeakAuthenticationCookieHints3=Add 'AuthCookie=********;' to the Cookie: header using WebScarab.
+WeakAuthenticationCookieHints4=After logging in as webgoat a cookie is added. 65432ubphcfx After logging in as aspect a cookie is added. 65432udfqtb Is there anything similar about the cookies and the login names?
+
+#RemoteAdminFlaw.java
+RemoteAdminFlawHint1=WebGoat has 2 admin interfaces.
+RemoteAdminFlawHint2=WebGoat has one admin interface that is controlled via a URL parameter and is 'hackable'
+RemoteAdminFlawHint3=WebGoat has one admin interface that is controlled via server side security constraints and should not be 'hackable'
+RemoteAdminFlawHint4=Follow the Source!
+RemoteAdminFlawHint5=On success you will see new submenu items in the menupoint 'Admin Functions'
+
+
+
+#PathBasedAccessControl.java
+CurrentDirectory=Das aktuelle Verzeichnis ist:
+ChooseFileToView=Wählen Sie die Datei zum Anzeigen:
+ViewFile=Datei anzeigen
+AccessDenied=Zugang verweigert
+ItAppears1=Es scheint als wären Sie auf dem richtigen Weg. Befehle die das Betriebssystem beeinflussen könnten werden ignoriert. Sie dürfen nur eine Datei in diesem Verzeichnis anzeigen.
+ItAppears2=Es scheint als wären Sie auf dem richtigen Weg. Befehle die das Betriebssystem beeinflussen könnten werden ignoriert. Sie dürfen nur Dateien im WebGoat Verzeichnis anzeigen.
+CongratsAccessToFileAllowed=Herzlichen Glückwunsch! Zugang zur Datei gewährt
+FileInAllowedDirectory=Die Datei ist bereits in einem erlaubten Verzeichnis - Versuchen Sie es erneut!
+AccessToFileDenied1=Zugang zu Datei/Verzeichnis "
+AccessToFileDenied2=" verweigert
+FileTooLarge=Datei ist zu groß
+FileBinary=Datei hat binär-Inhalt
+TheFollowingError=Der folgende Fehler trat auf beim Zugriff auf die Datei: <
+PathBasedAccessControlInstr1=Der '
+PathBasedAccessControlInstr2=' Benutzer hat Zugriff auf alle Dateien im lesson_plans/English Verzeichnis. Versuchen Sie den Zugangsmechanismus zu brechen indem Sie auf eine Resource zugreifen die nicht im gelisteten Verzeichnis liegt. Nachdem Sie eine Datei ausgewählt haben, wird WebGoat Ihnen sagen ob Sie Zugriff darauf haben. Eine interessante Datei könnte tomcat/conf/tomcat-users.xml sein.
+ErrorGenerating=Fehler beim Generieren von
+ViewingFile=Anzeige von Datei:
+File=Datei:
+Dir=Verzeichnis:
+IsFile= - isFile() (ist eine Datei):
+Exists= - exists() (existiert):
+
+PathBasedAccessControlHint1=Most operating systems allow special characters in the path.
+PathBasedAccessControlHint2=Use a file explorer to find the tomcat\\webapps\\WebGoat\\lesson_plans directory");
+PathBasedAccessControlHint3=Try .. in the path
+PathBasedAccessControlHint4=Try ..\\..\\..\\LICENSE
+
+
+#CommandInjection.java
+Command=Befehl
+CommandInjectionRightTrack1=Es scheint, dass Sie auf dem richtigen Weg sind. Befehle die das Betriebssystem kompromittieren können wurden deaktiviert. Die folgenden Befehle sind erlaubt: netstat -a, dir, ls, ifconfig und ipconfig.
+CommandInjectionRightTrack2=Es scheint, dass Sie auf dem richtigen Weg sind. Befehle die das Betriebssystem kompromittieren können wurden deaktiviert. In dieser Lektion geht es um das Einschleusen von Befehlen, nicht um Zugangskontrolle.
+YouAreCurrentlyViewing=Sie betrachten gerade:
+SelectFileFromListBelow=wählen Sie eine Datei aus der Liste
+SelectLessonPlanToView=Wählen Sie die zu betrachtende Lektion aus:
+View=Anzeigen
+CommandInjectionHint1=The application is using a system command to return the contents of a file.
+CommandInjectionHint2=The ampersand(&) separates commands in the Windows 2000 command shell. In Unix the separator is typically a semi-colon(;)
+CommandInjectionHint3=Use a proxy to insert & netstat -a on Windows or ;netstat -a on Unix.
+CommandInjectionHint4=Note that the server may enclose the submitted file name within quotes
+
+
+
+#NumericSqlInjection.java
+SecondStage=Ich wette das können Sie nicht wiederholen. Diese Lektion hat nun in einen defensiven Modus gewechselt. Versuchen Sie nun eine parametrisierte Anfrage anzugreifen.
+NoResultsMatched=Keine Resultate gefunden. Versuchen Sie es erneut.
+SecondStage2=Da sie nun erfolgreich eine SQL Injection durchgeführt haben, versuchen Sie denselben Typ von Angriff auf eine parametrisierte Anfrage.
+ErrorParsingAsNumber=Fehler beim interpretieren der Wetterstationsnummer als Zahl:
+SelectYourStation=Wählen Sie Ihre lokale Wetterstation aus:
+SqlNumericInjectionHint1=The application is taking the input from the select box and inserts it at the end of a pre-formed SQL command.
+SqlNumericInjectionHint2=This is the code for the query being built and issued by WebGoat:
"SELECT * FROM weather_data WHERE station = " + station
+SqlNumericInjectionHint3=Compound SQL statements can be made by joining multiple tests with keywords like AND and OR. Try appending a SQL statement that always resolves to true.
+SqlNumericInjectionHint4=Try to intercept the post request with WebScarab and replace the station with [ 101 OR 1 = 1 ].
+
+
+#StringSqlInjection.java
+StringSqlInjectionSecondStage=Da sie nun erfolgreich eine SQL Injection durchgeführt haben, versuchen Sie denselben Typ von Angriff auf eine parametrisierte Anfrage. Starten Sie Diese Lektion neu, wenn Sie zur verwundbaren SQL Anfrage gelangen möchten.
+EnterLastName=Geben Sie Ihren Nachnamen ein:
+NoResultsMatched=Keine Resultate gefunden, versuchen Sie es erneut
+SqlStringInjectionHint1=The application is taking your input and inserting it at the end of a pre-formed SQL command.
+SqlStringInjectionHint2=This is the code for the query being built and issued by WebGoat:
"SELECT * FROM user_data WHERE last_name = "accountName"
+SqlStringInjectionHint3=Compound SQL statements can be made by joining multiple tests with keywords like AND and OR. Try appending a SQL statement that always resolves to true
+SqlStringInjectionHint4=Try entering [ smith' OR '1' = '1 ].
+
+
+#LogSpoofing.java
+LoginFailedForUserName=Login failed for username
+LoginSucceededForUserName=LOGIN SUCCEEDED FOR USERNAME
+LogSpoofingHint1=Versuchen Sie das menschliche Auge durch Einfügen von weiteren Zeilen zu verwirren
+LogSpoofingHint2=Benutzen Sie CR (%0d) und LF (%0a) für eine neue Zeile.
+LogSpoofingHint3=Versuchen Sie: Smith%0d%0aLogin Succeeded for username: admin
+LogSpoofingHint4=Versuchen Sie: Smith%0d%0aLogin Succeeded for username: admin<script>alert(document.cookie)</script>
+
+#StoredXss.java
+StoredXssHint1=Sie können HTML tags in Ihre Nachricht einbauen.
+StoredXssHint1=Bauen Sie ein SCRIPT tag in Ihre Nachricht ein um jeden Anzugreifen der sie liest
+StoredXssHint1=Geben Sie: <script language=\"javascript\" type=\"text/javascript\">alert(\"Ha Ha Ha\");</script> in das Nachrichtenfeld ein.
+StoredXssHint1=Geben Sie: <script>alert(document.cookie);</script> in das Nachrichtenfeld ein.
+MessageContentsFor=Nachrichteninhalt für
+Title=Titel
+PostedBy=Geschrieben von
+CouldNotFindMessage=Konnte diese Nachricht nicht finden
+Message=Nachricht
+MessageList=Nachrichtenliste
+CouldNotAddMessage=Could not add message to database
+ErroGeneratingMessageList=Error while getting message list.
+
+
+#ReflectedXSS.java
+ReflectedXSSWhoops1=Ups! Sie haben
+ReflectedXSSWhoops2= anstatt des drei stelligen Codes eingegeben. Bitte versuchen Sie es erneut.
+ShoppingCart=Warenkorb
+ShoppingCartItems=Inhalt des Warenkorbs -- Jetzt kaufen
+Price=Preis
+Quantity=Menge
+Total=Gesamt
+TotalChargedCreditCard=Der Gesamtbetrag, mit dem Ihre Kreditkarte belastet wird
+UpdateCart=Warenkorb aktualisieren
+EnterCreditCard=Geben Sie Ihre Kreditkartennummern ein
+Enter3DigitCode=Geben Sie Ihren 3-stelligen Sicherheitscode ein
+Purchase=Kaufen
+ReflectedXSSHint1=Ein einfaches Skript ist <SCRIPT>alert('bang!');</SCRIPT>.
+ReflectedXSSHint2=Können Sie das Skript dazu bringen den JSESSIONID Cookie zu veröffentlichen?
+ReflectedXSSHint3=Sie können <SCRIPT>alert(document.cookie);</SCRIPT> benutzen um an den Session ID Cookie zu kommen
+ReflectedXSSHint4=Können Sie das Skript so gestalten, dass es an den Inhalt des Kreditkartenfeldes kommt?
+ReflectedXSSHint5=Versuchen Sie einen cross site trace (XST) Befehl: <script type=\"text/javascript\">if ( navigator.appName.indexOf(\"Microsoft\") !=-1){var xmlHttp = new ActiveXObject(\"Microsoft.XMLHTTP\");xmlHttp.open(\"TRACE\", \"./\", false); xmlHttp.send();str1=xmlHttp.responseText; while (str1.indexOf(\"\\n\") > -1) str1 = str1.replace(\"\\n\",\"<br>\"); document.write(str1);}</script>");
+
+#HtmlClues.java
+HtmlCluesBINGO=BINGO -- admin authentisiert
+HtmlCluesHint1=Sie können Sich den HTML Quellcode anschauen indem Sie "View Source" im Browser anklicken.
+HtmlCluesHint2=Es gibt viele Hinweise in HTML
+HtmlCluesHint3=Suchen Sie nach den Worten HIDDEN, schauen Sie sich URLs an und suchen Sie nach Kommentaren.
+
+#JavaScriptValidation.java
+3LowerCase=Feld1: genau drei kleine Buchstaben
+Exactly3Digits=Feld2: genau drei Ziffern
+LettersNumbersSpaceOnly=Feld3: Buchstaben, Ziffern und Leerzeichen
+EnumerationOfNumbers=Feld4: ausgeschriebene Ziffern
+SimpleZipCode=Feld5: Einfach Postleitzahlen (5 stellige Zahl)
+ZIPDashFour=Feld6: Postleitzahlen mit optionalem Bindestrich und 4 stelliger Zahl
+USPhoneNumber=Feld7: Telefonnummer in den USA, mit oder ohne Bindestriche
+
+ServerSideValidationViolation=Server-seitige Validierungsverstoß: Sie waren erfolgreich für
+JavaScriptValidationHint1=Die Validierung findet in Ihrem Browser statt.
+JavaScriptValidationHint2=Versuchen Sie den Wert zu verändern nachdem er Ihren Browser verlassen hat.
+JavaScriptValidationHint3=Sie können aber auch JavaScript abschalten, bevor Sie sich die Seite anschauen.
+
+#HiddenFieldTampering.java
+TotalPriceIs=Der Gesamtpreis ist
+ThisAmountCharged=Ihre Kreditkarte wird sofort mit dem Betrag belastet
+
+HiddenFieldTamperingHint1=Die Applikation nutzt ein verstecktes Feld um Preisinformationen an den Server zu übertragen.
+HiddenFieldTamperingHint2=Benutzen Sie ein Programm um den Wert des versteckten Feldes abzufangen und zu verändern.
+HiddenFieldTamperingHint3=Benutzen Sie WebScarab um den Preis des Fernsehers auf einen anderen Wert einzustellen.
+HiddenFieldTamperingHint32= bis
+
+
+
\ No newline at end of file
diff --git a/webgoat/main/project/JavaSource/org/owasp/webgoat/lessons/AbstractLesson.java b/webgoat/main/project/JavaSource/org/owasp/webgoat/lessons/AbstractLesson.java
index 873a9a91b..54a710146 100644
--- a/webgoat/main/project/JavaSource/org/owasp/webgoat/lessons/AbstractLesson.java
+++ b/webgoat/main/project/JavaSource/org/owasp/webgoat/lessons/AbstractLesson.java
@@ -10,7 +10,11 @@ import java.net.URL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
+
import org.apache.ecs.Element;
import org.apache.ecs.ElementContainer;
import org.apache.ecs.StringElement;
@@ -26,6 +30,8 @@ import org.owasp.webgoat.session.Screen;
import org.owasp.webgoat.session.WebSession;
import org.owasp.webgoat.session.WebgoatContext;
import org.owasp.webgoat.session.WebgoatProperties;
+import org.owasp.webgoat.util.WebGoatI18N;
+
/***************************************************************************************************
@@ -95,12 +101,16 @@ public abstract class AbstractLesson extends Screen implements Comparable
-
Adding Users
-
-Usually using WebGoat you just use the user guest with the password guest.
-But maybe in laboratory you have made a setup with one server and a lot of
-clients. In this case you might want to have a user for every client
- and you have to alter tomcat-users.xml
-in tomcat/conf as the users are stored there. We recommend not to use real passwords
-as the passwords are stored in plain text in this file!
-
-
Add User
-
-Adding a user is straight forward. You can use the guest entry as an example. The added
-users should have the same role as the guest user. Add lines like this to the file:
-
+You can also change the SSL connector to another port of course.
+In this example to port 8442:
+
+
+ <!-- Define a SSL HTTP/1.1 Connector on port 8442 -->
+ <Connector address="127.0.0.1" port="8442"...
+
+
+
+
Make WebGoat Reachable From Another Client
+
THIS MAKES IT POSSIBLE TO REALLY ATTACK YOUR SERVER! DO NOT DO THIS
+ UNTIL YOU KNOW WHAT YOU ARE DOING. THIS CONFIGURATION SHOULD BE ONLY USED IN
+SAFE NETWORKS!
+
By its default configurations WebGoat is only
+reachable within the localhost. In a laboratory or a class
+there is maybe the need of having a server and a few clients.
+In this case it is possible to make WebGoat reachable.
+
+
The reason why WebGoat is only reachable within the localhost is
+the parameter address in the connectors for the non-SSL and SSL connection in server_80.xml. It is set
+to 127.0.0.1. The applications only listens on the port of this address for
+incoming connections if it is set. If you remove this parameter the server listens on all IPs on the
+specific port.
+
+
Permit Only Certain Clients Connection
+
+If you have made WebGoat reachable it is reachable for
+all clients. If you want to make it reachable only for certain clients specified
+by there IP you can archive this by using a 'Remote Address Filter'.
+The filter can be set in a whitebox or blackbox approach. Here is
+only discussed the whitebox approach. You have to add following lines to the Host section of web_80.xml:
+
+Usually using WebGoat you just use the user guest with the password guest.
+But maybe in laboratory you have made a setup with one server and a lot of
+clients. In this case you might want to have a user for every client
+ and you have to alter tomcat-users.xml
+in tomcat/conf as the users are stored there. We recommend not to use real passwords
+as the passwords are stored in plain text in this file!
+
+
Add User
+
+Adding a user is straight forward. You can use the guest entry as an example. The added
+users should have the same role as the guest user. Add lines like this to the file:
+
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/TraceXSS.html b/webgoat/main/project/WebContent/lesson_plans/English/TraceXSS.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/TraceXSS.html
rename to webgoat/main/project/WebContent/lesson_plans/English/TraceXSS.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/UncheckedEmail.html b/webgoat/main/project/WebContent/lesson_plans/English/UncheckedEmail.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/UncheckedEmail.html
rename to webgoat/main/project/WebContent/lesson_plans/English/UncheckedEmail.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/UsefulTools.html b/webgoat/main/project/WebContent/lesson_plans/English/UsefulTools.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/UsefulTools.html
rename to webgoat/main/project/WebContent/lesson_plans/English/UsefulTools.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/WSDLScanning.html b/webgoat/main/project/WebContent/lesson_plans/English/WSDLScanning.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/WSDLScanning.html
rename to webgoat/main/project/WebContent/lesson_plans/English/WSDLScanning.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/WeakAuthenticationCookie.html b/webgoat/main/project/WebContent/lesson_plans/English/WeakAuthenticationCookie.html
similarity index 80%
rename from webgoat/main/project/WebContent/lesson_plans/WeakAuthenticationCookie.html
rename to webgoat/main/project/WebContent/lesson_plans/English/WeakAuthenticationCookie.html
index 9dad07df8..9c9b86c8a 100644
--- a/webgoat/main/project/WebContent/lesson_plans/WeakAuthenticationCookie.html
+++ b/webgoat/main/project/WebContent/lesson_plans/English/WeakAuthenticationCookie.html
@@ -3,8 +3,10 @@
Concept / Topic To Teach:
-
+
Many applications will automatically log a user into their site if the right authentication cookie is specified. Some times the cookie values can be guessed if the algorithm for generating the cookie can be obtained. Some times the cookies are left on the client machine and can be stolen by exploiting another system vulnerability. Some times the cookies maybe intercepted using Cross site scripting. This lesson tries to make the student aware of authentication cookies and presents the student with a way to defeat the cookie authentication method in this lesson.
-
General Goal(s):
+
The user should be able to bypass the authentication check.
+Login using the webgoat/webgoat account to see what happens. You may also try aspect/aspect. When you understand the authentication cookie, try changing your identity to alice.
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/WeakSessionID.html b/webgoat/main/project/WebContent/lesson_plans/English/WeakSessionID.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/WeakSessionID.html
rename to webgoat/main/project/WebContent/lesson_plans/English/WeakSessionID.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/WelcomeScreeen.html b/webgoat/main/project/WebContent/lesson_plans/English/WelcomeScreeen.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/WelcomeScreeen.html
rename to webgoat/main/project/WebContent/lesson_plans/English/WelcomeScreeen.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/WsSAXInjection.html b/webgoat/main/project/WebContent/lesson_plans/English/WsSAXInjection.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/WsSAXInjection.html
rename to webgoat/main/project/WebContent/lesson_plans/English/WsSAXInjection.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/WsSqlInjection.html b/webgoat/main/project/WebContent/lesson_plans/English/WsSqlInjection.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/WsSqlInjection.html
rename to webgoat/main/project/WebContent/lesson_plans/English/WsSqlInjection.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/XMLInjection.html b/webgoat/main/project/WebContent/lesson_plans/English/XMLInjection.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/XMLInjection.html
rename to webgoat/main/project/WebContent/lesson_plans/English/XMLInjection.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/XPATHInjection.html b/webgoat/main/project/WebContent/lesson_plans/English/XPATHInjection.html
similarity index 100%
rename from webgoat/main/project/WebContent/lesson_plans/XPATHInjection.html
rename to webgoat/main/project/WebContent/lesson_plans/English/XPATHInjection.html
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/BasicAuthentication.html b/webgoat/main/project/WebContent/lesson_plans/German/BasicAuthentication.html
new file mode 100644
index 000000000..65490ef0c
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/BasicAuthentication.html
@@ -0,0 +1,15 @@
+
+
Lehrplan: Basic Authentication
+
+
Lehrinhalt:
+
+"Basic Authentication" wird benutzt um Server-seitige Resource zu schützen. Wird eine Anfrage an eine geschützte Resource gestellt, so sendet der Webserver ein "401 authentication request" mit der Antwort auf diese Anfrage.
+Dann fragt, auf der Client Seite, der Browser den Benutzer mittels einer Dialogbox nach Benutzername und Passwort für diese Resource.
+Der Browser enkodiert Benutzername und Passwort mit base64 und sendet diese Zugangsdaten zum Webserver.
+Daraufhin validiert der Webserver Benutzername und Passwort und gibt als Antwort die angeforderte Resource zurück falls die übermittelten Zugangsdaten korrekt sind.
+Die Zugangsdaten werden vom Browser bei jedem weiteren Zugriff auf geschützte Resourcen mitgesendet ohne dass der Benutzer
+sie ein weiteres Mal eingeben muss.
+
+
Grundsätzliche(s) Ziel(e):
+Das Ziel dieser Lektion ist es "Basic Authentication" zu verstehen und die folgenden Fragen zu beantworten.
+
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/CommandInjection.html b/webgoat/main/project/WebContent/lesson_plans/German/CommandInjection.html
new file mode 100644
index 000000000..a8de365cb
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/CommandInjection.html
@@ -0,0 +1,16 @@
+
+
Lehrplan: Einschleusen von Programmcode
+
+
Konzept:
+
+Das Einschleusen von Programmcode stellt eine ernst zu nehmende Bedrohung für dynamische Webseiten dar. Entsprechende Angriffe
+sind leicht zu lernen und der verursachte Schaden ist schwer bzw. entspricht der Kompromittierung des kompletten Systems.
+Trotz dieses Gefahrenpotentials ist eine unglaubliche Anzahl von Systemen im Internet für diese Form des Angriffs verwundbar.
+Dieser Angriff ist zwar leicht durchzuführen, allerdings ist er auch mit ein wenig gesundem Menschenverstand und Vorausdenken
+leicht zu verhindern. Die anerkannte Vorgehensweise zur Verhinderung dieser Angriffstypen
+besteht darin alle Eingabedaten zu säubern, insbesondere die Daten die in Betriebssystembefehlen,
+Skripten und Datenbankabfragen eingebaut werden.
+
Grundsätzliche(s) Ziel(e):
+
+Schleusen Sie einen Befehl in das darunterliegende Betriebssystem ein.
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/HiddenFieldTampering.html b/webgoat/main/project/WebContent/lesson_plans/German/HiddenFieldTampering.html
new file mode 100644
index 000000000..c4606ac75
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/HiddenFieldTampering.html
@@ -0,0 +1,14 @@
+
+
Lehrplan: Versteckte Felder ausnutzen
+
+
Konzept:
+
+Entwickler benutzen versteckte Formularfelder zur Besucherverfolgung, für den Login, für Preisinformationen und andere
+Informationen. Dies ist ein sehr einfacher und bequemer Mechnismus für Entwickler, allerdings werden die Werte
+diese Felder nur selten geprüft bevor sie benutzt werden. In dieser Lektion lernt man wie man versteckte Felder
+zu seinem Vorteil manipulieren kann.
+
+
+
+
Grundsätzliche(s) Ziel(e):
+Nutzen Sie ein verstecktes Formularfeld aus, um den HD Fernseher zu einem falschen Preis zu kaufen.
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/HtmlClues.html b/webgoat/main/project/WebContent/lesson_plans/German/HtmlClues.html
new file mode 100644
index 000000000..70d63e5ee
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/HtmlClues.html
@@ -0,0 +1,13 @@
+
+
Lehrplan: Nützliche Hinweise in HTML entdecken.
+
+
+
Konzept:
+
+ Entwickler lassen oftmals Kommentare wie FIXME's, TODO's, Code Broken, Hack usw. im Quellcode.
+ Durchsuchen Sie den Quellcode nach allem was für Sie nach Passwörtern, Hintertüren oder anderen Unregelmäßigkeiten aussieht.
+
+
+
+
Grundsätzliche(s) Ziel(e):
+Sie suchen und finden Hinweise im Quellcode die es Ihnen erlauben sich anzumelden.
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/HttpBasics.html b/webgoat/main/project/WebContent/lesson_plans/German/HttpBasics.html
new file mode 100644
index 000000000..995912eeb
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/HttpBasics.html
@@ -0,0 +1,29 @@
+
+
Lehrplan: Http Basics
+
+
+
Lehrinhalt:
+ Diese Lektion stellt die Verständnis-Grundlagen für den Datentransport zwischen Browser und Webapplikation dar.
+
+
+So funktioniert HTTP:
+
+Alle HTTP Transaktionen folgen demselben Schema. Jede Anfrage vom Client und jede Antwort des Servers besteht aus drei Teilen: Der Anfrage-/Antwortzeile, dem Kopf und dem Körper.
+Der Client initiiert eine Transaktion wie folgt:
+
+ Der Client kontaktiert den Server und sendet eine Dokumentenanfrage
+
+
+
GET /index.html?param=value HTTP/1.0
+ Als nächstes sendet der Client optionale Kopfzeilen (Header) um den Server über die Client-seitige Konfiguration und die akzeptierten Dokumentenformate zu informieren.
+
+
+Nachdem der eigentliche Anfrage (Request) und den weiteren Kopfzeilen (Header) kann der Client noch weitere Daten senden. Diese Daten werden meistens von CGI Programmen im Zusammenhang mit der POST Methode ausgewertet.
+
+
Grundsätzliche(s) Ziel(e):
+
+Geben Sie Ihren Namen in das Eingabefeld ein und drücken sie "Los gehts!" um die Anfrage abzuschicken. Der Server wird die Anfrage akzeptieren, Ihre Eingabedaten umdrehen, und wieder zu Ihnen zurückschicken. Dies stellt eine vollständige HTTP Transaktion dar!
+
+Sie sollten mit der Benutzung von WebGoat vertraut werden. Es sollten die Knöpfe für Hinweise (Hints), für das Anzeigen von Parametern(Parameters) oder Cookies und für das Anzeigen von Java-Quellcode ausprobiert werden.
+Außerdem, können Sie hier WebScarab gut ausprobieren.
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/JavaScriptValidation.html b/webgoat/main/project/WebContent/lesson_plans/German/JavaScriptValidation.html
new file mode 100644
index 000000000..f278bc9d9
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/JavaScriptValidation.html
@@ -0,0 +1,19 @@
+
+
+Client-seitige Validierung sollte nicht als eine sichere Maßnahme zur Validierung von Parametern angesehen werden.
+Diese Art der Validierung kann höchstens den Server entlasten und verhindern das normale Benutzer Eingabedaten in
+einem falschen Format absenden. Angreifer hingegen, können diesen Mechanismus auf verschiedene Arten umgehen. Jede
+Client-seitige Validierung sollte auf der Serverseite wiederholt werden. Dies verhindert, dass unsichere Parameter
+in der Applikation benutzt werden.
+
+
+
Grundsätzliche(s) Ziel(e):
+
+Das untenstehende Formular verlangt von Ihnen verschiedene Regeln beim Ausfüllen einzuhalten. Dies wird Client-seitig
+überprüft. Versuchen Sie diese
+Regeln zu brechen und senden Sie Daten an die Webseite die die Webseite nicht erwartet! Sie müssen alle 7 Regeln
+gleichzeitig brechen!
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/LogSpoofing.html b/webgoat/main/project/WebContent/lesson_plans/German/LogSpoofing.html
new file mode 100644
index 000000000..c5bbff3b0
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/LogSpoofing.html
@@ -0,0 +1,17 @@
+
+
Lehrplan: Fälschen von Einträgen in Log Dateien (Log Spoofing)
+
+
+
Konzept:
+
+Log-Einträge in Log-Dateien müssen nicht immer von tatsächlichen Ereignissen stammen. Ein Angreifer kann durch Einschleusen
+bestimmter Einträge das Eintreten bestimmter Ereignisse vortäuschen und dadurch den Administrator zu unnötigen bzw. voreiligen
+Handlungen verleiten bzw. ihn einfach nur verwirren.
+
+
+
Grundsätzliche(s) Ziel(e):
+
+* Der graue Bereich steht für das was tatsächlich in der Log-Datei des Webservers erscheint.
+* Ihr Ziel ist es so aussehen zu lassen, als hätte sich der Benutzer "admin" erfolgreich eingeloggt.
+* Verbessern Sie Ihren Angriff, indem Sie ein Skript (Javascript) in das Log schreiben.
+
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/PathBasedAccessControl.html b/webgoat/main/project/WebContent/lesson_plans/German/PathBasedAccessControl.html
new file mode 100644
index 000000000..c7afce017
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/PathBasedAccessControl.html
@@ -0,0 +1,11 @@
+
+
Lehrplan: Umgehen eines Pfad-basierten Zugangskontrollschemas
+
+
Konzept:
+
+In einem Pfad-basierten Zugangangskontrollschemas (path based access control scheme), kann ein Angreifer den Pfad "bewandern" indem
+er relative Pfadangaben übergibt. Dadurch kann der Angreifer auf Dateien zugreifen, die für niemanden zugänglich sind, bzw. zu denen
+der Zugang bei direkter Anfrage ansonsten abgelehnt würde.
+
+
Grundsätzliche(s) Ziel(e):
+Sie sollten in der Lage sein auf eine Datei zuzugreifen die sich nicht im aufgelisteten Verzeichnis befindet.
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/ReflectedXSS.html b/webgoat/main/project/WebContent/lesson_plans/German/ReflectedXSS.html
new file mode 100644
index 000000000..60f5e0e80
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/ReflectedXSS.html
@@ -0,0 +1,19 @@
+
+
Lehrplan: Cross Site Scripting (XSS)
+
+
Konzept:
+
+Jegliche Eingabedaten sollten auf der Serverseite überprüft werden.
+XSS passiert wenn nicht geprüfte Benutereingaben in eine HTTP Response eingebaut werden.
+Bei einem reflektierten XSS Angriff, kann ein Angreifer eine URL erzeugen die ein Angriffsskript enthält und kann diese
+URL auf einer Webseite hinterlegen, sie per Email verschicken oder ein Opfer auf eine andere Weise dazu bringen die
+URL zu besuchen.
+
+
+
+
General Goal(s):
+
+Ihre Aufgabe ist es, sich ein Stück Javascript zu überlegen das Sie in diese Seite einbauen können.
+Dann versuchen Sie die Seite dazu zu bringen, Ihnen dieses Skript wieder auszulieferen (es zu reflektieren)
+so dass das Skript in Ihrem Browser ausgeführt wird.
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/RemoteAdminFlaw.html b/webgoat/main/project/WebContent/lesson_plans/German/RemoteAdminFlaw.html
new file mode 100644
index 000000000..dbaaeb3c3
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/RemoteAdminFlaw.html
@@ -0,0 +1,16 @@
+
+
Lehrplan: Zugang zu Web-Resourcen erzwingen
+
+
Konzept::
+Applikationen haben oftmals eine Administrationsschnittstelle, das priviligierten Benutzern Zugang zu Funktionalität ermöglicht die
+für normale Benutzer nicht sichtbar ist. Der Applikationsserver selbst hat auch oft noch eine seperate Administrationsschnittstelle.
+
+
Grundsätzliche(s) Ziel(e):
+
+Versuchen Sie auf die Administrationsschnittstelle von WebGoat zuzugreifen. Sie können auch versuchen auf die Administrationsschnittstelle
+von Tomcat (der Applikationsserver) zuzugreifen. Die Tomcat Schnittstelle kann über die URL /admin erreicht werden, zählt aber nicht
+für das Bestehen dieser Lektion.
+Wenn Sie Zugriff auf Funktionalität der Administrationsschnittstelle erlangt haben, dann kommen Sie hierher zurück um zu sehen ob Sie
+die Lektion abgeschlossen haben.
+
+
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/SqlNumericInjection.html b/webgoat/main/project/WebContent/lesson_plans/German/SqlNumericInjection.html
new file mode 100644
index 000000000..ad9e7cc41
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/SqlNumericInjection.html
@@ -0,0 +1,18 @@
+
+
Lehrplan: Durchführung von Numeric SQL Injection
+
+
+
Konzept:
+SQL Injection Angriffe stellen eine ernstzunehmende Bedrohung für alle Datenbank-getriebenen Webseiten dar.
+Entsprechende Angriffe sind leicht zu lernen und der verursachte Schaden ist schwer bzw. entspricht der
+Kompromittierung des kompletten Systems.
+Trotz dieses Gefahrenpotentials ist eine unglaubliche Anzahl von Systemen im Internet für diese Form des Angriffs verwundbar.
+Dieser Angriff ist zwar leicht durchzuführen, allerdings ist er auch mit ein wenig gesundem Menschenverstand und Vorausdenken
+leicht zu verhindern. Die anerkannte Vorgehensweise zur Verhinderung dieser Angriffstypen
+besteht darin alle Eingabedaten zu säubern, insbesondere die Daten die in Betriebssystembefehlen,
+Skripten und Datenbankabfragen eingebaut werden.
+
Grundsätzliche(s) Ziel(e):
+
+Das untenstehende Formular ermöglicht es dem Benutzer Wetterdaten zu betrachten. Versuchen Sie einen SQL String einzuschleusen, der
+als Resultat alle Wetterdaten anzeigt.
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/SqlStringInjection.html b/webgoat/main/project/WebContent/lesson_plans/German/SqlStringInjection.html
new file mode 100644
index 000000000..0cd360db7
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/SqlStringInjection.html
@@ -0,0 +1,20 @@
+
+
Lehrplan: Durchführung von String SQL Injection
+
+
+
Konzept:
+
+SQL Injection Angriffe stellen eine ernstzunehmende Bedrohung für alle Datenbank-getriebenen Webseiten dar.
+Entsprechende Angriffe sind leicht zu lernen und der verursachte Schaden ist schwer bzw. entspricht der
+Kompromittierung des kompletten Systems.
+Trotz dieses Gefahrenpotentials ist eine unglaubliche Anzahl von Systemen im Internet für diese Form des Angriffs verwundbar.
+Dieser Angriff ist zwar leicht durchzuführen, allerdings ist er auch mit ein wenig gesundem Menschenverstand und Vorausdenken
+leicht zu verhindern. Die anerkannte Vorgehensweise zur Verhinderung dieser Angriffstypen
+besteht darin alle Eingabedaten zu säubern, insbesondere die Daten die in Betriebssystembefehlen,
+Skripten und Datenbankabfragen eingebaut werden.
+
Grundsätzliche(s) Ziel(e):
+
+Das untenstehende Formular erlaubt es Benutzern ihre Kreditkartennummern anzuzeigen. Das können Sie
+exemplarisch mit dem Benutzernamen "Smith" ausprobieren.
+Versuchen Sie einen SQL String einzuschleusen, der als Resultat alle Kreditkartennummern anzeigt.
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/StoredXss.html b/webgoat/main/project/WebContent/lesson_plans/German/StoredXss.html
new file mode 100644
index 000000000..74463c949
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/StoredXss.html
@@ -0,0 +1,16 @@
+
+
Lehrplan: Durchführen von Stored Cross Site Scripting (XSS)
+
+
Konzept:
+
+Man sollte Eingabedaten immer säubern, besonders diese die später als parameter für Betriebssystembefehle, Skripte
+und Datenbankabfragen benutzt werden. Essentiell ist das für Inhalt der irgendwo in der Applikation permanent gespeichert
+wird. Benutzer sollten nicht in der Lage sein eigene Inhalte zu hinterlassen, durch die andere Nutzer ungewünschte
+Seiten oder Inhalte nachladen wenn der Inhalt betrachtet wird.
+
+
+
Grundsätzliche(s) Ziel(e):
+
+Hinterlassen Sie Inhalt der den Browser eines anderen Benutzers dazu bringt eine unerwünschte
+Seite bzw. Inhalt anzuzeigen.
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/lesson_plans/German/WeakAuthenticationCookie.html b/webgoat/main/project/WebContent/lesson_plans/German/WeakAuthenticationCookie.html
new file mode 100644
index 000000000..5475df32c
--- /dev/null
+++ b/webgoat/main/project/WebContent/lesson_plans/German/WeakAuthenticationCookie.html
@@ -0,0 +1,22 @@
+
+
Lehrplan: Einen Authentisierungs Cookie fa¨lschen
+
+
+
Lehrinhalt:
+
+Viele Webapplikationen erlauben es einem Benutzer sofort eingeloggt zu sein, sobald der Benutzer den richtigen Authentisierungs Cookie übergibt.
+Manchmal kann der richtige Wert dieses Cookies geraten werden, wenn der Algorithmus zur Generierung dieser Cookies bekannt ist.
+Der Cookie kann auch von dem Computer des Benutzers gestohlen werden indem andere Schwachstellen in seinem System ausgenutzt werden.
+Mittels Cross Site Scripting (XSS) kann der Cookie auch abgefangen werden.
+Diese Übung soll Sie auf das Thema der Authentisierungs Cookies aufmerksam machen und gibt Ihnen
+die Möglichkeit die Authentisierungsmethode dieser Lektion zu überwinden.
+
+
+
+
Grundsätzliche(s) Ziel(e):
+
+ Es ist Ihre Aufgabe die Authentisierung zu umgehen. Melden Sie sich mit dem Benutzernamen "webgoat" und dem Passwort "webgoat" an
+ und schauen Sie was passiert. Sie können auch versuchen Sich mit aspect/aspect anzumelden. Wenn Sie den Authentisierungs Cookie verstehen,
+ versuchen Sie Ihre Identität zu "alice" zu wechseln.
+
+
\ No newline at end of file
diff --git a/webgoat/main/project/WebContent/main.jsp b/webgoat/main/project/WebContent/main.jsp
index 451258783..6d59a5b2f 100644
--- a/webgoat/main/project/WebContent/main.jsp
+++ b/webgoat/main/project/WebContent/main.jsp
@@ -1,5 +1,5 @@
<%@ page contentType="text/html; charset=ISO-8859-1" language="java"
- import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.Category, org.owasp.webgoat.lessons.AbstractLesson, java.util.*"
+ import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.Category, org.owasp.webgoat.lessons.AbstractLesson, org.owasp.webgoat.util.*, java.util.*"
errorPage="" %>
<%
Course course = ((Course)session.getAttribute("course"));
@@ -107,7 +107,7 @@ StringBuffer buildList = new StringBuffer();
}
}
%>
-<%
+ <%
}
%>
@@ -115,7 +115,21 @@ StringBuffer buildList = new StringBuffer();
}%>