Skip to content

Commit 437bcf7

Browse files
author
Dave Wichers
committed
Add 2 weak random test cases to this branch.
1 parent c8bc4de commit 437bcf7

File tree

2 files changed

+221
-0
lines changed

2 files changed

+221
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
/**
2+
* OWASP Benchmark Project v1.2
3+
*
4+
* <p>This file is part of the Open Web Application Security Project (OWASP) Benchmark Project. For
5+
* details, please see <a
6+
* href="https://owasp.org/www-project-benchmark/">https://owasp.org/www-project-benchmark/</a>.
7+
*
8+
* <p>The OWASP Benchmark is free software: you can redistribute it and/or modify it under the terms
9+
* of the GNU General Public License as published by the Free Software Foundation, version 2.
10+
*
11+
* <p>The OWASP Benchmark is distributed in the hope that it will be useful, but WITHOUT ANY
12+
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13+
* PURPOSE. See the GNU General Public License for more details.
14+
*
15+
* @author Nick Sanidas
16+
* @created 2015
17+
*/
18+
package org.owasp.benchmark.testcode;
19+
20+
import java.io.IOException;
21+
import javax.servlet.ServletException;
22+
import javax.servlet.annotation.WebServlet;
23+
import javax.servlet.http.HttpServlet;
24+
import javax.servlet.http.HttpServletRequest;
25+
import javax.servlet.http.HttpServletResponse;
26+
27+
@WebServlet(value = "/weakrand-01/Benchmark00898")
28+
public class Benchmark00898 extends HttpServlet {
29+
30+
private static final long serialVersionUID = 1L;
31+
32+
@Override
33+
public void doGet(HttpServletRequest request, HttpServletResponse response)
34+
throws ServletException, IOException {
35+
doPost(request, response);
36+
}
37+
38+
@Override
39+
public void doPost(HttpServletRequest request, HttpServletResponse response)
40+
throws ServletException, IOException {
41+
response.setContentType("text/html;charset=UTF-8");
42+
43+
org.owasp.benchmark.helpers.SeparateClassRequest scr =
44+
new org.owasp.benchmark.helpers.SeparateClassRequest(request);
45+
String param = scr.getTheValue("Benchmark00898");
46+
47+
String bar = "";
48+
if (param != null) {
49+
bar =
50+
new String(
51+
org.apache.commons.codec.binary.Base64.decodeBase64(
52+
org.apache.commons.codec.binary.Base64.encodeBase64(
53+
param.getBytes())));
54+
}
55+
56+
byte[] bytes = new byte[10];
57+
new java.util.Random().nextBytes(bytes);
58+
String rememberMeKey = org.owasp.esapi.ESAPI.encoder().encodeForBase64(bytes, true);
59+
60+
String user = "Byron";
61+
String fullClassName = this.getClass().getName();
62+
String testCaseNumber =
63+
fullClassName.substring(fullClassName.lastIndexOf('.') + 1 + "Benchmark".length());
64+
user += testCaseNumber;
65+
66+
String cookieName = "rememberMe" + testCaseNumber;
67+
68+
boolean foundUser = false;
69+
javax.servlet.http.Cookie[] cookies = request.getCookies();
70+
if (cookies != null) {
71+
for (int i = 0; !foundUser && i < cookies.length; i++) {
72+
javax.servlet.http.Cookie cookie = cookies[i];
73+
if (cookieName.equals(cookie.getName())) {
74+
if (cookie.getValue().equals(request.getSession().getAttribute(cookieName))) {
75+
foundUser = true;
76+
}
77+
}
78+
}
79+
}
80+
81+
if (foundUser) {
82+
response.getWriter().println("Welcome back: " + user + "<br/>");
83+
} else {
84+
javax.servlet.http.Cookie rememberMe =
85+
new javax.servlet.http.Cookie(cookieName, rememberMeKey);
86+
rememberMe.setSecure(true);
87+
rememberMe.setHttpOnly(true);
88+
rememberMe.setDomain(new java.net.URL(request.getRequestURL().toString()).getHost());
89+
rememberMe.setPath(request.getRequestURI()); // i.e., set path to JUST this servlet
90+
// e.g., /benchmark/sql-01/Benchmark01001
91+
request.getSession().setAttribute(cookieName, rememberMeKey);
92+
response.addCookie(rememberMe);
93+
response.getWriter()
94+
.println(
95+
user
96+
+ " has been remembered with cookie: "
97+
+ rememberMe.getName()
98+
+ " whose value is: "
99+
+ rememberMe.getValue()
100+
+ "<br/>");
101+
}
102+
103+
response.getWriter().println("Randomness java.util.Random.nextBytes() executed");
104+
}
105+
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
/**
2+
* OWASP Benchmark Project v1.2
3+
*
4+
* <p>This file is part of the Open Web Application Security Project (OWASP) Benchmark Project. For
5+
* details, please see <a
6+
* href="https://owasp.org/www-project-benchmark/">https://owasp.org/www-project-benchmark/</a>.
7+
*
8+
* <p>The OWASP Benchmark is free software: you can redistribute it and/or modify it under the terms
9+
* of the GNU General Public License as published by the Free Software Foundation, version 2.
10+
*
11+
* <p>The OWASP Benchmark is distributed in the hope that it will be useful, but WITHOUT ANY
12+
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13+
* PURPOSE. See the GNU General Public License for more details.
14+
*
15+
* @author Nick Sanidas
16+
* @created 2015
17+
*/
18+
package org.owasp.benchmark.testcode;
19+
20+
import java.io.IOException;
21+
import javax.servlet.ServletException;
22+
import javax.servlet.annotation.WebServlet;
23+
import javax.servlet.http.HttpServlet;
24+
import javax.servlet.http.HttpServletRequest;
25+
import javax.servlet.http.HttpServletResponse;
26+
27+
@WebServlet(value = "/weakrand-01/Benchmark00899")
28+
public class Benchmark00899 extends HttpServlet {
29+
30+
private static final long serialVersionUID = 1L;
31+
32+
@Override
33+
public void doGet(HttpServletRequest request, HttpServletResponse response)
34+
throws ServletException, IOException {
35+
doPost(request, response);
36+
}
37+
38+
@Override
39+
public void doPost(HttpServletRequest request, HttpServletResponse response)
40+
throws ServletException, IOException {
41+
response.setContentType("text/html;charset=UTF-8");
42+
43+
org.owasp.benchmark.helpers.SeparateClassRequest scr =
44+
new org.owasp.benchmark.helpers.SeparateClassRequest(request);
45+
String param = scr.getTheValue("Benchmark00899");
46+
47+
String bar;
48+
String guess = "ABC";
49+
char switchTarget = guess.charAt(1); // condition 'B', which is safe
50+
51+
// Simple case statement that assigns param to bar on conditions 'A', 'C', or 'D'
52+
switch (switchTarget) {
53+
case 'A':
54+
bar = param;
55+
break;
56+
case 'B':
57+
bar = "bob";
58+
break;
59+
case 'C':
60+
case 'D':
61+
bar = param;
62+
break;
63+
default:
64+
bar = "bob's your uncle";
65+
break;
66+
}
67+
68+
double value = new java.util.Random().nextDouble();
69+
String rememberMeKey = Double.toString(value).substring(2); // Trim off the 0. at the front.
70+
71+
String user = "Donna";
72+
String fullClassName = this.getClass().getName();
73+
String testCaseNumber =
74+
fullClassName.substring(fullClassName.lastIndexOf('.') + 1 + "Benchmark".length());
75+
user += testCaseNumber;
76+
77+
String cookieName = "rememberMe" + testCaseNumber;
78+
79+
boolean foundUser = false;
80+
javax.servlet.http.Cookie[] cookies = request.getCookies();
81+
if (cookies != null) {
82+
for (int i = 0; !foundUser && i < cookies.length; i++) {
83+
javax.servlet.http.Cookie cookie = cookies[i];
84+
if (cookieName.equals(cookie.getName())) {
85+
if (cookie.getValue().equals(request.getSession().getAttribute(cookieName))) {
86+
foundUser = true;
87+
}
88+
}
89+
}
90+
}
91+
92+
if (foundUser) {
93+
response.getWriter().println("Welcome back: " + user + "<br/>");
94+
} else {
95+
javax.servlet.http.Cookie rememberMe =
96+
new javax.servlet.http.Cookie(cookieName, rememberMeKey);
97+
rememberMe.setSecure(true);
98+
rememberMe.setHttpOnly(true);
99+
rememberMe.setDomain(new java.net.URL(request.getRequestURL().toString()).getHost());
100+
rememberMe.setPath(request.getRequestURI()); // i.e., set path to JUST this servlet
101+
// e.g., /benchmark/sql-01/Benchmark01001
102+
request.getSession().setAttribute(cookieName, rememberMeKey);
103+
response.addCookie(rememberMe);
104+
response.getWriter()
105+
.println(
106+
user
107+
+ " has been remembered with cookie: "
108+
+ rememberMe.getName()
109+
+ " whose value is: "
110+
+ rememberMe.getValue()
111+
+ "<br/>");
112+
}
113+
114+
response.getWriter().println("Randomness java.util.Random.nextDouble() executed");
115+
}
116+
}

0 commit comments

Comments
 (0)