diff --git a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORDiffAttributes.java b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORDiffAttributes.java index 2cde6b967..5079a2132 100644 --- a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORDiffAttributes.java +++ b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORDiffAttributes.java @@ -1,6 +1,7 @@ package org.owasp.webgoat.plugin; import org.owasp.webgoat.assignments.AssignmentEndpoint; +import org.owasp.webgoat.assignments.AssignmentHints; import org.owasp.webgoat.assignments.AssignmentPath; import org.owasp.webgoat.assignments.AttackResult; import org.springframework.web.bind.annotation.RequestMapping; @@ -42,6 +43,7 @@ import java.io.IOException; */ @AssignmentPath("IDOR/diff-attributes") +@AssignmentHints({"idor.hints.idorDiffAttributes1","idor.hints.idorDiffAttributes2","idor.hints.idorDiffAttributes3"}) public class IDORDiffAttributes extends AssignmentEndpoint { @RequestMapping(method = RequestMethod.POST) diff --git a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDOREditOtherProfiile.java b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDOREditOtherProfiile.java index 1d196030c..1d2e7cd52 100644 --- a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDOREditOtherProfiile.java +++ b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDOREditOtherProfiile.java @@ -1,6 +1,7 @@ package org.owasp.webgoat.plugin; import org.owasp.webgoat.assignments.AssignmentEndpoint; +import org.owasp.webgoat.assignments.AssignmentHints; import org.owasp.webgoat.assignments.AssignmentPath; import org.owasp.webgoat.assignments.AttackResult; import org.owasp.webgoat.session.UserSessionData; @@ -38,6 +39,7 @@ import org.springframework.web.bind.annotation.*; */ @AssignmentPath("IDOR/profile/{userId}") +@AssignmentHints({"idor.hints.otherProfile1","idor.hints.otherProfile2","idor.hints.otherProfile3","idor.hints.otherProfile4","idor.hints.otherProfile5","idor.hints.otherProfile6","idor.hints.otherProfile7","idor.hints.otherProfile8","idor.hints.otherProfile9"}) public class IDOREditOtherProfiile extends AssignmentEndpoint { @Autowired diff --git a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORViewOtherProfile.java b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORViewOtherProfile.java index c90188097..7d0d45dd8 100644 --- a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORViewOtherProfile.java +++ b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORViewOtherProfile.java @@ -2,6 +2,7 @@ package org.owasp.webgoat.plugin; import org.owasp.webgoat.assignments.AssignmentEndpoint; +import org.owasp.webgoat.assignments.AssignmentHints; import org.owasp.webgoat.assignments.AssignmentPath; import org.owasp.webgoat.assignments.AttackResult; import org.owasp.webgoat.session.UserSessionData; @@ -46,6 +47,7 @@ import java.util.Map; */ @AssignmentPath("IDOR/profile/{userId}") +@AssignmentHints({"idor.hints.otherProfile1","idor.hints.otherProfile2","idor.hints.otherProfile3","idor.hints.otherProfile4","idor.hints.otherProfile5","idor.hints.otherProfile6","idor.hints.otherProfile7","idor.hints.otherProfile8","idor.hints.otherProfile9"}) public class IDORViewOtherProfile extends AssignmentEndpoint{ @Autowired diff --git a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORViewOwnProfileAltUrl.java b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORViewOwnProfileAltUrl.java index 677783200..990c9a2a7 100644 --- a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORViewOwnProfileAltUrl.java +++ b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/IDORViewOwnProfileAltUrl.java @@ -2,6 +2,7 @@ package org.owasp.webgoat.plugin; import org.owasp.webgoat.assignments.AssignmentEndpoint; +import org.owasp.webgoat.assignments.AssignmentHints; import org.owasp.webgoat.assignments.AssignmentPath; import org.owasp.webgoat.assignments.AttackResult; import org.owasp.webgoat.session.UserSessionData; @@ -46,6 +47,7 @@ import java.util.Map; */ @AssignmentPath("IDOR/profile/alt-path") +@AssignmentHints({"idor.hints.ownProfileAltUrl1","idor.hints.ownProfileAltUrl2","idor.hints.ownProfileAltUrl3"}) public class IDORViewOwnProfileAltUrl extends AssignmentEndpoint{ @Autowired diff --git a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/ViewOtherUserProfile.java b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/ViewOtherUserProfile.java index 622b8f5ac..952ba97b7 100644 --- a/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/ViewOtherUserProfile.java +++ b/webgoat-lessons/idor/src/main/java/org/owasp/webgoat/plugin/ViewOtherUserProfile.java @@ -1,64 +1,66 @@ -package org.owasp.webgoat.plugin; - -import com.google.common.collect.Lists; -import org.owasp.webgoat.assignments.AssignmentEndpoint; -import org.owasp.webgoat.assignments.AssignmentPath; -import org.owasp.webgoat.assignments.AttackResult; -import org.owasp.webgoat.session.UserSessionData; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Created by jason on 1/5/17. - */ - -@AssignmentPath("/IDOR/viewprofile/{id}") -public class ViewOtherUserProfile extends AssignmentEndpoint { - - private String color; - private String size; - private boolean isAdmin; - - @Autowired - UserSessionData userSessionData; - - @RequestMapping(produces = {"application/json"}) - public @ResponseBody - AttackResult completed(@PathVariable String userId, HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - List json = Lists.newArrayList(); - // can be re-used - Map errorMap = new HashMap(); - errorMap.put("error","not logged in, go back and log in first"); - - if (userSessionData.getValue("idor-authenticated-as") == null) { - json.add(errorMap); - return trackProgress(failed().feedback("idor.view.other.profile.failure1").build()); - } else { - if (userSessionData.getValue("idor-authenticated-as").equals("bill") || userSessionData.getValue("idor-authenticated-as").equals("tom")) { - System.out.println("**** authenticated as " + userSessionData.getValue("idor-authenticated-as")); - //logged in - String authUserId = (String)userSessionData.getValue("idor-authenticated-user-id"); - //secure code would check to make sure authUserId matches userId or some similar access control - // ... and in this endpoint, we won't bother with that - UserProfile userProfile = new UserProfile(userId); - return trackProgress(failed().feedback("idor.view.other.profile.failure2").build()); - } - } - // else - return trackProgress(failed().build()); - } - - - - -} +//package org.owasp.webgoat.plugin; +// +//import com.google.common.collect.Lists; +//import org.owasp.webgoat.assignments.AssignmentEndpoint; +//import org.owasp.webgoat.assignments.AssignmentHints; +//import org.owasp.webgoat.assignments.AssignmentPath; +//import org.owasp.webgoat.assignments.AttackResult; +//import org.owasp.webgoat.session.UserSessionData; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.ResponseBody; +// +//import javax.servlet.ServletException; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.io.IOException; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +// +///** +// * Created by jason on 1/5/17. +// */ +// +//@AssignmentPath("/IDOR/viewprofile/{id}") +//@AssignmentHints({"idor.hints.otherProfile1","idor.hints.otherProfile2","idor.hints.otherProfile3"}) +//public class ViewOtherUserProfile extends AssignmentEndpoint { +// +// private String color; +// private String size; +// private boolean isAdmin; +// +// @Autowired +// UserSessionData userSessionData; +// +// @RequestMapping(produces = {"application/json"}) +// public @ResponseBody +// AttackResult completed(@PathVariable String userId, HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { +// List json = Lists.newArrayList(); +// // can be re-used +// Map errorMap = new HashMap(); +// errorMap.put("error","not logged in, go back and log in first"); +// +// if (userSessionData.getValue("idor-authenticated-as") == null) { +// json.add(errorMap); +// return trackProgress(failed().feedback("idor.view.other.profile.failure1").build()); +// } else { +// if (userSessionData.getValue("idor-authenticated-as").equals("bill") || userSessionData.getValue("idor-authenticated-as").equals("tom")) { +// System.out.println("**** authenticated as " + userSessionData.getValue("idor-authenticated-as")); +// //logged in +// String authUserId = (String)userSessionData.getValue("idor-authenticated-user-id"); +// //secure code would check to make sure authUserId matches userId or some similar access control +// // ... and in this endpoint, we won't bother with that +// UserProfile userProfile = new UserProfile(userId); +// return trackProgress(failed().feedback("idor.view.other.profile.failure2").build()); +// } +// } +// // else +// return trackProgress(failed().build()); +// } +// +// +// +// +//} diff --git a/webgoat-lessons/idor/src/main/resources/html/IDOR.html b/webgoat-lessons/idor/src/main/resources/html/IDOR.html index ead98411a..82fb3dcff 100644 --- a/webgoat-lessons/idor/src/main/resources/html/IDOR.html +++ b/webgoat-lessons/idor/src/main/resources/html/IDOR.html @@ -138,7 +138,7 @@