diff --git a/ webgoat/main/project/JavaSource/WebContent/META-INF/MANIFEST.MF b/ webgoat/main/project/JavaSource/WebContent/META-INF/MANIFEST.MF new file mode 100644 index 000000000..348f1bdd3 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1 @@ +Manifest-Version: 1.0 \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/Copy of webgoat.properties b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/Copy of webgoat.properties new file mode 100644 index 000000000..c6050233b --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/Copy of webgoat.properties @@ -0,0 +1,52 @@ +category.General.ranking=11 +lesson.HttpBasics.ranking=10 +lesson.ThreadSafetyProblem.ranking=20 + +category.Broken\ Authentication\ and\ Session\ Management.ranking=21 +lesson.BasicAuthentication.ranking=10 +lesson.WeakAuthenticationCookie.ranking=20 + +category.Broken\ Access\ Control.ranking=31 +lesson.AccessControlMatrix.ranking=10 +lesson.PathBasedAccessControl.ranking=20 +lesson.RoleBasedAccessControl.hidden=true + +category.Cross-Site\ Scripting\ (XSS).ranking=41 +lesson.StoredXss.ranking=10 +lesson.ReflectedXSS.ranking=20 +lesson.CrossSiteScripting.hidden=true + +category.Unvalidated\ Parameters.ranking=51 +lesson.HiddenFieldTampering.ranking=10 +lesson.JavaScriptValidation.ranking=20 +lesson.UncheckedEmail.ranking=30 + +category.Insecure\ Storage.ranking=61 +lesson.Encoding.ranking=10 + +category.Injection\ Flaws.ranking=71 +lesson.SqlNumericInjection.ranking=10 +lesson.SqlStringInjection.ranking=20 +lesson.CommandInjection.ranking=30 +lesson.SQLInjection.hidden=true + +category.Improper\ Error\ Handling.ranking=81 +lesson.FailOpenAuthentication.ranking=10 + +category.Code\ Quality.ranking=91 +lesson.HtmlClues.ranking=10 + +category.Web\ Services.category.ranking=101 +lesson.SoapRequest.ranking=10 +lesson.WSDLScanning.ranking=20 +lesson.WsSqlInjection.ranking=30 + +lesson.WeakSessionID.hidden=true +lesson.BufferOverflow.hidden=true +lesson.BlindSqlInjection.hidden=true +lesson.DOS_Login.hidden=true +lesson.ForcedBrowsing.hidden=true +lesson.ForgotPassword.hidden=true +lesson.ParameterInjection.hidden=true +lesson.RemoteAdminFlaw.hidden=true +lesson.ChallengeScreen.hidden=true \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/axis-ant.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/axis-ant.jar new file mode 100644 index 000000000..dadfa3bc9 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/axis-ant.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/axis.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/axis.jar new file mode 100644 index 000000000..b81517306 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/axis.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/catalina.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/catalina.jar new file mode 100644 index 000000000..833d7475d Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/catalina.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-collections-3.1.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-collections-3.1.jar new file mode 100644 index 000000000..41e230fee Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-collections-3.1.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-digester.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-digester.jar new file mode 100644 index 000000000..312be0235 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-digester.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-discovery-0.2.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-discovery-0.2.jar new file mode 100644 index 000000000..b88554847 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-discovery-0.2.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-logging-1.0.4.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-logging-1.0.4.jar new file mode 100644 index 000000000..b73a80fab Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/commons-logging-1.0.4.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/ecs-1.4.2.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/ecs-1.4.2.jar new file mode 100644 index 000000000..e5a9fc212 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/ecs-1.4.2.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/idb.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/idb.jar new file mode 100644 index 000000000..ec2a40293 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/idb.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/j2h.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/j2h.jar new file mode 100644 index 000000000..18fdbc91d Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/j2h.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/jaxrpc.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/jaxrpc.jar new file mode 100644 index 000000000..56c435e79 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/jaxrpc.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/jta-spec1_0_1.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/jta-spec1_0_1.jar new file mode 100644 index 000000000..705e8c81c Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/jta-spec1_0_1.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/log4j-1.2.8.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/log4j-1.2.8.jar new file mode 100644 index 000000000..493a3ccc1 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/log4j-1.2.8.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/saaj.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/saaj.jar new file mode 100644 index 000000000..dd240639f Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/saaj.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/wsdl4j-1.5.1.jar b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/wsdl4j-1.5.1.jar new file mode 100644 index 000000000..c6254ee69 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/lib/wsdl4j-1.5.1.jar differ diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/server-config.wsdd b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/server-config.wsdd new file mode 100644 index 000000000..b95bea98c --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/server-config.wsdd @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://xml.apache.org/axis/wsdd/ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web-unix.xml b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web-unix.xml new file mode 100644 index 000000000..15b91165f --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web-unix.xml @@ -0,0 +1,318 @@ + + + + + + + WebGoat + + This web application is designed to demonstrate web + application security flaws for the purpose of educating + developers and security professionals about web + application security problems. The initial version was + written by Aspect Security (info@aspectsecurity.com), + and was donated to the OWASP. + + + + + + + + email + info@aspectsecurity.com + + The EMAIL address of the administrator to whom questions + and comments about this application should be addressed. + + + + + + + AxisServlet + Apache-Axis Servlet + + org.apache.axis.transport.http.AxisServlet + + + + + AdminServlet + Axis Admin Servlet + + org.apache.axis.transport.http.AdminServlet + + 100 + + + + SOAPMonitorService + SOAPMonitorService + + org.apache.axis.monitor.SOAPMonitorService + + + SOAPMonitorPort + 5001 + + 100 + + + + WebGoat + + This servlet plays the "controller" role in the MVC architecture + used in this application. + + The initialization parameter namess for this servlet are the + "servlet path" that will be received by this servlet (after the + filename extension is removed). The corresponding value is the + name of the action class that will be used to process this request. + + org.owasp.webgoat.HammerHead + + + debug + false + + + + CookieDebug + true + + + + DefuseOSCommands + false + + + + Enterprise + true + + + + + + + FeedbackAddress + + <A HREF=mailto:webgoat@aspectsecurity.com>webgoat@aspectsecurity.com</A> + + + + + DatabaseDriver + + + org.enhydra.instantdb.jdbc.idbDriver + + + + + DatabaseConnectionString + + + jdbc:idb:PATH/database.prp + + + + + + + 5 + + + + + + LessonSource + + This servlet returns the Java source of the current lesson. + + org.owasp.webgoat.LessonSource + + + + + + + AxisServlet + /servlet/AxisServlet + + + + AxisServlet + *.jws + + + + AxisServlet + /services/* + + + + SOAPMonitorService + /SOAPMonitor + + + + + + + WebGoat + /attack + + + + LessonSource + /source + + + + + + + + 2880 + + + + wmv + video/x-ms-wmv + + + + + + Link to the UserDatabase instance from which we request lists of + defined role names. Typically, this will be connected to the global + user database with a ResourceLink element in server.xml or the context + configuration file for the Manager web application. + + users + + org.apache.catalina.UserDatabase + + + + + + + + WebGoat Application + /* + + + webgoat_user + webgoat_admin + webgoat_challenge + + + + + + WebGoat Application Source + /JavaSource/* + + + server_admin + + + + + + + BASIC + WebGoat Application + + + + + The role that is required to administrate WebGoat + webgoat_admin + + + + The role that is required to start the challenge log viewer + webgoat_challenge + + + + The role that is required to use WebGoat + webgoat_user + + + + This role is for admins only + server_admin + + + + diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web-windows.xml b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web-windows.xml new file mode 100644 index 000000000..fa164859a --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web-windows.xml @@ -0,0 +1,318 @@ + + + + + + + WebGoat + + This web application is designed to demonstrate web + application security flaws for the purpose of educating + developers and security professionals about web + application security problems. The initial version was + written by Aspect Security (info@aspectsecurity.com), + and was donated to the OWASP. + + + + + + + + email + info@aspectsecurity.com + + The EMAIL address of the administrator to whom questions + and comments about this application should be addressed. + + + + + + + AxisServlet + Apache-Axis Servlet + + org.apache.axis.transport.http.AxisServlet + + + + + AdminServlet + Axis Admin Servlet + + org.apache.axis.transport.http.AdminServlet + + 100 + + + + SOAPMonitorService + SOAPMonitorService + + org.apache.axis.monitor.SOAPMonitorService + + + SOAPMonitorPort + 5001 + + 100 + + + + WebGoat + + This servlet plays the "controller" role in the MVC architecture + used in this application. + + The initialization parameter namess for this servlet are the + "servlet path" that will be received by this servlet (after the + filename extension is removed). The corresponding value is the + name of the action class that will be used to process this request. + + org.owasp.webgoat.HammerHead + + + debug + false + + + + CookieDebug + true + + + + DefuseOSCommands + false + + + + Enterprise + true + + + + + + + FeedbackAddress + + <A HREF=mailto:webgoat@aspectsecurity.com>webgoat@aspectsecurity.com</A> + + + + + DatabaseDriver + + sun.jdbc.odbc.JdbcOdbcDriver + + + + + + DatabaseConnectionString + + + + jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=PATH/webgoat.mdb;PWD=webgoat" + + + + + + 5 + + + + + + LessonSource + + This servlet returns the Java source of the current lesson. + + org.owasp.webgoat.LessonSource + + + + + + + AxisServlet + /servlet/AxisServlet + + + + AxisServlet + *.jws + + + + AxisServlet + /services/* + + + + SOAPMonitorService + /SOAPMonitor + + + + + + + WebGoat + /attack + + + + LessonSource + /source + + + + + + + + 2880 + + + + wmv + video/x-ms-wmv + + + + + + Link to the UserDatabase instance from which we request lists of + defined role names. Typically, this will be connected to the global + user database with a ResourceLink element in server.xml or the context + configuration file for the Manager web application. + + users + + org.apache.catalina.UserDatabase + + + + + + + + WebGoat Application + /* + + + webgoat_user + webgoat_admin + webgoat_challenge + + + + + + WebGoat Application Source + /JavaSource/* + + + server_admin + + + + + + + BASIC + WebGoat Application + + + + + The role that is required to administrate WebGoat + webgoat_admin + + + + The role that is required to start the challenge log viewer + webgoat_challenge + + + + The role that is required to use WebGoat + webgoat_user + + + + This role is for admins only + server_admin + + + + diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web.xml b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web.xml new file mode 100644 index 000000000..94720c354 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/web.xml @@ -0,0 +1,318 @@ + + + + + + + WebGoat + + This web application is designed to demonstrate web + application security flaws for the purpose of educating + developers and security professionals about web + application security problems. The initial version was + written by Aspect Security (info@aspectsecurity.com), + and was donated to the OWASP. + + + + + + + + email + info@aspectsecurity.com + + The EMAIL address of the administrator to whom questions + and comments about this application should be addressed. + + + + + + + AxisServlet + Apache-Axis Servlet + + org.apache.axis.transport.http.AxisServlet + + + + + AdminServlet + Axis Admin Servlet + + org.apache.axis.transport.http.AdminServlet + + 100 + + + + SOAPMonitorService + SOAPMonitorService + + org.apache.axis.monitor.SOAPMonitorService + + + SOAPMonitorPort + 5001 + + 100 + + + + WebGoat + + This servlet plays the "controller" role in the MVC architecture + used in this application. + + The initialization parameter namess for this servlet are the + "servlet path" that will be received by this servlet (after the + filename extension is removed). The corresponding value is the + name of the action class that will be used to process this request. + + org.owasp.webgoat.HammerHead + + + debug + false + + + + CookieDebug + true + + + + DefuseOSCommands + true + + + + Enterprise + true + + + + + + + FeedbackAddress + + <A HREF=mailto:webgoat@aspectsecurity.com>webgoat@aspectsecurity.com</A> + + + + + DatabaseDriver + + sun.jdbc.odbc.JdbcOdbcDriver + + + + + + DatabaseConnectionString + + + + jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=PATH/webgoat.mdb;PWD=webgoat" + + + + + + 5 + + + + + + LessonSource + + This servlet returns the Java source of the current lesson. + + org.owasp.webgoat.LessonSource + + + + + + + AxisServlet + /servlet/AxisServlet + + + + AxisServlet + *.jws + + + + AxisServlet + /services/* + + + + SOAPMonitorService + /SOAPMonitor + + + + + + + WebGoat + /attack + + + + LessonSource + /source + + + + + + + + 2880 + + + + wmv + video/x-ms-wmv + + + + + + Link to the UserDatabase instance from which we request lists of + defined role names. Typically, this will be connected to the global + user database with a ResourceLink element in server.xml or the context + configuration file for the Manager web application. + + users + + org.apache.catalina.UserDatabase + + + + + + + + WebGoat Application + /* + + + webgoat_user + webgoat_admin + webgoat_challenge + + + + + + WebGoat Application Source + /JavaSource/* + + + server_admin + + + + + + + BASIC + WebGoat Application + + + + + The role that is required to administrate WebGoat + webgoat_admin + + + + The role that is required to start the challenge log viewer + webgoat_challenge + + + + The role that is required to use WebGoat + webgoat_user + + + + This role is for admins only + server_admin + + + + diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-class.properties b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-class.properties new file mode 100644 index 000000000..c6050233b --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-class.properties @@ -0,0 +1,52 @@ +category.General.ranking=11 +lesson.HttpBasics.ranking=10 +lesson.ThreadSafetyProblem.ranking=20 + +category.Broken\ Authentication\ and\ Session\ Management.ranking=21 +lesson.BasicAuthentication.ranking=10 +lesson.WeakAuthenticationCookie.ranking=20 + +category.Broken\ Access\ Control.ranking=31 +lesson.AccessControlMatrix.ranking=10 +lesson.PathBasedAccessControl.ranking=20 +lesson.RoleBasedAccessControl.hidden=true + +category.Cross-Site\ Scripting\ (XSS).ranking=41 +lesson.StoredXss.ranking=10 +lesson.ReflectedXSS.ranking=20 +lesson.CrossSiteScripting.hidden=true + +category.Unvalidated\ Parameters.ranking=51 +lesson.HiddenFieldTampering.ranking=10 +lesson.JavaScriptValidation.ranking=20 +lesson.UncheckedEmail.ranking=30 + +category.Insecure\ Storage.ranking=61 +lesson.Encoding.ranking=10 + +category.Injection\ Flaws.ranking=71 +lesson.SqlNumericInjection.ranking=10 +lesson.SqlStringInjection.ranking=20 +lesson.CommandInjection.ranking=30 +lesson.SQLInjection.hidden=true + +category.Improper\ Error\ Handling.ranking=81 +lesson.FailOpenAuthentication.ranking=10 + +category.Code\ Quality.ranking=91 +lesson.HtmlClues.ranking=10 + +category.Web\ Services.category.ranking=101 +lesson.SoapRequest.ranking=10 +lesson.WSDLScanning.ranking=20 +lesson.WsSqlInjection.ranking=30 + +lesson.WeakSessionID.hidden=true +lesson.BufferOverflow.hidden=true +lesson.BlindSqlInjection.hidden=true +lesson.DOS_Login.hidden=true +lesson.ForcedBrowsing.hidden=true +lesson.ForgotPassword.hidden=true +lesson.ParameterInjection.hidden=true +lesson.RemoteAdminFlaw.hidden=true +lesson.ChallengeScreen.hidden=true \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-lmc.properties b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-lmc.properties new file mode 100644 index 000000000..ba8a62477 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-lmc.properties @@ -0,0 +1,49 @@ +category.General.ranking=11 +lesson.HttpBasics.ranking=10 +lesson.ThreadSafetyProblem.ranking=20 + +category.Broken\ Authentication\ and\ Session\ Management.ranking=21 +lesson.BasicAuthentication.ranking=10 +lesson.WeakAuthenticationCookie.ranking=20 + +category.Broken\ Access\ Control.ranking=31 +lesson.AccessControlMatrix.ranking=10 +lesson.PathBasedAccessControl.ranking=20 + +category.Cross-Site\ Scripting\ (XSS).ranking=41 +lesson.StoredXss.ranking=10 +lesson.ReflectedXSS.ranking=20 + +category.Unvalidated\ Parameters.ranking=51 +lesson.HiddenFieldTampering.ranking=10 +lesson.JavaScriptValidation.ranking=20 +lesson.UncheckedEmail.ranking=30 + +category.Insecure\ Storage.ranking=61 +lesson.Encoding.ranking=10 + +category.Injection\ Flaws.ranking=71 +lesson.SqlNumericInjection.ranking=10 +lesson.SqlStringInjection.ranking=20 +lesson.CommandInjection.ranking=30 + +category.Improper\ Error\ Handling.ranking=81 +lesson.FailOpenAuthentication.ranking=10 + +category.Code\ Quality.ranking=91 +lesson.HtmlClues.ranking=10 + +category.Web\ Services.category.ranking=101 +lesson.SoapRequest.ranking=10 +lesson.WSDLScanning.ranking=20 +lesson.WsSqlInjection.ranking=30 + +lesson.WeakSessionID.hidden=true +lesson.BufferOverflow.hidden=true +lesson.BlindSqlInjection.hidden=true +lesson.DOS_Login.hidden=true +lesson.ForcedBrowsing.hidden=true +lesson.ForgotPassword.hidden=true +lesson.ParameterInjection.hidden=true +lesson.RemoteAdminFlaw.hidden=true +lesson.ChallengeScreen.hidden=true diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-owasp.properties b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-owasp.properties new file mode 100644 index 000000000..985d9dda0 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat-owasp.properties @@ -0,0 +1 @@ +#lesson.BufferOverflow.hidden=true diff --git a/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat.properties b/ webgoat/main/project/JavaSource/WebContent/WEB-INF/webgoat.properties new file mode 100644 index 000000000..e69de29bb diff --git a/ webgoat/main/project/JavaSource/WebContent/css/layers.css b/ webgoat/main/project/JavaSource/WebContent/css/layers.css new file mode 100644 index 000000000..dfcb405da --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/css/layers.css @@ -0,0 +1,2 @@ +#lessonTitle {position:absolute;left:94px;top:75px;width:690px;height:22px;z-index:1;float: right;font-size: 20px;color: #FFFFFF;} +#hMenuBar {position:absolute;left:245px;top:108px;width:538px;height:22px;z-index:2;} diff --git a/ webgoat/main/project/JavaSource/WebContent/css/lesson.css b/ webgoat/main/project/JavaSource/WebContent/css/lesson.css new file mode 100644 index 000000000..ba0229b96 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/css/lesson.css @@ -0,0 +1,11 @@ +body.page {color: #000000;font-family: Verdana, Tahoma, sans-serif;font-size: 8pt;} +td {font-family: Verdana, Tahoma, sans-serif;font-size: 8pt; } +tr {font-family: Verdana, Tahoma, sans-serif;} +span {font-family: Verdana, Tahoma, sans-serif;} +.f8-0 {font-size: 8pt;font-family: Verdana, Tahoma, sans-serif;} +.f8-1 {font-size: 8pt;font-family: Verdana, Tahoma, sans-serif;} +.div_tree {padding-left:10px;overflow:visible;} +.report_tree_link {width:100%;font-size: 8pt;font-family: Verdana, Tahoma, sans-serif;margin-left:2px;padding-right:2px;margin-top:2px;border-spacing:0px;} +.form_link {font-size: 8pt;font-family: Verdana, Tahoma, sans-serif;font-weight: bold;} +.report_title {font-size: 8pt;font-family: Verdana, Tahoma, sans-serif;border: 1px solid #afafaf;background-color: #cfcfef;margin-top:3px;margin-bottom:3px;margin-left:1px;padding:3px;font-weight: bold;} +.middle {vertical-align:middle;} \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/css/menu.css b/ webgoat/main/project/JavaSource/WebContent/css/menu.css new file mode 100644 index 000000000..7fbac6ad4 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/css/menu.css @@ -0,0 +1,7 @@ +.pviimenudiv td {font-family: "Trebuchet MS", Arial, sans-serif; font-size: 10px} +.pviimenudiv p {font-family: "Trebuchet MS", Arial, sans-serif; font-size: 10px; margin-top: 12px; margin-bottom: 6px} +.pviimenudiv b {font-family: Verdana, Arial, Helvetica, sans-serif; font-style: normal; color: #666666} +.pviimenudiv a:link {color: #333333; text-decoration: underline} +.pviimenudiv a:visited {color: #0066FF; text-decoration: underline} +.pviimenudiv a:hover {color: red; text-decoration: underline} +.pviimenudiv a:active {color: #0066FF; text-decoration: underline} \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/css/webgoat.css b/ webgoat/main/project/JavaSource/WebContent/css/webgoat.css new file mode 100644 index 000000000..1b2127b2d --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/css/webgoat.css @@ -0,0 +1,274 @@ +body{ + min-width: 800px; + font-family: Arial,sans-serif; + color: #333333; + line-height: 1.166; + margin: 0px; + padding: 0px; +} + +a:link, a:visited, a:hover { + color: #666666; + text-decoration: none; +} + +a:hover { + text-decoration: underline; + color: red; +} + +h1, h2, h3, h4, h5, h6 { + font-family: Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +h1{ + font-family: Verdana,Arial,sans-serif; + font-size: 120%; + color: #333333; +} + +h2{ + font-size: 114%; + color: #333333; +} + +h3{ + font-size: 100%; + color: #334d55; +} + +h4{ + font-size: 100%; + font-weight: normal; + color: #333333; +} + +h5{ + font-size: 100%; + color: #334d55; +} + +ul{ + list-style-type: square; +} + +ul ul{ + list-style-type: disc; +} + +ul ul ul{ + list-style-type: none; +} + +#navBar{ + margin: 0 79% 0 0; + padding: 0px; + background-color: #999999; +} + +#twoCol{ + margin: 0; + padding-left: 13px; +} + +#siteName{ + margin: 0px; + padding: 0px 0px 10px 10px; +} + +#lessonName{ + padding: 5px 0px 10px 10px; +} + +#globalNav{ + color: #cccccc; + padding: 0px 10px; + white-space: nowrap; +} + +#globalNav img{ + display: block; +} + +#globalNav a { + font-size: 10px; + padding: 0px 4px 0px 0px; +} + +.lessonContent{ + padding: 10px 10px 10px 10px; + font-size: 10px; +} + +.lessonText h3{ + padding: 30px 0px 5px 0px; + text-align: center; +} + +.lessonText img{ + float: left; + padding: 0px 10px 0px 0px; + margin: 0 5px 5px 0; +} + +#bottom{ + color: #999999; + clear: both; + font-size: 10px; + padding-top: 5px; +} + +#navBar ul a:link, #navBar ul a:visited {} + +#navBar ul { + list-style: none; + margin: 0; + padding: 0; +} + +/* hack to fix IE/Win's broken rendering of block-level anchors in lists */ +#navBar li {} + +/* fix for browsers that don't need the hack */ +html>body #navBar li {} + +#top{ + height:136px; + background-image: url(../images/header/header.jpg); + width: 800px; +} + +#top_challenge{ + height:136px; + width: 800px; +} + +#topLinks{ + position: relative; + margin: 0px; + padding: 0px; + font-size: small; +} + +#topLinks h3{ + padding: 10px 0px 2px 10px; +} + +#topLinks a:link{ + padding: 2px 0px 2px 10px; + width: 100%;voice-family: "\"}\""; + voice-family:inherit; + width: auto; +} + +#topLinks a:visited{ + border-top: 1px solid #cccccc; + padding: 2px 0px 2px 10px; +} + +#topLinks a:hover{ + background-color: #FFFFFF; + padding: 5px 2px 2px 10px; +} + +#menuSpacer { + float: left; + width: 225px; +} + +#lessonArea { + float: right; + width: 540px; + height: 100%; + padding: 10px; +} + +#wrap { + width: 800px; + word-wrap:break-word; /* Fixes IE wrapping issue */ +} + +#topRight { + position:absolute; + left:715px; + top:0px; + width:75px; + height:23px; + z-index:3; + float: right; +} + +#topRightInner { + position:absolute; + left:450px; + top:10px; + width:300px; + height:23px; + z-index:4; + float: right; +} + +.info { + color: red; + font-weight: bold; +} + +#reset { + text-align: right; + font-weight: bold; + margin-bottom: 10px; +} + +#hint{} +#parameter{} +#cookie{} +#message{ + margin-bottom: 20px; + margin-top: 10px; +} + +#lessonPlans { + border: 1px solid #000000; + background-color: #FFFFFF; + margin: 15px; + padding: 25px; + padding-bottom: 75px; +} + +#credits { + float: right; +} + +#start { + height: 300px; + width: 700px; + padding: 10px 50px 10px 50px; + font-size: 12px; +} +#warning { + border: 1px solid #666666; + padding: 10px; + font-size: 10px; + color: #FF3300; + width: 600px; + margin-left: 100px; + margin-right: 100px; +} +#team { + width: 580px; + margin-right: 50px; + margin-left: 50px; + padding-top: 5px; + padding-right: 10px; + padding-bottom: 5px; + padding-left: 10px; +} +.style1 { + font-size: 10px; + font-weight: bold; +} +.style2 { + font-size: 10px; +} \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/css/webgoat_challenge.css b/ webgoat/main/project/JavaSource/WebContent/css/webgoat_challenge.css new file mode 100644 index 000000000..b72336e5a --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/css/webgoat_challenge.css @@ -0,0 +1,42 @@ +#bottom_ch{ + color: #999999; + clear: both; + font-size: 10px; + padding-top: 5px; +} + +#top_ch{ + height:86px; + width: 500px; +} + +#wrap_ch { + width: 500px; +} + +#credits_ch { + float: right; +} + +#start_ch { + height: 300px; + padding: 10px 50px 10px 50px; + font-size: 12px; +} +#warning_ch { + border: 1px solid #666666; + padding: 10px; + font-size: 10px; + color: #FF3300; + width: 400px; + margin-left: 50px; +} +#team_ch { +} +.style1_ch { + font-size: 10px; + font-weight: bold; +} +.style2_ch { + font-size: 10px; +} diff --git a/ webgoat/main/project/JavaSource/WebContent/database/database.prp b/ webgoat/main/project/JavaSource/WebContent/database/database.prp new file mode 100644 index 000000000..70115d276 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/database/database.prp @@ -0,0 +1,365 @@ +!--------------------------------------------------------------------- +! +! BASIC PROPERTIES +! +!--------------------------------------------------------------------- + +! +! Path where index tables are held. Can be absolute or relative +! to the properties file. Defaults to tablePath. +! +indexPath=./indexes +! +! Path where system tables are held. Can be absolute or relative to +! the properties file. Defaults to tablePath. +! +systemPath=./system +! +! Path where database tables are held. Can be absolute or relative +! to the properties file. Defaults to "current" directory. +! +tablePath=./tables +! +! Path where results set tables are held. Can be absolute or relative +! to the properties file. Defaults to tablePath. +! +tmpPath=./tmp +! +! Non-zero means paths are relative to the properties file. +! Default is absolute paths for files. +! +relativeToProperties=1 +! +! Alternative partitions can be defined so that tables can be placed +! in multiple locations. Each partition is numbered: 1, 2, 3,... Tables +! can be created on partitions using the syntax +! +! CREATE TABLE ON PARTITION ... +! +! The partition count has to be supplied. +! +!partitionCount=2 +! +! The locations of each partition must be supplied. These are always +! absolute path names. +! +!partition1=d:/petes +!partition2=c:/temp + + +!--------------------------------------------------------------------- +! +! TUNING PROPERTIES +! +!--------------------------------------------------------------------- + +! +! The amount of each column to cache, expressed either as an absolute +! number of rows or as a percentage figure. Defaults to 256 or 10 respectively. +! +! This value applies only when tables are first created. It has no effect +! when a table is being re-opened. +! +cacheAmount=512 +! +! CACHE_ROWS Must be one of CACHE_ROWS or CACHE_PERCENT. Determines whether +! to cache columns in tables based on an absolute number of rows, or the +! percentage number of rows in the table. +! +! This value applies only when tables are first created. It has no effect +! when a table is being re-opened. +! +cacheCondition=CACHE_ROWS +! +! The amount of the system tables to be cached. Defaults to 100. +! +! This value applies only when tables are first created. It has no effect +! when a table is being re-opened. +! +!systemCacheSize=10 +! +! Similar to cacheCondition, but applies only to the system tables. +! +! This value applies only when tables are first created. It has no effect +! when a table is being re-opened. +! +!systemCacheCondition=CACHE_ROWS +! +! The percentage cache hit improvement required in order to move the +! cache to a new location in a column. +! +! (Currently not implemented). +! +cacheResetPercent=10 +! +! Non-zero means that database changes do not get written to the +! database immediately. See tuning.html. +! +fastUpdate=0 +! +! Percentage of free space in an index that must be present before +! the index reorganises itself. High values means frequent index +! reorganisation. Low values means slow index inserts. +! +indexLoad=5 +! +! The number of cache misses to include in calculations of the next +! base for the cache. +! +! (Currently not implemented). +! +missesInCacheStats=100 +! +! Non-zero means that results sets get instantiated on disk. By default +! InstantDB holds results sets emtirely in memory (apart from Binary +! columns). For large results sets this can be a problem. This property +! forces all results sets to be held on disk. +! +resultsOnDisk=0 +! +! Similar to cacheCondition but applies only to disk based +! results sets. Default is CACHE_ROWS. +! +resultsSetCache=CACHE_ROWS +! +! Similar to cacheAmount but applies only to disk based +! results sets. Default is 100. +! +resultsSetCacheAmount=100 +! +! Number of rows to read into the disk read ahead buffer. +! Recommended to be set somewhere around 128 to 256. +! Default is 20. +! +rowCacheSize=128 +! +! The read ahead buffer is effective at speeding up full +! table scans. However for indexed lookups or multiple +! simultaneous scans it is better to read a single row at +! a time. Each table holds a small number of single row +! buffers to improve such operations. Default is 8. +! +!singleRowCount=4 +! +! Sometimes the look ahead buffer can be held by a single +! thread even though it is not retrieveing many values from it. +! If too many lookups retrieve data from the single row +! buffers then it is better to flush the look ahead buffer and +! make it available for re-use. Default is 128. +! +!flushAfterCacheMisses=64 +! +! Number of rows to read ahead for system tables. By default +! system tables cache everything, so it is wasteful to have large +! read ahead buffers since they will very rarely be used. This +! allows the size of the system read ahead buffers to be reduced +! if necessary. Defaults to rowCacheSize. +! +!systemRows=20 +! +! The control column in all tables normally has a large cache +! since this speeds up all operation on that table. This can be +! varied to either improve performance or to reduce space. +! default is 8192. +! +! This value applies only when tables are first created. It has no effect +! when a table is being re-opened. +! +!controlColCacheSize=512 +! +! By default, InstantDB only does a cursory search for deleted rows during +! UPDATE statements. Setting searchDeletes=1 causes more detailed searches +! for deleted rows. This slows down UPDATE executions, but reults in more +! compact tables. Default is 0. +! +searchDeletes=0 +! +! The interval, in milliseconds, between checks for statement execution +! timeouts. Default is 5000. +! +!timerCheck=5000 +! +! The number of statements between checks on available memory. If set +! to 100 (say), then every 100 statements, InstantDB will check to +! see how much memory is still free. If too little is avilable (see +! below) then java.lang.System.gc() is called. +! +! If set to zero (the default) then no memory checking takes place. +! +!garbageCollectStatements=100 +! +! If InstantDB is performing period memory checks (see above) then +! this is the value in percent of available memory that must be +! used before System.gc() gets called. +! +!garbageCollectPercent=70 + +!--------------------------------------------------------------------- +! +! LOGGING AND DEBUGGING PROPERTIES +! +!--------------------------------------------------------------------- + +! +! Non-zero means include SQL statements in the export file. +! +exportSQL=0 +! +! Non-zero means trace output also directed to console. +! Defaults to 0. +! +traceConsole=1 +! +! Relative or absolute path where exporting and tracing goes. +! +! NOTE - A relative path is relative to the current Java +! runtime directory. It is *not* relative to this properties +! file. This is regardless of the relativeToProperties +! setting above. +! +traceFile=./trace.log +! +! Bitmap of various items that can be traced. See debug.html. +! Defaults to 0. +! +traceLevel=2 + +!--------------------------------------------------------------------- +! +! TRANSACTION AND RECOVERY PROPERTIES +! +!--------------------------------------------------------------------- + +! +! 0 means do not perform recovery on startup. +! 1 means perform automatic recovery +! 2 (default) means prompt the user using standard in +! +recoveryPolicy=1 +! +! Sets the level of transaction journalling. See trans.html. +! Defaults to 1. +! +! 0 - No journalling takes place. +! 1 - Normal journalling (default). +! 2 - Full journalling. +! +transLevel=1 +! +! When doing an import, defines the number of rows imported +! before the transaction is committed. Recommended value 8192. +! defaults to 100. +! +transImports=100 +! +! Sets the default transaction isolation level. This is a complex +! topic, but basically, the higher the level, the more locking +! goes on. The allowed values are: +! +! TRANSACTION_READ_UNCOMMITTED = 1 +! TRANSACTION_READ_COMMITTED = 2 +! TRANSACTION_REPEATABLE_READ = 4 +! TRANSACTION_SERIALIZABLE = 8 (default) +! +! SERIALIZABLE means that InstantDB takes exclusive access to all +! tables in a transaction until the transaction completes. Even if +! the transaction only performs reads. +! +! REPEATABLE_READ transactions takes read locks for SELECTs and +! write locks for everything else. All locks released on transaction +! completion. +! +! READ_COMMITTED transactions are the same as REPEATABLE_READ +! except that read locks get freed on statement completion. +! +! READ_UNCOMMITTED transactions do not take read locks. A result +! set can include data being modified by another transaction. +! +!defaultIsolationLevel=2 + +!--------------------------------------------------------------------- +! +! DATE, TIME AND CURRENCY PROPERTIES +! +!--------------------------------------------------------------------- + +! +! Number of digits after decimal point in currency outputs. Defaults to 2. +! +currencyDecimal=2 +! +! Currency symbol used in currency outputs. Defaults to $. +! +currencySymbol=$ +! +! Default format for date columns. Defaults to "yyyy-mm-dd". +! +!dateFormat=yyyy-mm-dd +! +! Default format for timestamp columns. Defaults to "yyyy-mm-dd hh:nn:ss.lll". +! +!dateTimeFormat=yyyy-mm-dd hh:nn:ss.lll +! +! Default format for time columns. Defaults to "hh:nn:ss.lll". +! +!timeFormat=hh:nn:ss.lll +! +! If set, then all two digit dates less than its value are interpreted +! as 21st century dates. +! +!milleniumBoundary=50 +! +! Set to 1 causes the date string "now" to store a full timestamp. +! Default is to store only the date for fields with now hour in the +! format string. +! +nowMeansTime=0 + +!--------------------------------------------------------------------- +! +! STRING HANDLING PROPERTIES +! +!--------------------------------------------------------------------- + +! +! If set to 1 then String hashes use the JDK Object.hashCode() function. +! By default, uses InstantDB's String hashing. +! +altStringHashing=0 +! +! Set to 1 to cause LIKE clauses to always perform case insensitive +! comparisons. +! +likeIgnoreCase=0 +! +! Same as SET LITERAL STRICT_ON. Prevents string literals being interpreted +! as column names or numbers. Default is 0. +! +strictLiterals=0 +! +! Set this value to 1 (one) if you would like PreparedStatement.setString() +! to ignore "\" (backslash) characters when proceesing string constants. +! When set, InstantDB will not attempt to interpret \ as the start of an +! escape sequence. Default is 0. +! +!prepareIgnoresEscapes=1 + +!--------------------------------------------------------------------- +! +! MISCELLANEOUS PROPERTIES +! +!--------------------------------------------------------------------- + +! +! Allows selected InstantDB keywords to be un-reserved. +! e.g. ignoreKeywords=url,quote would allow the keywords +! url and quote to be used as table or column names. +! +! This faciliy is provided for compatatbility reasons only. +! It's use is not recommended AND IS NOT SUPPORTED. +! +!ignoreKeywords +! +! Non-zero means database is opened in read only mode. +! +readOnly=0 diff --git a/ webgoat/main/project/JavaSource/WebContent/database/webgoat.mdb b/ webgoat/main/project/JavaSource/WebContent/database/webgoat.mdb new file mode 100644 index 000000000..35f49ec88 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/database/webgoat.mdb differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/catStarted.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/catStarted.jpg new file mode 100644 index 000000000..447e39d5d Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/catStarted.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/cookies.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/cookies.jpg new file mode 100644 index 000000000..ce23a1af0 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/cookies.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/cookiesOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/cookiesOver.jpg new file mode 100644 index 000000000..6a6f918e7 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/cookiesOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/help.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/help.jpg new file mode 100644 index 000000000..3d409d1fa Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/help.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/helpOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/helpOver.jpg new file mode 100644 index 000000000..f5a6759dc Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/helpOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/hint.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hint.jpg new file mode 100644 index 000000000..ab14f704b Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hint.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintLeft.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintLeft.jpg new file mode 100644 index 000000000..11c9672e3 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintLeft.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintLeftOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintLeftOver.jpg new file mode 100644 index 000000000..b2ffde62a Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintLeftOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintOver.jpg new file mode 100644 index 000000000..add0b55a2 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintRight.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintRight.jpg new file mode 100644 index 000000000..6ad8a308f Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintRight.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintRightOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintRightOver.jpg new file mode 100644 index 000000000..0d3e6b084 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/hintRightOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/html.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/html.jpg new file mode 100644 index 000000000..6a35166ca Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/html.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/htmlOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/htmlOver.jpg new file mode 100644 index 000000000..f02407eb8 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/htmlOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/java.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/java.jpg new file mode 100644 index 000000000..c150194fd Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/java.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/javaOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/javaOver.jpg new file mode 100644 index 000000000..f1c62fb4a Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/javaOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/lessonComplete.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/lessonComplete.jpg new file mode 100644 index 000000000..e46ad6e1f Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/lessonComplete.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/logout.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/logout.jpg new file mode 100644 index 000000000..c22f7acce Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/logout.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/logoutOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/logoutOver.jpg new file mode 100644 index 000000000..bef8a9133 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/logoutOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/params.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/params.jpg new file mode 100644 index 000000000..55a43fa6f Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/params.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/paramsOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/paramsOver.jpg new file mode 100644 index 000000000..c51a7b5e9 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/paramsOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/plans.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/plans.jpg new file mode 100644 index 000000000..1640b43e1 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/plans.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/buttons/plansOver.jpg b/ webgoat/main/project/JavaSource/WebContent/images/buttons/plansOver.jpg new file mode 100644 index 000000000..1c8c07bdc Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/buttons/plansOver.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/header/header.jpg b/ webgoat/main/project/JavaSource/WebContent/images/header/header.jpg new file mode 100644 index 000000000..84259aba4 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/header/header.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/header/header_ASP.jpg b/ webgoat/main/project/JavaSource/WebContent/images/header/header_ASP.jpg new file mode 100644 index 000000000..0bf017439 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/header/header_ASP.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/header/header_CShrp.jpg b/ webgoat/main/project/JavaSource/WebContent/images/header/header_CShrp.jpg new file mode 100644 index 000000000..81b610ecf Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/header/header_CShrp.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/header/header_coldFusion.jpg b/ webgoat/main/project/JavaSource/WebContent/images/header/header_coldFusion.jpg new file mode 100644 index 000000000..ecb3e78ff Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/header/header_coldFusion.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/header/header_dotNet.jpg b/ webgoat/main/project/JavaSource/WebContent/images/header/header_dotNet.jpg new file mode 100644 index 000000000..30f59ffed Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/header/header_dotNet.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/icons/rightArrow.jpg b/ webgoat/main/project/JavaSource/WebContent/images/icons/rightArrow.jpg new file mode 100644 index 000000000..b89abbb19 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/icons/rightArrow.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/logos/%owasp.jpg b/ webgoat/main/project/JavaSource/WebContent/images/logos/%owasp.jpg new file mode 100644 index 000000000..cb4139fa3 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/logos/%owasp.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/logos/aspect.jpg b/ webgoat/main/project/JavaSource/WebContent/images/logos/aspect.jpg new file mode 100644 index 000000000..8c6c8d98a Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/logos/aspect.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/logos/owasp.jpg b/ webgoat/main/project/JavaSource/WebContent/images/logos/owasp.jpg new file mode 100644 index 000000000..d4a0f5888 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/logos/owasp.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/logos/parasoft.jpg b/ webgoat/main/project/JavaSource/WebContent/images/logos/parasoft.jpg new file mode 100644 index 000000000..2f13e5e05 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/logos/parasoft.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/images/menu_images/1x1.gif b/ webgoat/main/project/JavaSource/WebContent/images/menu_images/1x1.gif new file mode 100644 index 000000000..c95709f1a Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/images/menu_images/1x1.gif differ diff --git a/ webgoat/main/project/JavaSource/WebContent/javascript/javascript.js b/ webgoat/main/project/JavaSource/WebContent/javascript/javascript.js new file mode 100644 index 000000000..d92b9b3a1 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/javascript/javascript.js @@ -0,0 +1,6 @@ +function MM_reloadPage(init) { //reloads the window if Nav4 resized + if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { + document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} + else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); +} +MM_reloadPage(true); diff --git a/ webgoat/main/project/JavaSource/WebContent/javascript/lessonNav.js b/ webgoat/main/project/JavaSource/WebContent/javascript/lessonNav.js new file mode 100644 index 000000000..95f4e0e3c --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/javascript/lessonNav.js @@ -0,0 +1,59 @@ +// Logout and Help Swap Image + +function MM_reloadPage(init) { //reloads the window if Nav4 resized + if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { + document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} + else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); +} +MM_reloadPage(true); + +function MM_swapImgRestore() { //v3.0 + var i,x,a=document.MM_sr; for(i=0;a&&i 2) { + if ((img = MM_findObj(args[2])) != null && !img.MM_init) { + img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src; + if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array(); + nbArr[nbArr.length] = img; + for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) { + if (!img.MM_up) img.MM_up = img.src; + img.src = img.MM_dn = args[i+1]; + nbArr[nbArr.length] = img; + } } + } else if (event == "over") { + document.MM_nbOver = nbArr = new Array(); + for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) { + if (!img.MM_up) img.MM_up = img.src; + img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up); + nbArr[nbArr.length] = img; + } + } else if (event == "out" ) { + for (i=0; i < document.MM_nbOver.length; i++) { + img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; } + } else if (event == "down") { + nbArr = document[grpName]; + if (nbArr) + for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; } + document[grpName] = nbArr = new Array(); + for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) { + if (!img.MM_up) img.MM_up = img.src; + img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up; + nbArr[nbArr.length] = img; + } } +} \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/javascript/makeWindow.js b/ webgoat/main/project/JavaSource/WebContent/javascript/makeWindow.js new file mode 100644 index 000000000..ced2494a6 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/javascript/makeWindow.js @@ -0,0 +1,7 @@ + +function makeWindow(url, windowName) +{ + day = new Date(); + id = day.getTime(); + eval("page" + id + " = window.open(url, '" + id + "', 'toolbar=0,location=0,scrollbars=1,statusbar=0,menubar=0,resizable=1,width=600,height=500');"); +} \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/javascript/menu_system.js b/ webgoat/main/project/JavaSource/WebContent/javascript/menu_system.js new file mode 100644 index 000000000..a97a659bf --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/javascript/menu_system.js @@ -0,0 +1,140 @@ +function MM_findObj(n, d) { + var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { + d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} + if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i4 || navigator.userAgent.indexOf("MSIE")>-1)&& navigator.userAgent.indexOf("Opera")==-1){pa="px";} + if(navigator.userAgent.indexOf("Opera")>-1){P7OperaW=window.innerWidth;P7OperaH=window.innerHeight;} + if(!document.mc) { m3=new Array(); + m=new Array();document.mc=true;ms=new Array();document.imswap=new Array();document.imswapo=new Array(); + m1=new Array();m2=new Array();mprop=new Object();mprop.offset=args[0];mprop.rate=args[1]; + mprop.delay=args[2];mprop.bottom=args[3]; + if(document.layers){mprop.pageh = document.height;}} + for(var x=4;x0){d.left=(lf+pa);th+=getHW('height',m[j-1]);d.top=(th+pa);} + if((s=MM_findObj(g.sub)) !=null){m2[j]=s;ww=getHW('width',g.sub); + kx=lf-ww-30;dd=(document.layers)?s:s.style; + dd.left=(kx+pa);dd.top=(th+pa);ms[j]=th;dd.visibility="visible";s.open=false;s.waiting=false;}}} + if((g=MM_findObj(mprop.bottom)) !=null){d=(document.layers)?g:g.style; + d.left=(lf+parseInt(args[0])+pa);th+=getHW('height',m[m.length-1]);d.top=(th+pa);} +} + +function BM1(el,x,y,a,b,c,s) { + var g,elo=el,f="",m=false,d="";x=parseInt(x);y=parseInt(y); + var t = 'g.BM = setTimeout("BM1(\''+elo+'\','; + if ((g=MM_findObj(el))!=null) {d=(document.layers)?g:g.style;}else{return;} + var xx=(parseInt(d.left))?parseInt(d.left):0; + var yy=(parseInt(d.top))?parseInt(d.top):0; + var i=parseInt(a); + if (eval(g.moved)){clearTimeout(g.BM);} + if (xxx){xx=x;}} + if (xx>x){xx-=i;m=true;if(xxy){yy=y;}} + if (yy>y){yy-=i;m=true;if(yy4 || navigator.userAgent.indexOf("MSIE")>-1)&& navigator.userAgent.indexOf("Opera")==-1){ + xx+="px";yy+="px";}d.left=xx;d.top=yy;g.moved=true;eval(t+x+','+y+','+a+','+b+','+c+',0)",'+b+')'); + }else {g.moved=false;wait(elo);} +} + +function wait(a) { + var ma,mb;if((mb=MM_findObj(a)) !=null){ + if(!mb.waiting || mb.waiting=="none"){return;} + ma=mb.waiting;mb.waiting=false;eval(ma);} +} + +function trigMenuMagic1(a,sw) { + var x,g,gg,d,dd,w,lp,tp,im,im2,ts,nu,e,pa=0;if(!document.mc)return; + if((parseInt(navigator.appVersion)>4 || navigator.userAgent.indexOf("MSIE")>-1)&& navigator.userAgent.indexOf("Opera")==-1){pa="px";} + if(navigator.userAgent.indexOf("Opera")>-1){if( P7OperaW!=window.innerWidth || P7OperaH!=window.innerHeight)setMenuMagic1();} + var ofs=parseInt(mprop.offset),trt = parseInt(mprop.rate); + var tdy=parseInt(mprop.delay),tsb,tlf,tst;for(x=0;xtcd){tdl=m[j];tcd=df;}th+=getHW('height',m[j]); + if(x==j && tst=="closed"){tsb=th;if(m3[j]!=1){th+=getHW('height',d.sub);}}ms[j]=th;} + if(tst=="closed"){d=m1[x];dd=(document.layers)?d:d.style; + g=m2[x];gg=(document.layers)?g:g.style;lp=tlf+ofs; + gg.top=(tsb+pa);ms[x]=tsb;e=MM_findObj(d.imname);if(parseInt(sw)==1){e.src=ts;} + g.open=true;if(m3[x]!=1){gg.visibility="visible";var r;r=MM_findObj(tdl); + r.waiting="BM1('"+d.sub+"',"+lp+","+tsb+","+20000+","+tdy+",0,0)" ;} + }else{d=m1[m1.length-1];d.waiting="none";} + for(j=0;j1){pr=ur.substring(x+1,ur.length).split("&"); + for(i=0;i0){if(unescape(nv[0])==param){ + mn="menu"+unescape(nv[1]); + eval("trigMenuMagic1('"+mn+"',"+opt+")");}}}} + } + + document.mm1Q=true; \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/javascript/toggle.js b/ webgoat/main/project/JavaSource/WebContent/javascript/toggle.js new file mode 100644 index 000000000..82650a3e4 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/javascript/toggle.js @@ -0,0 +1,40 @@ +var iframe; + +function initIframe() { + var body; + var element; + + body = document.getElementsByTagName('body')[0]; + element = document.getElementById('lessonPlans'); + + iframe = document.createElement('iframe'); + iframe.style.position = "absolute"; + iframe.style.visibility = "hidden"; + body.appendChild(iframe); + + // Configure the iFrame to border the lessonPlan + document.getElementsByTagName('body')[0].appendChild(element); + iframe.style.height = element.offsetHeight; + iframe.style.left = '275px'; + iframe.style.top = '145px'; + iframe.style.width = '474px'; +} + + +function toggle(id) { + element = document.getElementById(id); + + if (!element) return; + + if (element.style.visibility=='visible' || element.style.visibility=='') { + iframe.style.visibility = 'hidden'; + element.style.visibility = 'hidden'; + element.style.overflow = 'hidden'; + element.style.height='1'; + } else { + iframe.style.visibility= 'visible'; + element.style.visibility = 'visible'; + element.style.overflow = 'visible'; + element.style.height=''; + } + } \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/AccessControlMatrix.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/AccessControlMatrix.html new file mode 100644 index 000000000..eabc52547 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/AccessControlMatrix.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: Using an Access Control Matrix

+
+

Concept / Topic To Teach:

+ +In role-based access control scheme, a role represents a set of access permissions and privileges. A user can be assigned one or more roles. A role-based access control normally consists of two parts: role permission management and role assignment. A broken role-based access control scheme might allow a user to perform accesses that are not allowed by his/her assigned roles, or somehow obtain unauthorized roles. +

General Goal(s):

+Each user is a member of a role that is allowed to access only certain resources. Your goal is to explore the access control rules that govern this site. Only the [Admin] group should have access to the 'Account Manager' resource. + diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BasicAuthentication.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BasicAuthentication.html new file mode 100644 index 000000000..a656eefb5 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BasicAuthentication.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: Basic Authentication

+
+

Concept / Topic To Teach:

+ +Basic Authentication is used to protect server side resources. The web server will send a 401 authentication request with the response for the requested resource. The client side browser will then prompt the user for a user name and password using a browser supplied dialog box. The browser will base64 encode the user name and password and sendthose credentials back to the web server. The web server will then validate the credentials and return the requested resource if the credentials are correct. These credentials are automatically resent for each page protected with this mechanism without requiring the user to enter their credentials again.
+

General Goal(s):

+For this lesson, your goal is to understand Basic Authentication and answer the questions below. + diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BlindSqlInjection.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BlindSqlInjection.html new file mode 100644 index 000000000..8284e4dbc --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BlindSqlInjection.html @@ -0,0 +1,15 @@ +
+

Lesson Plan Title: How to Perform Blind SQL Injection

+
+ +

Concept / Topic To Teach:

+ +SQL injection attacks represent a serious threat to any database-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks an incredible number of systems on the internet are susceptible to this form of attack. +
+Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can be almost totally prevented. This lesson will show the student several examples of SQL injection.
+
+It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queiries.
+ + +

General Goal(s):

+The form below allows a user to enter an account number and determine if it is valid or not. Use this form to develop a true / false test check other entries in the database.

Reference Ascii Values: 'A' = 65 'Z' = 90 'a' = 97 'z' = 122

The goal is to find the value of the first_name in table user_data for userid 15613. Put that name in the form to pass the lesson. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BufferOverflow.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BufferOverflow.html new file mode 100644 index 000000000..b25b4f944 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/BufferOverflow.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Exploit Buffer Overflows

+
+ +

Concept / Topic To Teach:

+How to Exploit Buffer Overflows. +

General Goal(s):

+This lesson needs a creator! + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ChallengeScreen.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ChallengeScreen.html new file mode 100644 index 000000000..b3d9b3321 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ChallengeScreen.html @@ -0,0 +1,7 @@ +
+

Lesson Plan Title: Putting it all together

+

+

Concept / Topic To Teach:

+This lesson creates a challenge that will help the student apply all that they have learned.
+General Goal(s):
+Display the secret message. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/CommandInjection.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/CommandInjection.html new file mode 100644 index 000000000..5fbbb2d58 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/CommandInjection.html @@ -0,0 +1,11 @@ +
+

Lesson Plan Title: How to Perform Command Injection

+
+

Concept / Topic To Teach:

+ +Command  injection attacks represent a serious threat to any parameter-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks an incredible number of systems on the internet are susceptible to this form of attack.
+Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can be almost totally prevented. This lesson will show the student several examples of parameter injection.
+It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queries.
+ +

General Goal(s):

+The user should be able to execute any command on the hosting OS. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/CrossSiteScripting.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/CrossSiteScripting.html new file mode 100644 index 000000000..760f2eb93 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/CrossSiteScripting.html @@ -0,0 +1,11 @@ +
+

Lesson Plan Title: How to Perform Cross Site Scripting (XSS)

+
+

Concept / Topic To Teach:

+ +It is always a good practice to scrub all inputs, especially those inputs that will later be used as parameters to OS commands, scripts, and database queries. It is particularly important for content that will be permanently stored somewhere. Users should not be able to create message content that could cause another user to load an undesireable page or undesireable content when the user's message is retrieved.
+XSS can also occur when unvalidated user input is used in an HTTP response. In a reflected XSS attack, an attacker can craft a URL with the attack script and post it to another website, email it, or otherwise get a victim to click on it. + +

General Goal(s):

+For this exercise, you will perform stored and reflected XSS attacks. You will also implement code changes in the web application to defeat these attacks. +
diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/DOS_Login.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/DOS_Login.html new file mode 100644 index 000000000..941a89b49 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/DOS_Login.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: Denial of Service from Multiple Logins

+
+

Concept / Topic To Teach:

+ +Denial of service attacks are a major issue in web applications. If the end user cannot conduct business or perform the service offered by the web application, then both time and money is wasted. +

General Goal(s):

+This site allows a user to login multiple times. This site has a database connection pool that allows 2 connections. You must obtain a list of valid users and create a total of 3 logins. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/Encoding.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/Encoding.html new file mode 100644 index 000000000..fcba2ddac --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/Encoding.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Peform Basic Encoding

+
+

Concept / Topic To Teach:

+ +Different encoding schemes can be used in web applications for different reasons. + +

General Goal(s):

+This lesson will familiarize the user with different encoding schemes. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/FailOpenAuthentication.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/FailOpenAuthentication.html new file mode 100644 index 000000000..27a82e2cf --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/FailOpenAuthentication.html @@ -0,0 +1,10 @@ +
+

Lesson Plan Title: How to Bypass Fail Open Authentication

+
+ +

Concept / Topic To Teach:

+ + This lesson presents the basics for understanding the "fail open" condition regarding authentication. The security term, “fail open” describes a behavior of a verification mechanism. This is when an error (i.e. unexpected exception) occurs during a verification method causing that method to evaluate to true. This is especially dangerous during login.
+ +

General Goal(s):

+ The user should be able to bypass the authentication check. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ForcedBrowsing.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ForcedBrowsing.html new file mode 100644 index 000000000..134656b75 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ForcedBrowsing.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Exploit Forced Browsing

+
+ +

Concept / Topic To Teach:

+How to Exploit Forced Browsing +

General Goal(s):

+This lesson needs a creator! + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ForgotPassword.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ForgotPassword.html new file mode 100644 index 000000000..2e47124e2 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ForgotPassword.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Exploit the Forgot Password Page

+
+

Concept / Topic To Teach:

+ +Web applications frequently provide their users the ability to retrieve a forgotten password. Unfortunately, most web applications fail to implement the mechanism properly. The information required to verify the integrity of the user is often overly simplistic. +

General Goal(s):

+Users can retrieve their password if they can answer the secret question properly. There is no lock-out mechanism on this 'Forgot Password' page. Your username is 'webgoat' and your favorite color is 'red'. The goal is to retrieve the password of another user. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HiddenFieldTampering.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HiddenFieldTampering.html new file mode 100644 index 000000000..630712226 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HiddenFieldTampering.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Exploit Hidden Fields

+
+

Concept / Topic To Teach:

+ +Developers will use hidden fields for tracking, login, pricing, etc.. information on a loaded page. While this is a convienent and easy mechanism for the developer, they often don't validate the information that is received from the hidden field. This lesson will teach the attacker to find and modify hidden fields to obtain a product for a price other than the price specified
+ +

General Goal(s):

+The user should be able to exploit a hidden field to obtain a product at an incorrect price. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HtmlClues.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HtmlClues.html new file mode 100644 index 000000000..4e1c619c9 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HtmlClues.html @@ -0,0 +1,11 @@ +
+

Lesson Plan Title: How to Discover Clues in the HTML

+
+ +

Concept / Topic To Teach:

+ + Developers are notorious for leaving statements like FIXME's, Code Broken, Hack, etc... inside the source code.  Review the source code for any comments denoting  passowrds, backdoors, or something doesn't work right.  + +
+

General Goal(s):

+ The user should be able to bypass the authentication check. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HttpBasics.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HttpBasics.html new file mode 100644 index 000000000..9e9bad245 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HttpBasics.html @@ -0,0 +1,27 @@ +
+

Lesson Plan Title: Http Basics

+
+ +

Concept / Topic To Teach:

+ This lesson presents the basics for understanding the transfer of data between the browser and the web application.
+
+

+How HTTP works: +

+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:
+
+ The client contacts the server and sends a document request
+
+
+
    GET /index.html?param=value HTTP/1.0
+ Next, the client sends optional header information to inform the server of its configuration and the document formats it will accept.
+
+
    User-Agent: Mozilla/4.06 Accept: image/gif,image/jpeg, */*
+After sending the request and headers, the client may send additional data. This data is mostly used by CGI programs using the POST method.
+

General Goal(s):

+ +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. +

+The user should become familiar with the features of WebGoat by manipulating the above +buttons to view hints, show the HTTP request parameters, the HTTP request cookies, and the Java source code. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HttpOnly.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HttpOnly.html new file mode 100644 index 000000000..7de425f79 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/HttpOnly.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: HttpOnly Test

+
+

Concept / Topic To Teach:

+ +To help mitigate the cross site scripting threat, Microsoft has introduced a new cookie attribute entitled 'HttpOnly.' If this flag is set, then the browser should not allow client-side script to access the cookie. Since the attribute is relatively new, several browsers neglect to handle the new attribute properly. +

General Goal(s):

+The purpose of this lesson is to test whether your browser supports the HTTPOnly cookie flag. Note the value of the unique2u cookie. If your browser supports HTTPOnly, and you enable it for a cookie, client side code should NOT be able to read OR write to that cookie, but the browser can still send its value to the server. Some browsers only prevent client side read access, but don't prevent write access. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/JavaScriptValidation.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/JavaScriptValidation.html new file mode 100644 index 000000000..738575cc8 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/JavaScriptValidation.html @@ -0,0 +1,10 @@ +
+

Lesson Plan Title: How to Bypass Client Side JavaScript Validation

+
+

Concept / Topic To Teach:

+ +Client-side validation should not be considered a secure means of validating parameters. These validation only help reduce the amount of server processing time for normal users who do not know the format of required input. Attackers can bypass these mechanisms easily in various ways. Any client-side validation should be duplicated on the server side. This will greatly reduce the likelyhood of insecure parameter values being used in the application. + +
+

General Goal(s):

+For this exercise, the web site requires that you follow certain rules when you fill out a form. The user should be able to break those rules, and send the website input that it wasn't expecting.
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/Lesson_Plan_Template.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/Lesson_Plan_Template.html new file mode 100644 index 000000000..66293a95c --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/Lesson_Plan_Template.html @@ -0,0 +1,17 @@ +
+

Lesson Plan Title:

+
+ +

Concept / Topic To Teach:

+

Standards Addressed:

+

General Goal(s):

+

Specific Objectives:

+

Required Materials:

+

Anticipatory Set (Lead-In):

+

Step-By-Step Procedures:

+

Plan For Independent Practice:

+

Closure (Reflect Anticipatory Set):

+

Assessment Based On Objectives:

+

Extensions (For Gifted Students):

+

Possible Connections To Other Subjects:

+ \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ParameterInjection.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ParameterInjection.html new file mode 100644 index 000000000..e26ee947e --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ParameterInjection.html @@ -0,0 +1,16 @@ +
+

Lesson Plan Title: How to Perform Parameter Injection

+
+ +

Concept / Topic To Teach:

+ +Parameter  injection attacks represent a serious threat to any parameter-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks an incredible number of systems on the internet are susceptible to this form of attack.
+
+ Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can be almost totally prevented. This lesson will show the student several examples of parameter injection.
+
+ It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queries.
+ +
+ +

General Goal(s):

+ The user should be able to execute any command on the hosting OS. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/PathBasedAccessControl.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/PathBasedAccessControl.html new file mode 100644 index 000000000..235bd2528 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/PathBasedAccessControl.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Bypass a Path Based Access Control Scheme

+
+

Concept / Topic To Teach:

+ +In a path based access control scheme, an attacker can traverse a path by providing relative path information. Therefore an attacker can use relative paths to access files that normally are not directly accessible by anyone, or would otherwise be denied if requested directly. + +

General Goal(s):

+The user should be able to access a file that is not in the listed directory. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ReflectedXSS.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ReflectedXSS.html new file mode 100644 index 000000000..745d3aa6d --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ReflectedXSS.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Perform Reflected Cross Site Scripting (XSS)

+
+

Concept / Topic To Teach:

+ +It is always a good practice to validate all input on the server side. XSS can occur when unvalidated user input is used in an HTTP response. In a reflected XSS attack, an attacker can craft a URL with the attack script and post it to another website, email it, or otherwise get a victim to click on it. + +

General Goal(s):

+For this exercise, your mission is to come up with some input containing a script. You have to try to get this page to reflect that input back to your browser, which will execute the script and do something bad. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/RemoteAdminFlaw.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/RemoteAdminFlaw.html new file mode 100644 index 000000000..207248adf --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/RemoteAdminFlaw.html @@ -0,0 +1,11 @@ +
+

Lesson Plan Title: How to Force Browser Web Resources

+
+

Concept / Topic To Teach:

+Applications will often have an adminstrative interface that allows privileged users access to functionality that normal users shouldn't see. The application server will often have an admin interface as well. +

Standards Addressed:

+

General Goal(s): + +Try to access the administrative interface for WebGoat. You may also try to access the administrative interface for Tomcat. The Tomcat admin interface can be accessed via a URL (/admin) and will not count towards the completion of this lesson. + +

\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/RoleBasedAccessControl.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/RoleBasedAccessControl.html new file mode 100644 index 000000000..132dc235f --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/RoleBasedAccessControl.html @@ -0,0 +1,15 @@ +
+

Lesson Plan Title: Role Based Access Control

+
+

Concept / Topic To Teach:

+ +In role-based access control scheme, a role represents a set of access permissions and privileges. A user can be assigned one or more roles. A role-based access control normally consists of two parts: role permission management and role assignment. A broken role-based access control scheme might allow a user to perform accesses that are not allowed by his/her assigned roles, or somehow obtain unauthorized roles. + +

General Goal(s):

+Your goal is to explore the access control rules that govern this site. Each role has permission to certain resources (A-F). Each user is assigned one or more roles. Only the user with the [Admin] role should have access to the 'F' resources. In a successful attack, a user doesn't have the [Admin] role can access resource F. +

Lesson Resources:

+Org Chart +
+Access Control Matrix +
+Database Schema diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SoapRequest.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SoapRequest.html new file mode 100644 index 000000000..4daca7fda --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SoapRequest.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Create a SOAP Request

+
+

Concept / Topic To Teach:

+ +Web Services communicate through the use of SOAP requests. These requests are submitted to a web service in an attempt to execute a function listed in the web service definition language (WSDL). Lets learn something about WSDL files. Check out WebGoats web service description language (WSDL) file. +

General Goal(s):

+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. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SqlNumericInjection.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SqlNumericInjection.html new file mode 100644 index 000000000..6aae8f89d --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SqlNumericInjection.html @@ -0,0 +1,14 @@ +
+

Lesson Plan Title: How to Perform Numeric SQL Injection

+
+ +

Concept / Topic To Teach:

+ +SQL injection attacks represent a serious threat to any database-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks an incredible number of systems on the internet are susceptible to this form of attack. +
+Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can be almost totally prevented. This lesson will show the student several examples of SQL injection.
+
+It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queiries.
+

General Goal(s):

+The form below allows a user to view weather data. Try to inject an SQL string that results in all the weather data being displayed. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SqlStringInjection.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SqlStringInjection.html new file mode 100644 index 000000000..8c8f9e5b6 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/SqlStringInjection.html @@ -0,0 +1,14 @@ +
+

Lesson Plan Title: How to Perform String SQL Injection

+
+ +

Concept / Topic To Teach:

+ +SQL injection attacks represent a serious threat to any database-driven site. The methods behind an attack are easy to learn and the damage caused can range from considerable to complete system compromise. Despite these risks an incredible number of systems on the internet are susceptible to this form of attack. +
+Not only is it a threat easily instigated, it is also a threat that, with a little common-sense and forethought, can be almost totally prevented. This lesson will show the student several examples of SQL injection.
+
+It is always good practice to sanitize all input data, especially data that will used in OS command, scripts, and database queiries.
+

General Goal(s):

+The form below allows a user to view their credit card numbers. Try to inject an SQL string that results in all the credit card numbers being displayed. Try the user name of 'Smith'. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/StoredXss.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/StoredXss.html new file mode 100644 index 000000000..4160adcfd --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/StoredXss.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Perform Stored Cross Site Scripting (XSS)

+
+

Concept / Topic To Teach:

+ +It is always a good practice to scrub all inputs, especially those inputs that will later be used as parameters to OS commands, scripts, and database queries. It is particularly important for content that will be permanently stored somewhere. Users should not be able to create message content that could cause another user to load an undesireable page or undesireable content when the user's message is retrieved. + +

General Goal(s):

+The user should be able to add message content that cause another user to load an undesireable page or content. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ThreadSafetyProblem.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ThreadSafetyProblem.html new file mode 100644 index 000000000..1b01a915d --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/ThreadSafetyProblem.html @@ -0,0 +1,22 @@ + + + + + + Lesson Plan + + + +
+

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 browsers. +
+ + diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/TraceXSS.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/TraceXSS.html new file mode 100644 index 000000000..c1aaed9d3 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/TraceXSS.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Perform Cross Site Trace Attacks

+
+

Concept / Topic To Teach:

+ +It is always a good practice to scrub all inputs, especially those inputs that will later be used as parameters to OS commands, scripts, and database queries. It is particularly important for content that will be permanently stored somewhere. Users should not be able to create message content that could cause another user to load an undesireable page or undesireable content when the user's message is retrieved. +

General Goal(s):

+Tomcat is configured to support the HTTP TRACE command. Your goal is to perform a Cross Site Trace (XST) attack. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/UncheckedEmail.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/UncheckedEmail.html new file mode 100644 index 000000000..2cd2e82db --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/UncheckedEmail.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Exploit Unchecked Email

+
+

Concept / Topic To Teach:

+ +It is always a good practice to validate all inputs. Most sites allow a non-authenticated users to send email to a 'friend'. This is a great mechanisms for spammers to send out email using your corporate mail server. + +

General Goal(s):

+The user should be able to send and obnoxious email message. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WSDLScanning.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WSDLScanning.html new file mode 100644 index 000000000..df11d5a65 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WSDLScanning.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Perform WSDL Scanning

+
+

Concept / Topic To Teach:

+ +Web Services communicate through the use of SOAP requests. These requests are submitted to a web service in an attempt to execute a function listed in the web service definition language (WSDL). +

General Goal(s):

+This screen is the API for a web service. Check the WSDL for this web service and try to get some customer credit numbers. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WeakAuthenticationCookie.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WeakAuthenticationCookie.html new file mode 100644 index 000000000..1787686c4 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WeakAuthenticationCookie.html @@ -0,0 +1,10 @@ +
+

Lesson Plan Title: How to Spoof an Authentication Cookie

+
+ +

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 Ccross 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. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WeakSessionID.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WeakSessionID.html new file mode 100644 index 000000000..2ea769f51 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WeakSessionID.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Hijack a Session

+
+

Concept / Topic To Teach:

+ +Application developers who develop their own session ID frequently forget to incorporate the complexity and randomness necessary for security. If the user specific session id is not complex and random, then the application is highly susceptible to session-based brute force attacks. +

General Goal(s):

+Try to access an authenticated session belonging to someone else. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WelcomeScreeen.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WelcomeScreeen.html new file mode 100644 index 000000000..be93e40e2 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WelcomeScreeen.html @@ -0,0 +1,16 @@ +
+

Lesson Plan Title:Welcome

+
+

Concept / Topic To Teach:

+This lesson presents the basics for understanding the transfer of data between the browser and the web application. +

Standards Addressed:

+

General Goal(s):

+

Specific Objectives:

+

Required Materials:

+

Anticipatory Set (Lead-In):

+

Step-By-Step Procedures:

+

Plan For Independent Practice:

+

Closure (Reflect Anticipatory Set):

+

Assessment Based On Objectives:

+

Extensions (For Gifted Students):

+

Possible Connections To Other Subjects:

\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WsSAXInjection.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WsSAXInjection.html new file mode 100644 index 000000000..60232826e --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WsSAXInjection.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Perform Web Service SAX Injection

+
+

Concept / Topic To Teach:

+ +Web Services communicate through the use of SOAP requests. These requests are submitted to a web service in an attempt to execute a function listed in the web service definition language (WSDL). +

General Goal(s):

+Some web interfaces make use of Web Services in the background. If the frontend relies on the web service for all input validation, it may be possible to corrupt the XML that the web interface sends.
In this exercise, try to change the password for a user other than 101. + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WsSqlInjection.html b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WsSqlInjection.html new file mode 100644 index 000000000..352540f48 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_plans/WsSqlInjection.html @@ -0,0 +1,9 @@ +
+

Lesson Plan Title: How to Perform Web Service SQL Injection

+
+

Concept / Topic To Teach:

+ +Web Services communicate through the use of SOAP requests. These requests are submitted to a web service in an attempt to execute a function listed in the web service definition language (WSDL). +

General Goal(s):

+Check the web service description language (WSDL) and try to obtain multiple customer credit card numbers. You will not see the results returned to this screen. When you believe you have suceeded, refresh the page and look for the 'green star' + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_template/lessons.html b/ webgoat/main/project/JavaSource/WebContent/lesson_template/lessons.html new file mode 100644 index 000000000..2ff81d53a --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lesson_template/lessons.html @@ -0,0 +1,88 @@ + + + + + +AspectCheck Software Baseline Security Profiler - Aspect Security, Inc. + + + + + + + + + + +
+
+
+
+ + +Show Source +
+ +
+ +Show Hint +
+ + + + + +
+ + +Lesson + +
+

+ LESSON LEARNED +

+
+ + + diff --git a/ webgoat/main/project/JavaSource/WebContent/lesson_template/logo.jpg b/ webgoat/main/project/JavaSource/WebContent/lesson_template/logo.jpg new file mode 100644 index 000000000..14c4b290d Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lesson_template/logo.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/CrossSiteScripting.css b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/CrossSiteScripting.css new file mode 100644 index 000000000..fad6880ad --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/CrossSiteScripting.css @@ -0,0 +1,14 @@ +#lesson_wrapper {height: 435px;width: 500px;} +#lesson_header {background-image: url(lessons/CrossSiteScripting/images/lesson1_header.jpg);width: 490px;padding-right: 10px;padding-top: 60px;background-repeat: no-repeat;} +.lesson_workspace {background-image: url(lessons/CrossSiteScripting/images/lesson1_workspace.jpg);width: 489px;height: 325px;padding-left: 10px;padding-top: 10px;background-repeat: no-repeat;} +.lesson_text {height: 240px;width: 460px;padding-top: 5px;} +#lesson_buttons_bottom {height: 20px;width: 460px;} +#lesson_b_b_left {width: 300px;float: left;} +#lesson_b_b_right input {width: 100px;float: right;} +.lesson_title_box {height: 20px;width: 420px;padding-left: 30px;} +.lesson_workspace { } +.lesson_txt_10 {font-family: Arial, Helvetica, sans-serif;font-size: 10px;} +.lesson_text_db {color: #0066FF} +#lesson_login {background-image: url(lessons/CrossSiteScripting/images/lesson1_loginWindow.jpg);height: 124px;width: 311px;background-repeat: no-repeat;padding-top: 30px;margin-left: 80px;margin-top: 50px;text-align: center;} +#lesson_login_txt {font-family: Arial, Helvetica, sans-serif;font-size: 12px;text-align: center;} +#lesson_search {background-image: url(lessons/CrossSiteScripting/images/lesson1_SearchWindow.jpg);height: 124px;width: 311px;background-repeat: no-repeat;padding-top: 30px;margin-left: 80px;margin-top: 50px;text-align: center;} diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/CrossSiteScripting.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/CrossSiteScripting.jsp new file mode 100644 index 000000000..278ca864f --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/CrossSiteScripting.jsp @@ -0,0 +1,26 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.CrossSiteScripting.*" + errorPage="" %> + +<% +WebSession webSession = ((WebSession)session.getAttribute("websession")); +CrossSiteScripting currentLesson = (CrossSiteScripting) webSession.getCurrentLesson(); +%> +
+
+
+ <% + String subViewPage = currentLesson.getPage(webSession); + if (subViewPage != null) + { + //System.out.println("Including sub view page: " + subViewPage); + %> + + <% + } + %> + +
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/EditProfile.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/EditProfile.jsp new file mode 100644 index 000000000..b679e149a --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/EditProfile.jsp @@ -0,0 +1,133 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.CrossSiteScripting.*" + errorPage="" %> +<% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + Employee employee = (Employee) session.getAttribute("CrossSiteScripting.Employee"); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%>
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ First Name: + + + + Last Name: + + +
+ Street: + + + + City/State: + + +
+ Phone: + + + + Start Date: + + +
+ SSN: + + + + Salary: + + +
+ Credit Card: + + + + Credit Card Limit: + + +
+ Comments: + + + + Manager: + + +
+ Disciplinary Explanation: + + + + Disciplinary Action Dates: + + +
+
+
+ + + + + + + + +
+ + + + + + + +
+ +
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/ListStaff.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/ListStaff.jsp new file mode 100644 index 000000000..fcb862d4e --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/ListStaff.jsp @@ -0,0 +1,54 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.CrossSiteScripting.*" + errorPage="" %> +<% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + int myUserId = webSession.getUserIdInLesson(); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%> - Staff Listing Page
+
+
+
+

Select from the list below

+
+ + + + + +
+
+
+ <% + if (webSession.isAuthorizedInLesson(myUserId, CrossSiteScripting.CREATEPROFILE_ACTION)) + { + %> +
+ <% + } + %> + <% + if (webSession.isAuthorizedInLesson(myUserId, CrossSiteScripting.DELETEPROFILE_ACTION)) + { + %> +
+ <% + } + %> +
+ +
+ +
+ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/Login.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/Login.jsp new file mode 100644 index 000000000..15b679d96 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/Login.jsp @@ -0,0 +1,37 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.CrossSiteScripting.*" + errorPage="" %> +
+
+ <% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + %> +
+ +
+ +
+ +
+
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/SearchStaff.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/SearchStaff.jsp new file mode 100644 index 000000000..6aee0e043 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/SearchStaff.jsp @@ -0,0 +1,22 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.CrossSiteScripting.*" + errorPage="" %> + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/ViewProfile.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/ViewProfile.jsp new file mode 100644 index 000000000..0b719dab6 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/ViewProfile.jsp @@ -0,0 +1,174 @@ + +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.CrossSiteScripting.*" errorPage="" %> +<% +WebSession webSession = ((WebSession)session.getAttribute("websession")); + Employee employee = (Employee) session.getAttribute("CrossSiteScripting." + CrossSiteScripting.EMPLOYEE_ATTRIBUTE_KEY); +// int myUserId = getIntSessionAttribute(webSession, "CrossSiteScripting." + CrossSiteScripting.USER_ID); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%>
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ First Name: + + <%=employee.getFirstName()%> + + Last Name: + + <%=employee.getLastName()%> +
+ Street: + + + + <%=employee.getAddress1()%> + + City/State: + + <%=employee.getAddress2()%> +
+ Phone: + + <%=employee.getPhoneNumber()%> + + Start Date: + + <%=employee.getStartDate()%> +
+ SSN: + + <%=employee.getSsn()%> + + Salary: + + <%=employee.getSalary()%> +
+ Credit Card: + + <%=employee.getCcn()%> + + Credit Card Limit: + + <%=employee.getCcnLimit()%> +
+ Comments: + + + + <%=webSession.htmlEncode(employee.getPersonalDescription())%> + + Manager: + + <%=employee.getManager()%> +
+ Disciplinary Explanation: + + <%=employee.getDisciplinaryActionNotes()%> + + Disciplinary Action Dates: + + <%=employee.getDisciplinaryActionDate()%> +
+
+
+ + + + <% + } + %> + + + + + +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), CrossSiteScripting.EDITPROFILE_ACTION)) + { + %> +
+ + +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), CrossSiteScripting.EDITPROFILE_ACTION)) + { + %> +
+ + +
+ <% + } + %> +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), CrossSiteScripting.DELETEPROFILE_ACTION)) + { + %> +
+ + +
+ <% + } + %> +
  +
+ +
+
+
+ + + + <% + if (webSession.getCurrentLesson().getStage(webSession) == 1005) + { + webSession.getCurrentLesson().setStage(webSession, 5); + //System.out.println("Reloading ViewProfile.jsp for stage 5 transition"); + String thisPage = webSession.getCurrentLink(); + //System.out.println("Redirecting to " + thisPage); + %> + + <% + } + %> \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/error.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/error.jsp new file mode 100644 index 000000000..5af0a45dc --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/error.jsp @@ -0,0 +1,3 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + errorPage="" %> +


An error has occurred. diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_SearchWindow.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_SearchWindow.jpg new file mode 100644 index 000000000..39e1ed80d Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_SearchWindow.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_header.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_header.jpg new file mode 100644 index 000000000..60a809af0 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_header.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_loginWindow.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_loginWindow.jpg new file mode 100644 index 000000000..c91f8a052 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_loginWindow.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_menu.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_menu.jpg new file mode 100644 index 000000000..2c9512571 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_menu.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_workspace.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_workspace.jpg new file mode 100644 index 000000000..292d25654 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/CrossSiteScripting/images/lesson1_workspace.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/EditProfile.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/EditProfile.jsp new file mode 100644 index 000000000..3f187bfce --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/EditProfile.jsp @@ -0,0 +1,136 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.RoleBasedAccessControl.*" + errorPage="" %> +<% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + Employee employee = (Employee) session.getAttribute("RoleBasedAccessControl.Employee"); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%> - Edit Profile Page
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ First Name: + + + + Last Name: + +
+ Street: + + + + City/State: + + +
+ Phone: + + + + Start Date: + + +
+ SSN: + + + + Salary: + + +
+ Credit Card: + + + + Credit Card Limit: + + +
+ Comments: + + +
+ Disciplinary Explanation: + + Disc. Date: + + +
+ +
+ Manager: + + +
+
+
+ + + + + + + + +
+ + + + + + + +
+
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/ListStaff.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/ListStaff.jsp new file mode 100644 index 000000000..8a1e3edbf --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/ListStaff.jsp @@ -0,0 +1,55 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.RoleBasedAccessControl.*" + errorPage="" %> +<% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + int myUserId = webSession.getUserIdInLesson(); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%> - Staff Listing Page
+
+
+
+

Select from the list below

+ +
+ + + + + +
+
+
+ <% + if (webSession.isAuthorizedInLesson(myUserId, RoleBasedAccessControl.CREATEPROFILE_ACTION)) + { + %> +
+ <% + } + %> + <% + if (webSession.isAuthorizedInLesson(myUserId, RoleBasedAccessControl.DELETEPROFILE_ACTION)) + { + %> +
+ <% + } + %> +
+ +
+ +
+ \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/Login.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/Login.jsp new file mode 100644 index 000000000..4550556de --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/Login.jsp @@ -0,0 +1,37 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.RoleBasedAccessControl.*" + errorPage="" %> +
+
+ <% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + %> +
+ +
+ +
+ +
+
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/RoleBasedAccessControl.css b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/RoleBasedAccessControl.css new file mode 100644 index 000000000..f38977fcf --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/RoleBasedAccessControl.css @@ -0,0 +1,14 @@ +#lesson_wrapper {height: 435px;width: 500px;} +#lesson_header {background-image: url(lessons/RoleBasedAccessControl/images/lesson1_header.jpg);width: 490px;padding-right: 10px;padding-top: 60px;background-repeat: no-repeat;} +.lesson_workspace {background-image: url(lessons/RoleBasedAccessControl/images/lesson1_workspace.jpg);width: 489px;height: 325px;padding-left: 10px;padding-top: 10px;background-repeat: no-repeat;} +.lesson_text {height: 240px;width: 460px;padding-top: 5px;} +#lesson_buttons_bottom {height: 20px;width: 460px;} +#lesson_b_b_left {width: 300px;float: left;} +#lesson_b_b_right input {width: 100px;float: right;} +.lesson_title_box {height: 20px;width: 420px;padding-left: 30px;} +.lesson_workspace { } +.lesson_txt_10 {font-family: Arial, Helvetica, sans-serif;font-size: 10px;} +.lesson_text_db {color: #0066FF} +#lesson_login {background-image: url(lessons/RoleBasedAccessControl/images/lesson1_loginWindow.jpg);height: 124px;width: 311px;background-repeat: no-repeat;padding-top: 30px;margin-left: 80px;margin-top: 50px;text-align: center;} +#lesson_login_txt {font-family: Arial, Helvetica, sans-serif;font-size: 12px;text-align: center;} +#lesson_search {background-image: url(lessons/RoleBasedAccessControl/images/lesson1_SearchWindow.jpg);height: 124px;width: 311px;background-repeat: no-repeat;padding-top: 30px;margin-left: 80px;margin-top: 50px;text-align: center;} diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/RoleBasedAccessControl.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/RoleBasedAccessControl.jsp new file mode 100644 index 000000000..979cfb569 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/RoleBasedAccessControl.jsp @@ -0,0 +1,26 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.RoleBasedAccessControl.*" + errorPage="" %> + +<% +WebSession webSession = ((WebSession)session.getAttribute("websession")); +RoleBasedAccessControl currentLesson = (RoleBasedAccessControl) webSession.getCurrentLesson(); +%> +
+
+
+ <% + String subViewPage = currentLesson.getPage(webSession); + if (subViewPage != null) + { + //System.out.println("Including sub view page: " + subViewPage); + %> + + <% + } + %> + +
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/SearchStaff.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/SearchStaff.jsp new file mode 100644 index 000000000..615c45b7a --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/SearchStaff.jsp @@ -0,0 +1,22 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.RoleBasedAccessControl.*" + errorPage="" %> + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/ViewProfile.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/ViewProfile.jsp new file mode 100644 index 000000000..81d211ca4 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/ViewProfile.jsp @@ -0,0 +1,157 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.RoleBasedAccessControl.*" + errorPage="" %> +<% + Employee employee = (Employee) session.getAttribute("RoleBasedAccessControl." + RoleBasedAccessControl.EMPLOYEE_ATTRIBUTE_KEY); + WebSession webSession = ((WebSession)session.getAttribute("websession")); +// int myUserId = getIntSessionAttribute(webSession, "RoleBasedAccessControl." + RoleBasedAccessControl.USER_ID); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%> - View Profile Page
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ First Name: + + <%=employee.getFirstName()%> + + Last Name: + + <%=employee.getLastName()%> +
+ Street: + + <%=employee.getAddress1()%> + + City/State: + + <%=employee.getAddress2()%> +
+ Phone: + + <%=employee.getPhoneNumber()%> + + Start Date: + + <%=employee.getStartDate()%> +
+ SSN: + + <%=employee.getSsn()%> + + Salary: + + <%=employee.getSalary()%> +
+ Credit Card: + + <%=employee.getCcn()%> + + Credit Card Limit: + + <%=employee.getCcnLimit()%> +
+ Comments: + + <%=employee.getPersonalDescription()%> +
+ Disciplinary Explanation: + + Disc. Dates: + + <%=employee.getDisciplinaryActionDate()%> +
+ <%=employee.getDisciplinaryActionNotes()%> +
+ Manager: + + <%=employee.getManager()%> +
+
+
+ + + + + + + + +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), RoleBasedAccessControl.LISTSTAFF_ACTION)) + { + %> +
+ + +
+ <% + }%> +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), RoleBasedAccessControl.EDITPROFILE_ACTION)) + { + %> +
+ + +
+ <% + } + %> +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), RoleBasedAccessControl.DELETEPROFILE_ACTION)) + { + %> +
+ + +
+ <% + } + %> +
  +
+ +
+
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/error.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/error.jsp new file mode 100644 index 000000000..9c4caeac6 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/error.jsp @@ -0,0 +1,13 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.RoleBasedAccessControl.*" + errorPage="" %> +<% + WebSession webSession = ((WebSession)session.getAttribute("websession")); +// int myUserId = getIntSessionAttribute(webSession, "RoleBasedAccessControl." + RoleBasedAccessControl.USER_ID); +%> +


An error has occurred. +


+
+ + +
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/accessControl.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/accessControl.jpg new file mode 100644 index 000000000..e9af72c50 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/accessControl.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/dbSchema.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/dbSchema.jpg new file mode 100644 index 000000000..457b634d0 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/dbSchema.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_SearchWindow.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_SearchWindow.jpg new file mode 100644 index 000000000..39e1ed80d Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_SearchWindow.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_header.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_header.jpg new file mode 100644 index 000000000..60a809af0 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_header.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_loginWindow.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_loginWindow.jpg new file mode 100644 index 000000000..c91f8a052 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_loginWindow.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_menu.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_menu.jpg new file mode 100644 index 000000000..2c9512571 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_menu.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_workspace.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_workspace.jpg new file mode 100644 index 000000000..292d25654 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/lesson1_workspace.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/orgChart.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/orgChart.jpg new file mode 100644 index 000000000..016c0d162 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/RoleBasedAccessControl/images/orgChart.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/EditProfile.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/EditProfile.jsp new file mode 100644 index 000000000..01ff93cde --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/EditProfile.jsp @@ -0,0 +1,133 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.SQLInjection.*" + errorPage="" %> +<% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + Employee employee = (Employee) session.getAttribute("SQLInjection.Employee"); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%>
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ First Name: + + + + Last Name: + + +
+ Street: + + + + City/State: + + +
+ Phone: + + + + Start Date: + + +
+ SSN: + + + + Salary: + + +
+ Credit Card: + + + + Credit Card Limit: + + +
+ Comments: + + + + Manager: + + +
+ Disciplinary Explanation: + + + + Disciplinary Action Dates: + + +
+
+
+ + + + + + + + +
+ + + + + + + +
+
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/ListStaff.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/ListStaff.jsp new file mode 100644 index 000000000..e58dba86b --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/ListStaff.jsp @@ -0,0 +1,55 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.SQLInjection.*" + errorPage="" %> +<% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + int myUserId = webSession.getUserIdInLesson(); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%> - Staff Listing Page
+
+
+
+

Select from the list below

+ +
+ + + + + +
+
+
+ <% + if (webSession.isAuthorizedInLesson(myUserId, SQLInjection.CREATEPROFILE_ACTION)) + { + %> +
+ <% + } + %> + <% + if (webSession.isAuthorizedInLesson(myUserId, SQLInjection.DELETEPROFILE_ACTION)) + { + %> +
+ <% + } + %> +
+ +
+ +
+ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/Login.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/Login.jsp new file mode 100644 index 000000000..59a2f2ae3 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/Login.jsp @@ -0,0 +1,37 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="java.util.*, org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.SQLInjection.*" + errorPage="" %> +
+
+ <% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + %> +
+ +
+ +
+ +
+
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SQLInjection.css b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SQLInjection.css new file mode 100644 index 000000000..177129117 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SQLInjection.css @@ -0,0 +1,14 @@ +#lesson_wrapper {height: 435px;width: 500px;} +#lesson_header {background-image: url(lessons/SQLInjection/images/lesson1_header.jpg);width: 490px;padding-right: 10px;padding-top: 60px;background-repeat: no-repeat;} +.lesson_workspace {background-image: url(lessons/SQLInjection/images/lesson1_workspace.jpg);width: 489px;height: 325px;padding-left: 10px;padding-top: 10px;background-repeat: no-repeat;} +.lesson_text {height: 240px;width: 460px;padding-top: 5px;} +#lesson_buttons_bottom {height: 20px;width: 460px;} +#lesson_b_b_left {width: 300px;float: left;} +#lesson_b_b_right input {width: 100px;float: right;} +.lesson_title_box {height: 20px;width: 420px;padding-left: 30px;} +.lesson_workspace { } +.lesson_txt_10 {font-family: Arial, Helvetica, sans-serif;font-size: 10px;} +.lesson_text_db {color: #0066FF} +#lesson_login {background-image: url(lessons/SQLInjection/images/lesson1_loginWindow.jpg);height: 124px;width: 311px;background-repeat: no-repeat;padding-top: 30px;margin-left: 80px;margin-top: 50px;text-align: center;} +#lesson_login_txt {font-family: Arial, Helvetica, sans-serif;font-size: 12px;text-align: center;} +#lesson_search {background-image: url(lessons/SQLInjection/images/lesson1_SearchWindow.jpg);height: 124px;width: 311px;background-repeat: no-repeat;padding-top: 30px;margin-left: 80px;margin-top: 50px;text-align: center;} diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SQLInjection.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SQLInjection.jsp new file mode 100644 index 000000000..b5da130e8 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SQLInjection.jsp @@ -0,0 +1,26 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.SQLInjection.*" + errorPage="" %> + +<% +WebSession webSession = ((WebSession)session.getAttribute("websession")); +SQLInjection currentLesson = (SQLInjection) webSession.getCurrentLesson(); +%> +
+
+
+ <% + String subViewPage = currentLesson.getPage(webSession); + if (subViewPage != null) + { + //System.out.println("Including sub view page: " + subViewPage); + %> + + <% + } + %> + +
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SearchStaff.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SearchStaff.jsp new file mode 100644 index 000000000..c30bd53ab --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/SearchStaff.jsp @@ -0,0 +1,22 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.SQLInjection.*" + errorPage="" %> + \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/ViewProfile.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/ViewProfile.jsp new file mode 100644 index 000000000..eaabd5a9d --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/ViewProfile.jsp @@ -0,0 +1,154 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.SQLInjection.*" + errorPage="" %> +<% + WebSession webSession = ((WebSession)session.getAttribute("websession")); + Employee employee = (Employee) session.getAttribute("SQLInjection." + SQLInjection.EMPLOYEE_ATTRIBUTE_KEY); +// int myUserId = getIntSessionAttribute(webSession, "SQLInjection." + SQLInjection.USER_ID); +%> +
Welcome Back <%=webSession.getUserNameInLesson()%>
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ First Name: + + <%=employee.getFirstName()%> + + Last Name: + + <%=employee.getLastName()%> +
+ Street: + + <%=employee.getAddress1()%> + + City/State: + + <%=employee.getAddress2()%> +
+ Phone: + + <%=employee.getPhoneNumber()%> + + Start Date: + + <%=employee.getStartDate()%> +
+ SSN: + + <%=employee.getSsn()%> + + Salary: + + <%=employee.getSalary()%> +
+ Credit Card: + + <%=employee.getCcn()%> + + Credit Card Limit: + + <%=employee.getCcnLimit()%> +
+ Comments: + + <%=employee.getPersonalDescription()%> + + Manager: + + <%=employee.getManager()%> +
+ Disciplinary Explanation: + + <%=employee.getDisciplinaryActionNotes()%> + + Disciplinary Action Dates: + + <%=employee.getDisciplinaryActionDate()%> +
+
+
+ + + + + + + + +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), SQLInjection.LISTSTAFF_ACTION)) + { + %> +
+ + +
+ <% + } + %> +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), SQLInjection.EDITPROFILE_ACTION)) + { + %> +
+ + +
+ <% + } + %> +
+ <% + if (webSession.isAuthorizedInLesson(webSession.getUserIdInLesson(), SQLInjection.DELETEPROFILE_ACTION)) + { + %> +
+ + +
+ <% + } + %> +
  +
+ +
+
+
\ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/error.jsp b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/error.jsp new file mode 100644 index 000000000..5af0a45dc --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/error.jsp @@ -0,0 +1,3 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + errorPage="" %> +


An error has occurred. diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_SearchWindow.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_SearchWindow.jpg new file mode 100644 index 000000000..39e1ed80d Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_SearchWindow.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_header.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_header.jpg new file mode 100644 index 000000000..60a809af0 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_header.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_loginWindow.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_loginWindow.jpg new file mode 100644 index 000000000..c91f8a052 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_loginWindow.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_menu.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_menu.jpg new file mode 100644 index 000000000..2c9512571 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_menu.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_workspace.jpg b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_workspace.jpg new file mode 100644 index 000000000..292d25654 Binary files /dev/null and b/ webgoat/main/project/JavaSource/WebContent/lessons/SQLInjection/images/lesson1_workspace.jpg differ diff --git a/ webgoat/main/project/JavaSource/WebContent/main.jsp b/ webgoat/main/project/JavaSource/WebContent/main.jsp new file mode 100644 index 000000000..543ce93b7 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/main.jsp @@ -0,0 +1,227 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*, org.owasp.webgoat.lessons.*, java.util.*" + errorPage="" %> +<% +Course course = ((Course)session.getAttribute("course")); +WebSession webSession = ((WebSession)session.getAttribute("websession")); +AbstractLesson currentLesson = webSession.getCurrentLesson(); +%> + + + + + +<%=currentLesson.getTitle()%> + + + + + + + + + + +<% +final String menuPrefix = "menu"; +final String submenuPrefix = "submenu"; +final String mbutPrefix = "mbut"; +String printHint = ""; +String printParameters = ""; +String printCookies = ""; +String lessonComplete = ""; +String m = "menu"; +String menu = request.getParameter(m); + +List categories = course.getCategories(); + +StringBuffer buildList = new StringBuffer(); + + Iterator iter1 = categories.iterator(); + while(iter1.hasNext()) + { + Category category = (Category)iter1.next(); + + buildList.append("'"); + buildList.append(menuPrefix); + buildList.append(category.getRanking()); + buildList.append("','"); + buildList.append(submenuPrefix); + buildList.append(category.getRanking()); + buildList.append("','"); + buildList.append(mbutPrefix); + buildList.append(category.getRanking()); + buildList.append("'"); + + if (iter1.hasNext()) + buildList.append(","); + }%> + + +
+ <% + int topCord = 140; + int zIndex = 105; + + Iterator iter2 = categories.iterator(); + while(iter2.hasNext()) + { + Category category = (Category)iter2.next(); + %> + + <% + topCord=topCord + 30; + zIndex=zIndex + 1; + } + + int topSubMenu = 72; + + Iterator iter3 = categories.iterator(); + while(iter3.hasNext()) + { + Category category = (Category)iter3.next(); + List lessons = webSession.getLessons(category); + Iterator iter4 = lessons.iterator(); + %> + <% + }%> +
+
+
LogOut Help
+
+
<%=currentLesson.getTitle()%>
+
+ <% + if (webSession.isAuthorizedInLesson(webSession.getRole(), WebSession.SHOWHINTS)) + { + %> + + Previous Hint + + + Hints + + + Next Hint + + <%}%> + + Show Params + + + Show Cookies + + <% + if (webSession.isAuthorizedInLesson(webSession.getRole(), WebSession.SHOWSOURCE)) + { + %> + + Show Java + + + Lesson Plans + + <%}%> +
+
+ +
+ <% + if (currentLesson != null) + { + %> + + <% + } + + if (webSession.getHint() != null) + { + printHint = "
" + webSession.getHint() + "

"; + out.println(printHint); + } + + if (webSession.getParams() != null) + { + Iterator i = webSession.getParams().iterator(); + while (i.hasNext()) + { + Parameter p = (Parameter) i.next(); + printParameters = "
" + p.getName() + "=" + p.getValue() + "

"; + out.println(printParameters); + } + } + + if (webSession.getCookies() != null) + { + Iterator i = webSession.getCookies().iterator(); + while (i.hasNext()) + { + Cookie c = (Cookie) i.next(); + printCookies = "
" + c.getName() + " \"\" " + c.getValue() + "

"; + out.println(printCookies); + } + }%> + +
<%=webSession.getInstructions()%>
+
<%=webSession.getMessage()%>
+ + <% + if (currentLesson.getTemplatePage(webSession) != null) + { + %> + + <% + } + else + { + %> +
<%=currentLesson.getContent()%>
+ <% + } + %> +
+ <% out.println(currentLesson.getCredits());%> +
+
+
+ +
+
OWASP Foundation | Project WebGoat
+
+
+ + diff --git a/ webgoat/main/project/JavaSource/WebContent/sideWindow.jsp b/ webgoat/main/project/JavaSource/WebContent/sideWindow.jsp new file mode 100644 index 000000000..4ffa465ae --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/sideWindow.jsp @@ -0,0 +1,28 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + import="org.owasp.webgoat.session.*" + errorPage="" %> + +<% +WebSession webSession = ((WebSession)session.getAttribute("websession")); +%> + + + + + +Untitled Document + + + +
+ <% + String source = webSession.getSource(); + if (source != null) + { + String printSource = "
" + source + "

"; + out.println(printSource); + } + %> +
+ + diff --git a/ webgoat/main/project/JavaSource/WebContent/users/ReadMe.txt b/ webgoat/main/project/JavaSource/WebContent/users/ReadMe.txt new file mode 100644 index 000000000..39f82909b --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/users/ReadMe.txt @@ -0,0 +1 @@ +User-specific lesson state is stored under this directory. \ No newline at end of file diff --git a/ webgoat/main/project/JavaSource/WebContent/webgoat.jsp b/ webgoat/main/project/JavaSource/WebContent/webgoat.jsp new file mode 100644 index 000000000..06bd8c535 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/webgoat.jsp @@ -0,0 +1,81 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + errorPage="" %> + + + + + +WebGoat V4 + + + + + +
+
+
+

Thank you for using WebGoat!

+

This program is a demonstration of common web application flaws. + The exercises are intended to provide hands on experience with application + penetration testing techniques.

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
WebGoat Design Team
Lesson Contributers
+
Jeff Williams
+
Bruce Mayhew
+
Laurence Casey
+
David Anderson
+
Eric Sheridan
+
Dave Wichers
+
Aspect Security
+ (http://www.aspectsecurity.com)
Alex Smolen
+ (http://www.parasoft.com)
Rogan Dawes
+ (http://dawes.za.net/rogan)
Chuck Willis
+ (http://www.securityfoundry.com)
Documentation Contributer
Robert Sullivan
+ (http://www.unitedhealthgroup.com/)
+
+
+ +
+
+
+
+
WARNING
+ While running this program, your machine is extremely vulnerable to attack. + You should disconnect from the network while using this program. +
+
+ This program is for educational purposes only. + Use of these techniques without permission could lead to + job termination, financial liability, and/or criminal penalties. +
+ +
+ + diff --git a/ webgoat/main/project/JavaSource/WebContent/webgoat_challenge.jsp b/ webgoat/main/project/JavaSource/WebContent/webgoat_challenge.jsp new file mode 100644 index 000000000..2aa7fed01 --- /dev/null +++ b/ webgoat/main/project/JavaSource/WebContent/webgoat_challenge.jsp @@ -0,0 +1,77 @@ +<%@ page contentType="text/html; charset=ISO-8859-1" language="java" + errorPage="" %> + + + + + +WebGoat V4 + + + + +
+
+
+

Thank you for using WebGoat!

+

This program is a demonstration of common web application flaws. + The exercises are intended to provide hands on experience with application + penetration testing techniques.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
WebGoat Design Team
Lesson Contributers
Jeff Williams
Aspect Security
+ (http://www.aspectsecurity.com)
Bruce Mayhew
Alex Smolen
+ (http://www.parasoft.com)
Laurence Casey
Rogan Dawes
+ (http://dawes.za.net/rogan)
David Anderson
Chuck Willis
+ (http://www.securityfoundry.com)
Eric Sheridan
+
+
+ +
+
+
+
+
WARNING
+ While running this program your machine will be extremely vulnerable to attack. + You should disconnect from the Internet while using this program. +
+
+ This program is for educational purposes only. + If you attempt these techniques without authorization, + you are very likely to get caught. + If you are caught engaging in unauthorized hacking, + most companies will fire you. + Claiming that you were doing security research will + not work as that is the first thing that all hackers claim. +
+ +
+ +