progress fix for SqlInjectionMitigations
This commit is contained in:
parent
ea38973068
commit
b65644edee
@ -20,7 +20,7 @@ import java.util.List;
|
|||||||
* @since 6/13/17.
|
* @since 6/13/17.
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("SqlInjection/servers")
|
@RequestMapping("SqlInjectionMitigations/servers")
|
||||||
public class Servers {
|
public class Servers {
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
|||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
@AssignmentPath("SqlInjection/attack10a")
|
@AssignmentPath("SqlInjectionMitigations/attack10a")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@AssignmentHints(value = {"SqlStringInjectionHint-mitigation-10a-1", "SqlStringInjectionHint-mitigation-10a-10a2"})
|
@AssignmentHints(value = {"SqlStringInjectionHint-mitigation-10a-1", "SqlStringInjectionHint-mitigation-10a-10a2"})
|
||||||
public class SqlInjectionLesson10a extends AssignmentEndpoint {
|
public class SqlInjectionLesson10a extends AssignmentEndpoint {
|
||||||
|
@ -18,7 +18,7 @@ import java.util.List;
|
|||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@AssignmentPath("SqlInjection/attack10b")
|
@AssignmentPath("SqlInjectionMitigations/attack10b")
|
||||||
@AssignmentHints(value = {"SqlStringInjectionHint-mitigation-10b-1", "SqlStringInjectionHint-mitigation-10b-2", "SqlStringInjectionHint-mitigation-10b-3", "SqlStringInjectionHint-mitigation-10b-4", "SqlStringInjectionHint-mitigation-10b-5"})
|
@AssignmentHints(value = {"SqlStringInjectionHint-mitigation-10b-1", "SqlStringInjectionHint-mitigation-10b-2", "SqlStringInjectionHint-mitigation-10b-3", "SqlStringInjectionHint-mitigation-10b-4", "SqlStringInjectionHint-mitigation-10b-5"})
|
||||||
public class SqlInjectionLesson10b extends AssignmentEndpoint {
|
public class SqlInjectionLesson10b extends AssignmentEndpoint {
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import java.sql.*;
|
|||||||
* @author nbaars
|
* @author nbaars
|
||||||
* @since 6/13/17.
|
* @since 6/13/17.
|
||||||
*/
|
*/
|
||||||
@AssignmentPath("SqlInjection/attack12a")
|
@AssignmentPath("SqlInjectionMitigations/attack12a")
|
||||||
@AssignmentHints(value = {"SqlStringInjectionHint-mitigation-12a-1", "SqlStringInjectionHint-mitigation-12a-2", "SqlStringInjectionHint-mitigation-12a-3", "SqlStringInjectionHint-mitigation-12a-4"})
|
@AssignmentHints(value = {"SqlStringInjectionHint-mitigation-12a-1", "SqlStringInjectionHint-mitigation-12a-2", "SqlStringInjectionHint-mitigation-12a-3", "SqlStringInjectionHint-mitigation-12a-4"})
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class SqlInjectionLesson12a extends AssignmentEndpoint {
|
public class SqlInjectionLesson12a extends AssignmentEndpoint {
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<div class="adoc-content" th:replace="doc:SqlInjection_jdbc_completion.adoc"></div>
|
<div class="adoc-content" th:replace="doc:SqlInjection_jdbc_completion.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" method="POST" name="form" action="/WebGoat/SqlInjection/attack10a" enctype="application/json;charset=UTF-8">
|
<form class="attack-form" accept-charset="UNKNOWN" method="POST" name="form" action="/WebGoat/SqlInjectionMitigations/attack10a" enctype="application/json;charset=UTF-8">
|
||||||
<div>
|
<div>
|
||||||
<p>Connection conn = DriverManager.<input type="text" name="field1" id="field1" />(DBURL, DBUSER, DBPW);</p>
|
<p>Connection conn = DriverManager.<input type="text" name="field1" id="field1" />(DBURL, DBUSER, DBPW);</p>
|
||||||
<p><input type="text" name="field2" id="field2" /> = conn.<input type="text" name="field3" id="field3" />("SELECT status FROM users WHERE name=<input type="text" name="field4" id="field4" /> AND mail=<input type="text" name="field5" id="field5" />");</p>
|
<p><input type="text" name="field2" id="field2" /> = conn.<input type="text" name="field3" id="field3" />("SELECT status FROM users WHERE name=<input type="text" name="field4" id="field4" /> AND mail=<input type="text" name="field5" id="field5" />");</p>
|
||||||
@ -42,7 +42,7 @@
|
|||||||
<div class="lesson-page-wrapper">
|
<div class="lesson-page-wrapper">
|
||||||
<div class="adoc-content" th:replace="doc:SqlInjection_jdbc_newcode.adoc"></div>
|
<div class="adoc-content" th:replace="doc:SqlInjection_jdbc_newcode.adoc"></div>
|
||||||
<div class="attack-container" style="border: none !important; height: 100%; min-height: 300px;">
|
<div class="attack-container" style="border: none !important; height: 100%; min-height: 300px;">
|
||||||
<form id="codesubmit" style="height: 100%; min-height: 300px;" class="attack-form" accept-charset="UNKNOWN" method="POST" name="form" action="/WebGoat/SqlInjection/attack10b" enctype="application/json;charset=UTF-8">
|
<form id="codesubmit" style="height: 100%; min-height: 300px;" class="attack-form" accept-charset="UNKNOWN" method="POST" name="form" action="/WebGoat/SqlInjectionMitigations/attack10b" enctype="application/json;charset=UTF-8">
|
||||||
<div>
|
<div>
|
||||||
<div id="editor" style="position: absolute; top: 0; right: 0; bottom: 0; left: 0; height: 300px;" name="editor"></div>
|
<div id="editor" style="position: absolute; top: 0; right: 0; bottom: 0; left: 0; height: 300px;" name="editor"></div>
|
||||||
<script th:src="@{/js/libs/ace/src-noconflict/ace.js}" type="text/javascript" charset="utf-8"></script>
|
<script th:src="@{/js/libs/ace/src-noconflict/ace.js}" type="text/javascript" charset="utf-8"></script>
|
||||||
@ -78,7 +78,7 @@
|
|||||||
<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"
|
||||||
method="POST" name="form"
|
method="POST" name="form"
|
||||||
action="/WebGoat/SqlInjection/attack12a"
|
action="/WebGoat/SqlInjectionMitigations/attack12a"
|
||||||
enctype="application/json;charset=UTF-8">
|
enctype="application/json;charset=UTF-8">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -38,7 +38,7 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void knownAccountShouldDisplayData() throws Exception {
|
public void knownAccountShouldDisplayData() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "id"))
|
.param("column", "id"))
|
||||||
|
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
@ -46,7 +46,7 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void addressCorrectShouldOrderByHostname() throws Exception {
|
public void addressCorrectShouldOrderByHostname() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "CASE WHEN (SELECT ip FROM servers WHERE hostname='webgoat-prd') LIKE '104.%' THEN hostname ELSE id END"))
|
.param("column", "CASE WHEN (SELECT ip FROM servers WHERE hostname='webgoat-prd') LIKE '104.%' THEN hostname ELSE id END"))
|
||||||
|
|
||||||
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-acc")));
|
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-acc")));
|
||||||
@ -54,17 +54,17 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void addressCorrectShouldOrderByHostnameUsingSubstr() throws Exception {
|
public void addressCorrectShouldOrderByHostnameUsingSubstr() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "case when (select ip from servers where hostname='webgoat-prd' and substr(ip,1,1) = '1') IS NOT NULL then hostname else id end"))
|
.param("column", "case when (select ip from servers where hostname='webgoat-prd' and substr(ip,1,1) = '1') IS NOT NULL then hostname else id end"))
|
||||||
|
|
||||||
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-acc")));
|
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-acc")));
|
||||||
|
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "case when (select ip from servers where hostname='webgoat-prd' and substr(ip,2,1) = '0') IS NOT NULL then hostname else id end"))
|
.param("column", "case when (select ip from servers where hostname='webgoat-prd' and substr(ip,2,1) = '0') IS NOT NULL then hostname else id end"))
|
||||||
|
|
||||||
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-acc")));
|
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-acc")));
|
||||||
|
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "case when (select ip from servers where hostname='webgoat-prd' and substr(ip,3,1) = '4') IS NOT NULL then hostname else id end"))
|
.param("column", "case when (select ip from servers where hostname='webgoat-prd' and substr(ip,3,1) = '4') IS NOT NULL then hostname else id end"))
|
||||||
|
|
||||||
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-acc")));
|
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-acc")));
|
||||||
@ -72,7 +72,7 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void addressIncorrectShouldOrderByIdUsingSubstr() throws Exception {
|
public void addressIncorrectShouldOrderByIdUsingSubstr() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "case when (select ip from servers where hostname='webgoat-prd' and substr(ip,1,1) = '9') IS NOT NULL then hostname else id end"))
|
.param("column", "case when (select ip from servers where hostname='webgoat-prd' and substr(ip,1,1) = '9') IS NOT NULL then hostname else id end"))
|
||||||
|
|
||||||
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-dev")));
|
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-dev")));
|
||||||
@ -80,7 +80,7 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void trueShouldSortByHostname() throws Exception {
|
public void trueShouldSortByHostname() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "(case when (true) then hostname else id end)"))
|
.param("column", "(case when (true) then hostname else id end)"))
|
||||||
|
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
@ -89,7 +89,7 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void falseShouldSortById() throws Exception {
|
public void falseShouldSortById() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "(case when (true) then hostname else id end)"))
|
.param("column", "(case when (true) then hostname else id end)"))
|
||||||
|
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
@ -98,7 +98,7 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void addressIncorrectShouldOrderByHostname() throws Exception {
|
public void addressIncorrectShouldOrderByHostname() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjection/servers")
|
mockMvc.perform(MockMvcRequestBuilders.get("/SqlInjectionMitigations/servers")
|
||||||
.param("column", "CASE WHEN (SELECT ip FROM servers WHERE hostname='webgoat-prd') LIKE '192.%' THEN hostname ELSE id END"))
|
.param("column", "CASE WHEN (SELECT ip FROM servers WHERE hostname='webgoat-prd') LIKE '192.%' THEN hostname ELSE id END"))
|
||||||
|
|
||||||
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-dev")));
|
.andExpect(status().isOk()).andExpect(jsonPath("$[0].hostname", is("webgoat-dev")));
|
||||||
@ -106,7 +106,7 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void postingCorrectAnswerShouldPassTheLesson() throws Exception {
|
public void postingCorrectAnswerShouldPassTheLesson() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.post("/SqlInjection/attack12a")
|
mockMvc.perform(MockMvcRequestBuilders.post("/SqlInjectionMitigations/attack12a")
|
||||||
.param("ip", "104.130.219.202"))
|
.param("ip", "104.130.219.202"))
|
||||||
|
|
||||||
.andExpect(status().isOk()).andExpect(jsonPath("$.lessonCompleted", is(true)));
|
.andExpect(status().isOk()).andExpect(jsonPath("$.lessonCompleted", is(true)));
|
||||||
@ -114,7 +114,7 @@ public class SqlInjectionLesson12aTest extends LessonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void postingWrongAnswerShouldNotPassTheLesson() throws Exception {
|
public void postingWrongAnswerShouldNotPassTheLesson() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.post("/SqlInjection/attack12a")
|
mockMvc.perform(MockMvcRequestBuilders.post("/SqlInjectionMitigations/attack12a")
|
||||||
.param("ip", "192.168.219.202"))
|
.param("ip", "192.168.219.202"))
|
||||||
|
|
||||||
.andExpect(status().isOk()).andExpect(jsonPath("$.lessonCompleted", is(false)));
|
.andExpect(status().isOk()).andExpect(jsonPath("$.lessonCompleted", is(false)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user