Renamed to vulnerablecomponents
@ -65,7 +65,7 @@ public class GeneralLessonIntegrationTest extends IntegrationTest {
|
|||||||
@Test
|
@Test
|
||||||
public void vulnerableComponents() {
|
public void vulnerableComponents() {
|
||||||
String solution = "<contact class='dynamic-proxy'>\n" +
|
String solution = "<contact class='dynamic-proxy'>\n" +
|
||||||
"<interface>org.owasp.webgoat.lessons.vulnerable_components.Contact</interface>\n" +
|
"<interface>org.owasp.webgoat.lessons.vulnerablecomponents.Contact</interface>\n" +
|
||||||
" <handler class='java.beans.EventHandler'>\n" +
|
" <handler class='java.beans.EventHandler'>\n" +
|
||||||
" <target class='java.lang.ProcessBuilder'>\n" +
|
" <target class='java.lang.ProcessBuilder'>\n" +
|
||||||
" <command>\n" +
|
" <command>\n" +
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.owasp.webgoat.lessons.vulnerable_components;
|
package org.owasp.webgoat.lessons.vulnerablecomponents;
|
||||||
|
|
||||||
public interface Contact {
|
public interface Contact {
|
||||||
|
|
@ -20,7 +20,7 @@
|
|||||||
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.owasp.webgoat.lessons.vulnerable_components;
|
package org.owasp.webgoat.lessons.vulnerablecomponents;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -20,7 +20,7 @@
|
|||||||
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.owasp.webgoat.lessons.vulnerable_components;
|
package org.owasp.webgoat.lessons.vulnerablecomponents;
|
||||||
|
|
||||||
import org.owasp.webgoat.container.lessons.Category;
|
import org.owasp.webgoat.container.lessons.Category;
|
||||||
import org.owasp.webgoat.container.lessons.Lesson;
|
import org.owasp.webgoat.container.lessons.Lesson;
|
@ -20,7 +20,7 @@
|
|||||||
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.owasp.webgoat.lessons.vulnerable_components;
|
package org.owasp.webgoat.lessons.vulnerablecomponents;
|
||||||
|
|
||||||
import com.thoughtworks.xstream.XStream;
|
import com.thoughtworks.xstream.XStream;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
@ -13,6 +13,6 @@ WebGoat uses an XML document to add contacts to a contacts database.
|
|||||||
</contact>
|
</contact>
|
||||||
----
|
----
|
||||||
|
|
||||||
The java interface that you need for the exercise is: org.owasp.webgoat.vulnerable_components.Contact.
|
The java interface that you need for the exercise is: org.owasp.webgoat.vulnerablecomponents.Contact.
|
||||||
Start by sending the above contact to see what the normal response would be and then read the CVE vulnerability documentation (search the Internet) and try to trigger the vulnerability.
|
Start by sending the above contact to see what the normal response would be and then read the CVE vulnerability documentation (search the Internet) and try to trigger the vulnerability.
|
||||||
For this example, we will let you enter the XML directly versus intercepting the request and modifying the data. You provide the XML representation of a contact and WebGoat will convert it a Contact object using `XStream.fromXML(xml)`.
|
For this example, we will let you enter the XML directly versus intercepting the request and modifying the data. You provide the XML representation of a contact and WebGoat will convert it a Contact object using `XStream.fromXML(xml)`.
|
@ -4,20 +4,20 @@
|
|||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />
|
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_plan.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_plan.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content0.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content0.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content1.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content1.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content1a.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content1a.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content2.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content2.adoc"></div>
|
||||||
<div class="attack-container">
|
<div class="attack-container">
|
||||||
<!-- using attack-form class on your form, will allow your request to be ajaxified and stay within the display framework for webgoat -->
|
<!-- using attack-form class on your form, will allow your request to be ajaxified and stay within the display framework for webgoat -->
|
||||||
<div id="lessonContent">
|
<div id="lessonContent">
|
||||||
@ -45,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content2a.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content2a.adoc"></div>
|
||||||
<div class="attack-container">
|
<div class="attack-container">
|
||||||
<!-- using attack-form class on your form, will allow your request to be ajaxified and stay within the display framework for webgoat -->
|
<!-- using attack-form class on your form, will allow your request to be ajaxified and stay within the display framework for webgoat -->
|
||||||
<div id="lessonContent">
|
<div id="lessonContent">
|
||||||
@ -75,26 +75,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content3.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content3.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content4.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content4.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content4a.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content4a.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content4b.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content4b.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content4c.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content4c.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content5.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content5.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content5a.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content5a.adoc"></div>
|
||||||
<div class="attack-container">
|
<div class="attack-container">
|
||||||
<div class="assignment-success"><i class="fa fa-2 fa-check hidden" aria-hidden="true"></i></div>
|
<div class="assignment-success"><i class="fa fa-2 fa-check hidden" aria-hidden="true"></i></div>
|
||||||
<form class="attack-form" accept-charset="UNKNOWN"
|
<form class="attack-form" accept-charset="UNKNOWN"
|
||||||
@ -120,7 +120,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:lessons/vulnerable_components/documentation/VulnerableComponents_content6.adoc"></div>
|
<div class="adoc-content" th:replace="doc:lessons/vulnerablecomponents/documentation/VulnerableComponents_content6.adoc"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</html>
|
</html>
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
@ -20,12 +20,14 @@
|
|||||||
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
* Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository for free software projects.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.owasp.webgoat.lessons.vulnerable_components;
|
package org.owasp.webgoat.lessons.vulnerablecomponents;
|
||||||
|
|
||||||
import com.thoughtworks.xstream.XStream;
|
import com.thoughtworks.xstream.XStream;
|
||||||
import com.thoughtworks.xstream.io.StreamException;
|
import com.thoughtworks.xstream.io.StreamException;
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.owasp.webgoat.lessons.vulnerablecomponents.Contact;
|
||||||
|
import org.owasp.webgoat.lessons.vulnerablecomponents.ContactImpl;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
@ -34,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||||||
public class VulnerableComponentsLessonTest {
|
public class VulnerableComponentsLessonTest {
|
||||||
|
|
||||||
String strangeContact = "<contact class='dynamic-proxy'>\n" +
|
String strangeContact = "<contact class='dynamic-proxy'>\n" +
|
||||||
"<interface>org.owasp.webgoat.vulnerable_components.Contact</interface>\n" +
|
"<interface>org.owasp.webgoat.vulnerablecomponents.Contact</interface>\n" +
|
||||||
" <handler class='java.beans.EventHandler'>\n" +
|
" <handler class='java.beans.EventHandler'>\n" +
|
||||||
" <target class='java.lang.ProcessBuilder'>\n" +
|
" <target class='java.lang.ProcessBuilder'>\n" +
|
||||||
" <command>\n" +
|
" <command>\n" +
|