owasp top10-2021 (#1235)
This commit is contained in:
parent
02c3f9551f
commit
b32240f96b
@ -39,36 +39,19 @@ public enum Category {
|
|||||||
INTRODUCTION("Introduction", 5),
|
INTRODUCTION("Introduction", 5),
|
||||||
GENERAL("General", 100),
|
GENERAL("General", 100),
|
||||||
|
|
||||||
INJECTION("(A1) Injection", 300),
|
A1("(A1) Broken Access Control", 301),
|
||||||
AUTHENTICATION("(A2) Broken Authentication", 302),
|
A2("(A2) Cryptographic Failures", 302),
|
||||||
INSECURE_COMMUNICATION("(A3) Sensitive Data Exposure", 303),
|
A3("(A3) Injection", 303),
|
||||||
XXE("(A4) XML External Entities (XXE)", 304),
|
|
||||||
ACCESS_CONTROL("(A5) Broken Access Control", 305),
|
|
||||||
|
|
||||||
XSS("(A7) Cross-Site Scripting (XSS)", 307),
|
A5("(A5) Security Misconfiguration", 305),
|
||||||
INSECURE_DESERIALIZATION("(A8) Insecure Deserialization", 308),
|
A6("(A6) Vuln & Outdated Components", 306),
|
||||||
VULNERABLE_COMPONENTS("(A9) Vulnerable Components", 309),
|
A7("(A7) Identity & Auth Failure", 307),
|
||||||
SESSION_MANAGEMENT("(A10) Session Management Flaws", 310),
|
A8("(A8) Software & Data Integrity", 308),
|
||||||
|
A9("(A9) Security Logging Failures", 309),
|
||||||
|
A10("(A10) Server-side Request Forgery", 310),
|
||||||
|
|
||||||
REQUEST_FORGERIES("(A8:2013) Request Forgeries", 318),
|
|
||||||
|
|
||||||
|
|
||||||
REQ_FORGERIES("Request Forgeries", 450),
|
|
||||||
|
|
||||||
INSECURE_CONFIGURATION("Insecure Configuration", 600),
|
|
||||||
INSECURE_STORAGE("Insecure Storage", 800),
|
|
||||||
|
|
||||||
|
|
||||||
AJAX_SECURITY("AJAX Security", 1000),
|
|
||||||
BUFFER_OVERFLOW("Buffer Overflows", 1100),
|
|
||||||
CODE_QUALITY("Code Quality", 1200),
|
|
||||||
CONCURRENCY("Concurrency", 1300),
|
|
||||||
ERROR_HANDLING("Improper Error Handling", 1400),
|
|
||||||
DOS("Denial of Service", 1500),
|
|
||||||
MALICIOUS_EXECUTION("Malicious Execution", 1600),
|
|
||||||
CLIENT_SIDE("Client side", 1700),
|
CLIENT_SIDE("Client side", 1700),
|
||||||
WEB_SERVICES("Web Services", 1900),
|
|
||||||
ADMIN_FUNCTIONS("Admin Functions", 2000),
|
|
||||||
CHALLENGE("Challenges", 3000);
|
CHALLENGE("Challenges", 3000);
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -31,7 +31,7 @@ public class AuthBypass extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.AUTHENTICATION;
|
return Category.A7;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,7 +30,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class Cryptography extends Lesson {
|
public class Cryptography extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.GENERAL;
|
return Category.A2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,7 +33,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class CSRF extends Lesson {
|
public class CSRF extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.REQUEST_FORGERIES;
|
return Category.A10;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,7 +37,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class InsecureDeserialization extends Lesson {
|
public class InsecureDeserialization extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.INSECURE_DESERIALIZATION;
|
return Category.A8;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -38,7 +38,7 @@ public class HijackSession extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.SESSION_MANAGEMENT;
|
return Category.A1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -38,7 +38,7 @@ public class IDOR extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.ACCESS_CONTROL;
|
return Category.A1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,7 +37,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class InsecureLogin extends Lesson {
|
public class InsecureLogin extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.INSECURE_COMMUNICATION;
|
return Category.A7;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -35,7 +35,7 @@ public class JWT extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.AUTHENTICATION;
|
return Category.A7;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,7 +37,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class LogSpoofing extends Lesson {
|
public class LogSpoofing extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.INSECURE_CONFIGURATION;
|
return Category.A9;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,7 +34,7 @@ public class MissingFunctionAC extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.ACCESS_CONTROL;
|
return Category.A1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,7 +30,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class PasswordReset extends Lesson {
|
public class PasswordReset extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.AUTHENTICATION;
|
return Category.A7;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -31,7 +31,7 @@ public class PathTraversal extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.INJECTION;
|
return Category.A3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -35,7 +35,7 @@ public class SecurePasswords extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.AUTHENTICATION;
|
return Category.A7;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,7 +37,7 @@ public class SpoofCookie extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.SESSION_MANAGEMENT;
|
return Category.A1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,7 +30,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class SqlInjectionAdvanced extends Lesson {
|
public class SqlInjectionAdvanced extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.INJECTION;
|
return Category.A3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,7 +30,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class SqlInjection extends Lesson {
|
public class SqlInjection extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.INJECTION;
|
return Category.A3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,7 +30,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class SqlInjectionMitigations extends Lesson {
|
public class SqlInjectionMitigations extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.INJECTION;
|
return Category.A3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,7 +37,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class SSRF extends Lesson {
|
public class SSRF extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.REQUEST_FORGERIES;
|
return Category.A10;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,7 +30,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class VulnerableComponents extends Lesson {
|
public class VulnerableComponents extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.VULNERABLE_COMPONENTS;
|
return Category.A6;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,7 +30,7 @@ import org.springframework.stereotype.Component;
|
|||||||
public class CrossSiteScripting extends Lesson {
|
public class CrossSiteScripting extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.XSS;
|
return Category.A3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -28,7 +28,7 @@ import org.owasp.webgoat.container.lessons.Lesson;
|
|||||||
public class CrossSiteScriptingMitigation extends Lesson {
|
public class CrossSiteScriptingMitigation extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.XSS;
|
return Category.A3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -28,7 +28,7 @@ import org.owasp.webgoat.container.lessons.Lesson;
|
|||||||
public class CrossSiteScriptingStored extends Lesson {
|
public class CrossSiteScriptingStored extends Lesson {
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.XSS;
|
return Category.A3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -31,7 +31,7 @@ public class XXE extends Lesson {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.XXE;
|
return Category.A5;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -77,7 +77,7 @@ public class LessonMenuServiceTest {
|
|||||||
when(l2.getTitle()).thenReturn("AA");
|
when(l2.getTitle()).thenReturn("AA");
|
||||||
when(lessonTracker.isLessonSolved()).thenReturn(false);
|
when(lessonTracker.isLessonSolved()).thenReturn(false);
|
||||||
when(course.getLessons(any())).thenReturn(Lists.newArrayList(l1, l2));
|
when(course.getLessons(any())).thenReturn(Lists.newArrayList(l1, l2));
|
||||||
when(course.getCategories()).thenReturn(Lists.newArrayList(Category.ACCESS_CONTROL));
|
when(course.getCategories()).thenReturn(Lists.newArrayList(Category.A1));
|
||||||
when(userTracker.getLessonTracker(any(Lesson.class))).thenReturn(lessonTracker);
|
when(userTracker.getLessonTracker(any(Lesson.class))).thenReturn(lessonTracker);
|
||||||
when(userTrackerRepository.findByUser(any())).thenReturn(userTracker);
|
when(userTrackerRepository.findByUser(any())).thenReturn(userTracker);
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ public class LessonMenuServiceTest {
|
|||||||
when(l1.getTitle()).thenReturn("ZA");
|
when(l1.getTitle()).thenReturn("ZA");
|
||||||
when(lessonTracker.isLessonSolved()).thenReturn(true);
|
when(lessonTracker.isLessonSolved()).thenReturn(true);
|
||||||
when(course.getLessons(any())).thenReturn(Lists.newArrayList(l1));
|
when(course.getLessons(any())).thenReturn(Lists.newArrayList(l1));
|
||||||
when(course.getCategories()).thenReturn(Lists.newArrayList(Category.ACCESS_CONTROL));
|
when(course.getCategories()).thenReturn(Lists.newArrayList(Category.A1));
|
||||||
when(userTracker.getLessonTracker(any(Lesson.class))).thenReturn(lessonTracker);
|
when(userTracker.getLessonTracker(any(Lesson.class))).thenReturn(lessonTracker);
|
||||||
when(userTrackerRepository.findByUser(any())).thenReturn(userTracker);
|
when(userTrackerRepository.findByUser(any())).thenReturn(userTracker);
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ class UserTrackerRepositoryTest {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Category getDefaultCategory() {
|
public Category getDefaultCategory() {
|
||||||
return Category.AJAX_SECURITY;
|
return Category.CLIENT_SIDE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -26,8 +26,6 @@ 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.vulnerable_components.Contact;
|
|
||||||
import org.owasp.webgoat.lessons.vulnerable_components.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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user