-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
/** | ||
* OWASP Benchmark v1.2 | ||
* | ||
* <p>This file is part of the Open Web Application Security Project (OWASP) Benchmark Project. For | ||
* details, please see <a | ||
* href="https://owasp.org/www-project-benchmark/">https://owasp.org/www-project-benchmark/</a>. | ||
* | ||
* <p>The OWASP Benchmark is free software: you can redistribute it and/or modify it under the terms | ||
* of the GNU General Public License as published by the Free Software Foundation, version 2. | ||
* | ||
* <p>The OWASP Benchmark is distributed in the hope that it will be useful, but WITHOUT ANY | ||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR | ||
* PURPOSE. See the GNU General Public License for more details. | ||
* | ||
* @author Dave Wichers | ||
* @created 2015 | ||
*/ | ||
package org.owasp.benchmark.testcode; | ||
|
||
import java.io.IOException; | ||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
@WebServlet(value = "/ldapi-00/BenchmarkTest00021") | ||
public class BenchmarkTest00021 extends HttpServlet { | ||
|
||
private static final long serialVersionUID = 1L; | ||
|
||
@Override | ||
public void doGet(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
doPost(request, response); | ||
} | ||
|
||
@Override | ||
public void doPost(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
// some code | ||
response.setContentType("text/html;charset=UTF-8"); | ||
|
||
String param = request.getParameter("BenchmarkTest00021"); | ||
if (param == null) param = ""; | ||
|
||
org.owasp.benchmark.helpers.LDAPManager ads = new org.owasp.benchmark.helpers.LDAPManager(); | ||
try { | ||
response.setContentType("text/html;charset=UTF-8"); | ||
javax.naming.directory.DirContext ctx = ads.getDirContext(); | ||
String base = "ou=users,ou=system"; | ||
javax.naming.directory.SearchControls sc = new javax.naming.directory.SearchControls(); | ||
sc.setSearchScope(javax.naming.directory.SearchControls.SUBTREE_SCOPE); | ||
String filter = "(&(objectclass=person))(|(uid=" + param + ")(street={0}))"; | ||
Object[] filters = new Object[] {"The streetz 4 Ms bar"}; | ||
// System.out.println("Filter " + filter); | ||
boolean found = false; | ||
javax.naming.NamingEnumeration<javax.naming.directory.SearchResult> results = | ||
ctx.search(base, filter, filters, sc); | ||
Check failure Code scanning / CodeQL LDAP query built from user-controlled sources Critical test
This LDAP query depends on a
user-provided value Error loading related location Loading |
||
while (results.hasMore()) { | ||
javax.naming.directory.SearchResult sr = | ||
(javax.naming.directory.SearchResult) results.next(); | ||
javax.naming.directory.Attributes attrs = sr.getAttributes(); | ||
|
||
javax.naming.directory.Attribute attr = attrs.get("uid"); | ||
javax.naming.directory.Attribute attr2 = attrs.get("street"); | ||
if (attr != null) { | ||
response.getWriter() | ||
.println( | ||
"LDAP query results:<br>" | ||
+ "Record found with name " | ||
+ attr.get() | ||
+ "<br>" | ||
+ "Address: " | ||
+ attr2.get() | ||
+ "<br>"); | ||
// System.out.println("record found " + attr.get()); | ||
found = true; | ||
} | ||
} | ||
if (!found) { | ||
response.getWriter() | ||
.println( | ||
"LDAP query results: nothing found for query: " | ||
+ org.owasp.esapi.ESAPI.encoder().encodeForHTML(filter)); | ||
Check warning Code scanning / CodeQL Cross-site scripting Medium test
Cross-site scripting vulnerability due to a
user-provided value Error loading related location Loading |
||
} | ||
} catch (javax.naming.NamingException e) { | ||
throw new ServletException(e); | ||
} finally { | ||
try { | ||
ads.closeDirContext(); | ||
} catch (Exception e) { | ||
throw new ServletException(e); | ||
} | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
/** | ||
* OWASP Benchmark v1.2 | ||
* | ||
* <p>This file is part of the Open Web Application Security Project (OWASP) Benchmark Project. For | ||
* details, please see <a | ||
* href="https://owasp.org/www-project-benchmark/">https://owasp.org/www-project-benchmark/</a>. | ||
* | ||
* <p>The OWASP Benchmark is free software: you can redistribute it and/or modify it under the terms | ||
* of the GNU General Public License as published by the Free Software Foundation, version 2. | ||
* | ||
* <p>The OWASP Benchmark is distributed in the hope that it will be useful, but WITHOUT ANY | ||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR | ||
* PURPOSE. See the GNU General Public License for more details. | ||
* | ||
* @author Dave Wichers | ||
* @created 2015 | ||
*/ | ||
package org.owasp.benchmark.testcode; | ||
|
||
import java.io.IOException; | ||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
@WebServlet(value = "/hash-00/BenchmarkTest00022") | ||
public class BenchmarkTest00022 extends HttpServlet { | ||
|
||
private static final long serialVersionUID = 1L; | ||
|
||
@Override | ||
public void doGet(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
doPost(request, response); | ||
} | ||
|
||
@Override | ||
public void doPost(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
// some code | ||
response.setContentType("text/html;charset=UTF-8"); | ||
|
||
String param = request.getParameter("BenchmarkTest00022"); | ||
if (param == null) param = ""; | ||
|
||
try { | ||
java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256"); | ||
byte[] input = {(byte) '?'}; | ||
Object inputParam = param; | ||
if (inputParam instanceof String) input = ((String) inputParam).getBytes(); | ||
if (inputParam instanceof java.io.InputStream) { | ||
byte[] strInput = new byte[1000]; | ||
int i = ((java.io.InputStream) inputParam).read(strInput); | ||
if (i == -1) { | ||
response.getWriter() | ||
.println( | ||
"This input source requires a POST, not a GET. Incompatible UI for the InputStream source."); | ||
return; | ||
} | ||
input = java.util.Arrays.copyOf(strInput, i); | ||
} | ||
md.update(input); | ||
|
||
byte[] result = md.digest(); | ||
java.io.File fileTarget = | ||
new java.io.File( | ||
new java.io.File(org.owasp.benchmark.helpers.Utils.TESTFILES_DIR), | ||
"passwordFile.txt"); | ||
java.io.FileWriter fw = | ||
new java.io.FileWriter(fileTarget, true); // the true will append the new data | ||
fw.write( | ||
"hash_value=" | ||
+ org.owasp.esapi.ESAPI.encoder().encodeForBase64(result, true) | ||
+ "\n"); | ||
fw.close(); | ||
response.getWriter() | ||
.println( | ||
"Sensitive value '" | ||
+ org.owasp | ||
.esapi | ||
.ESAPI | ||
.encoder() | ||
.encodeForHTML(new String(input)) | ||
+ "' hashed and stored<br/>"); | ||
Check warning Code scanning / CodeQL Cross-site scripting Medium test
Cross-site scripting vulnerability due to a
user-provided value Error loading related location Loading |
||
|
||
} catch (java.security.NoSuchAlgorithmException e) { | ||
System.out.println("Problem executing hash - TestCase"); | ||
throw new ServletException(e); | ||
} | ||
|
||
response.getWriter() | ||
.println( | ||
"Hash Test java.security.MessageDigest.getInstance(java.lang.String) executed"); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
/** | ||
* OWASP Benchmark v1.2 | ||
* | ||
* <p>This file is part of the Open Web Application Security Project (OWASP) Benchmark Project. For | ||
* details, please see <a | ||
* href="https://owasp.org/www-project-benchmark/">https://owasp.org/www-project-benchmark/</a>. | ||
* | ||
* <p>The OWASP Benchmark is free software: you can redistribute it and/or modify it under the terms | ||
* of the GNU General Public License as published by the Free Software Foundation, version 2. | ||
* | ||
* <p>The OWASP Benchmark is distributed in the hope that it will be useful, but WITHOUT ANY | ||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR | ||
* PURPOSE. See the GNU General Public License for more details. | ||
* | ||
* @author Dave Wichers | ||
* @created 2015 | ||
*/ | ||
package org.owasp.benchmark.testcode; | ||
|
||
import java.io.IOException; | ||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
@WebServlet(value = "/weakrand-00/BenchmarkTest00023") | ||
public class BenchmarkTest00023 extends HttpServlet { | ||
|
||
private static final long serialVersionUID = 1L; | ||
|
||
@Override | ||
public void doGet(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
doPost(request, response); | ||
} | ||
|
||
@Override | ||
public void doPost(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
// some code | ||
response.setContentType("text/html;charset=UTF-8"); | ||
|
||
String param = request.getParameter("BenchmarkTest00023"); | ||
if (param == null) param = ""; | ||
|
||
float rand = new java.util.Random().nextFloat(); | ||
String rememberMeKey = Float.toString(rand).substring(2); // Trim off the 0. at the front. | ||
|
||
String user = "Floyd"; | ||
String fullClassName = this.getClass().getName(); | ||
String testCaseNumber = | ||
fullClassName.substring( | ||
fullClassName.lastIndexOf('.') + 1 + "BenchmarkTest".length()); | ||
user += testCaseNumber; | ||
|
||
String cookieName = "rememberMe" + testCaseNumber; | ||
|
||
boolean foundUser = false; | ||
javax.servlet.http.Cookie[] cookies = request.getCookies(); | ||
if (cookies != null) { | ||
for (int i = 0; !foundUser && i < cookies.length; i++) { | ||
javax.servlet.http.Cookie cookie = cookies[i]; | ||
if (cookieName.equals(cookie.getName())) { | ||
if (cookie.getValue().equals(request.getSession().getAttribute(cookieName))) { | ||
foundUser = true; | ||
} | ||
} | ||
} | ||
} | ||
|
||
if (foundUser) { | ||
response.getWriter().println("Welcome back: " + user + "<br/>"); | ||
} else { | ||
javax.servlet.http.Cookie rememberMe = | ||
new javax.servlet.http.Cookie(cookieName, rememberMeKey); | ||
Check failure Code scanning / CodeQL Insecure randomness High test
Potential Insecure randomness due to a
Insecure randomness source. Error loading related location Loading |
||
rememberMe.setSecure(true); | ||
rememberMe.setHttpOnly(true); | ||
rememberMe.setDomain(new java.net.URL(request.getRequestURL().toString()).getHost()); | ||
rememberMe.setPath(request.getRequestURI()); // i.e., set path to JUST this servlet | ||
// e.g., /benchmark/sql-01/BenchmarkTest01001 | ||
request.getSession().setAttribute(cookieName, rememberMeKey); | ||
response.addCookie(rememberMe); | ||
response.getWriter() | ||
.println( | ||
user | ||
+ " has been remembered with cookie: " | ||
+ rememberMe.getName() | ||
+ " whose value is: " | ||
+ rememberMe.getValue() | ||
+ "<br/>"); | ||
Check warning Code scanning / CodeQL Cross-site scripting Medium test
Cross-site scripting vulnerability due to a
user-provided value Error loading related location Loading Cross-site scripting vulnerability due to a user-provided value Error loading related location Loading |
||
} | ||
|
||
response.getWriter().println("Weak Randomness Test java.util.Random.nextFloat() executed"); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/** | ||
* OWASP Benchmark v1.2 | ||
* | ||
* <p>This file is part of the Open Web Application Security Project (OWASP) Benchmark Project. For | ||
* details, please see <a | ||
* href="https://owasp.org/www-project-benchmark/">https://owasp.org/www-project-benchmark/</a>. | ||
* | ||
* <p>The OWASP Benchmark is free software: you can redistribute it and/or modify it under the terms | ||
* of the GNU General Public License as published by the Free Software Foundation, version 2. | ||
* | ||
* <p>The OWASP Benchmark is distributed in the hope that it will be useful, but WITHOUT ANY | ||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR | ||
* PURPOSE. See the GNU General Public License for more details. | ||
* | ||
* @author Dave Wichers | ||
* @created 2015 | ||
*/ | ||
package org.owasp.benchmark.testcode; | ||
|
||
import java.io.IOException; | ||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
|
||
@WebServlet(value = "/sqli-00/BenchmarkTest00024") | ||
public class BenchmarkTest00024 extends HttpServlet { | ||
|
||
private static final long serialVersionUID = 1L; | ||
|
||
@Override | ||
public void doGet(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
doPost(request, response); | ||
} | ||
|
||
@Override | ||
public void doPost(HttpServletRequest request, HttpServletResponse response) | ||
throws ServletException, IOException { | ||
// some code | ||
response.setContentType("text/html;charset=UTF-8"); | ||
|
||
String param = request.getParameter("BenchmarkTest00024"); | ||
if (param == null) param = ""; | ||
|
||
String sql = "SELECT * from USERS where USERNAME=? and PASSWORD='" + param + "'"; | ||
|
||
try { | ||
java.sql.Connection connection = | ||
org.owasp.benchmark.helpers.DatabaseHelper.getSqlConnection(); | ||
java.sql.PreparedStatement statement = | ||
connection.prepareStatement( | ||
sql, | ||
Check failure Code scanning / CodeQL Query built from user-controlled sources High test
This query depends on a
user-provided value Error loading related location Loading |
||
java.sql.ResultSet.TYPE_FORWARD_ONLY, | ||
java.sql.ResultSet.CONCUR_READ_ONLY, | ||
java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT); | ||
statement.setString(1, "foo"); | ||
statement.execute(); | ||
org.owasp.benchmark.helpers.DatabaseHelper.printResults(statement, sql, response); | ||
} catch (java.sql.SQLException e) { | ||
if (org.owasp.benchmark.helpers.DatabaseHelper.hideSQLErrors) { | ||
response.getWriter().println("Error processing request."); | ||
return; | ||
} else throw new ServletException(e); | ||
} | ||
} | ||
} |