mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-23 23:41:52 +08:00
feat: support servletNameFilter for GlassFishFilterProbe
This commit is contained in:
+66
-49
@@ -10,78 +10,92 @@ import java.util.*;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
*/
|
*/
|
||||||
public class GlassFishFilterProbe {
|
public class GlassFishFilterProbe {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
String msg = "";
|
StringBuilder msg = new StringBuilder();
|
||||||
Map<String, List<Map<String, String>>> allFiltersData = new LinkedHashMap<String, List<Map<String, String>>>();
|
Map<String, List<Map<String, String>>> allFiltersData = new LinkedHashMap<String, List<Map<String, String>>>();
|
||||||
Set<Object> contexts = null;
|
Set<Object> contexts = null;
|
||||||
try {
|
try {
|
||||||
contexts = getContext();
|
contexts = getContext();
|
||||||
} catch (Throwable throwable) {
|
} catch (Throwable throwable) {
|
||||||
msg += "context error: " + getErrorMessage(throwable);
|
msg.append("context error: ").append(getErrorMessage(throwable));
|
||||||
}
|
}
|
||||||
if (contexts == null || contexts.isEmpty()) {
|
if (contexts == null || contexts.isEmpty()) {
|
||||||
msg += "context not found\n";
|
msg.append("context not found\n");
|
||||||
} else {
|
} else {
|
||||||
for (Object context : contexts) {
|
for (Object context : contexts) {
|
||||||
String contextRoot = getContextRoot(context);
|
String contextRoot = getContextRoot(context);
|
||||||
List<Map<String, String>> filters = collectFiltersData(context);
|
try {
|
||||||
allFiltersData.put(contextRoot, filters);
|
List<Map<String, String>> filters = collectFiltersData(context);
|
||||||
|
allFiltersData.put(contextRoot, filters);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
msg.append(contextRoot).append(" failed ").append(getErrorMessage(e)).append("\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
msg += formatFiltersData(allFiltersData);
|
msg.append(formatFiltersData(allFiltersData));
|
||||||
}
|
}
|
||||||
return msg;
|
return msg.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Map<String, String>> collectFiltersData(Object context) {
|
@SuppressWarnings("unchecked")
|
||||||
|
private List<Map<String, String>> collectFiltersData(Object context) throws Exception {
|
||||||
Map<String, Map<String, Object>> aggregatedData = new LinkedHashMap<>();
|
Map<String, Map<String, Object>> aggregatedData = new LinkedHashMap<>();
|
||||||
|
|
||||||
try {
|
List filterMaps = (List) invokeMethod(context, "findFilterMaps");
|
||||||
List filterMaps = (List) invokeMethod(context, "findFilterMaps");
|
if (filterMaps == null || filterMaps.isEmpty()) return Collections.emptyList();
|
||||||
if (filterMaps == null || filterMaps.isEmpty()) return Collections.emptyList();
|
|
||||||
|
|
||||||
Object[] filterDefs = (Object[]) invokeMethod(context, "findFilterDefs");
|
Object[] filterDefs = (Object[]) invokeMethod(context, "findFilterDefs");
|
||||||
for (Object fm : filterMaps) {
|
|
||||||
String name = (String) invokeMethod(fm, "getFilterName");
|
for (Object fm : filterMaps) {
|
||||||
if (name == null) continue;
|
String name = (String) invokeMethod(fm, "getFilterName");
|
||||||
if (!aggregatedData.containsKey(name)) {
|
if (name == null) continue;
|
||||||
String filterClass = "N/A";
|
if (!aggregatedData.containsKey(name)) {
|
||||||
if (filterDefs != null) {
|
String filterClass = "N/A";
|
||||||
for (Object def : filterDefs) {
|
if (filterDefs != null) {
|
||||||
if (!name.equals(invokeMethod(def, "getFilterName"))) continue;
|
Object filterDef = invokeMethod(context, "findFilterDef", new Class[]{String.class}, new Object[]{name});
|
||||||
Class<?> cls = (Class<?>) invokeMethod(def, "getFilterClass");
|
|
||||||
if (cls == null) {
|
|
||||||
Object config = invokeMethod(context, "findFilterConfig", new Class[]{String.class}, new Object[]{name});
|
|
||||||
Object filter = config != null ? invokeMethod(config, "getFilter") : null;
|
|
||||||
if (filter != null) filterClass = filter.getClass().getName();
|
|
||||||
}
|
|
||||||
if (cls != null) filterClass = cls.getName();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Map<String, Object> info = new HashMap<>();
|
|
||||||
info.put("filterName", name);
|
|
||||||
info.put("filterClass", filterClass);
|
|
||||||
info.put("urlPatterns", new LinkedHashSet<String>());
|
|
||||||
info.put("servletNames", new LinkedHashSet<String>());
|
|
||||||
aggregatedData.put(name, info);
|
|
||||||
}
|
|
||||||
Map<String, Object> info = aggregatedData.get(name);
|
|
||||||
String[] urls = null;
|
|
||||||
try {
|
|
||||||
urls = (String[]) invokeMethod(fm, "getURLPatterns");
|
|
||||||
} catch (Exception e) {
|
|
||||||
try {
|
try {
|
||||||
Object urlPattern = invokeMethod(fm, "getURLPattern");
|
filterClass = (String) invokeMethod(filterDef, "getFilterClass");
|
||||||
if (urlPattern instanceof String) {
|
} catch (Throwable throwable) {
|
||||||
urls = new String[] { (String) urlPattern };
|
filterClass = (String) invokeMethod(filterDef, "getFilterClassName");
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {
|
if (filterClass == null) {
|
||||||
|
Object filterConfig = invokeMethod(context, "findFilterConfig", new Class[]{String.class}, new Object[]{name});
|
||||||
|
Object filter = invokeMethod(filterConfig, "getFilter");
|
||||||
|
if (filter != null) filterClass = filter.getClass().getName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (urls != null) ((Set<String>) info.get("urlPatterns")).addAll(Arrays.asList(urls));
|
Map<String, Object> info = new HashMap<>();
|
||||||
|
info.put("filterName", name);
|
||||||
|
info.put("filterClass", filterClass);
|
||||||
|
info.put("urlPatterns", new LinkedHashSet<String>());
|
||||||
|
info.put("servletNames", new LinkedHashSet<String>());
|
||||||
|
aggregatedData.put(name, info);
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {}
|
Map<String, Object> info = aggregatedData.get(name);
|
||||||
|
String[] urls = null;
|
||||||
|
try {
|
||||||
|
urls = (String[]) invokeMethod(fm, "getURLPatterns");
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Tomcat 5
|
||||||
|
String urlPattern = (String) invokeMethod(fm, "getURLPattern");
|
||||||
|
if (urlPattern != null) {
|
||||||
|
urls = new String[]{urlPattern};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (urls != null) ((Set<String>) info.get("urlPatterns")).addAll(Arrays.asList(urls));
|
||||||
|
String[] servletNames = null;
|
||||||
|
try {
|
||||||
|
servletNames = (String[]) invokeMethod(fm, "getServletNames");
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Tomcat 5
|
||||||
|
String servletName = (String) invokeMethod(fm, "getServletName");
|
||||||
|
if (servletName != null) {
|
||||||
|
servletNames = new String[]{servletName};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (servletNames != null) ((Set<String>) info.get("servletNames")).addAll(Arrays.asList(servletNames));
|
||||||
|
}
|
||||||
List<Map<String, String>> result = new ArrayList<>();
|
List<Map<String, String>> result = new ArrayList<>();
|
||||||
for (Map<String, Object> entry : aggregatedData.values()) {
|
for (Map<String, Object> entry : aggregatedData.values()) {
|
||||||
Map<String, String> finalInfo = new HashMap<>();
|
Map<String, String> finalInfo = new HashMap<>();
|
||||||
@@ -89,6 +103,8 @@ public class GlassFishFilterProbe {
|
|||||||
finalInfo.put("filterClass", (String) entry.get("filterClass"));
|
finalInfo.put("filterClass", (String) entry.get("filterClass"));
|
||||||
Set<?> urls = (Set<?>) entry.get("urlPatterns");
|
Set<?> urls = (Set<?>) entry.get("urlPatterns");
|
||||||
finalInfo.put("urlPatterns", urls.isEmpty() ? "" : urls.toString());
|
finalInfo.put("urlPatterns", urls.isEmpty() ? "" : urls.toString());
|
||||||
|
Set<?> servletNames = (Set<?>) entry.get("servletNames");
|
||||||
|
finalInfo.put("servletNames", servletNames.isEmpty() ? "" : servletNames.toString());
|
||||||
result.add(finalInfo);
|
result.add(finalInfo);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -111,6 +127,7 @@ public class GlassFishFilterProbe {
|
|||||||
appendIfPresent(output, "", info.get("filterName"), "");
|
appendIfPresent(output, "", info.get("filterName"), "");
|
||||||
appendIfPresent(output, " -> ", info.get("filterClass"), "");
|
appendIfPresent(output, " -> ", info.get("filterClass"), "");
|
||||||
appendIfPresent(output, " -> URL:", info.get("urlPatterns"), "");
|
appendIfPresent(output, " -> URL:", info.get("urlPatterns"), "");
|
||||||
|
appendIfPresent(output, " -> Servlet:", info.get("servletNames"), "");
|
||||||
output.append("\n");
|
output.append("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-2
@@ -74,7 +74,10 @@ public class TomcatFilterProbe {
|
|||||||
urls = (String[]) invokeMethod(fm, "getURLPatterns");
|
urls = (String[]) invokeMethod(fm, "getURLPatterns");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// Tomcat 5
|
// Tomcat 5
|
||||||
urls = new String[]{(String) invokeMethod(fm, "getURLPattern")};
|
String urlPattern = (String) invokeMethod(fm, "getURLPattern");
|
||||||
|
if (urlPattern != null) {
|
||||||
|
urls = new String[]{urlPattern};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (urls != null) ((Set<String>) info.get("urlPatterns")).addAll(Arrays.asList(urls));
|
if (urls != null) ((Set<String>) info.get("urlPatterns")).addAll(Arrays.asList(urls));
|
||||||
String[] servletNames = null;
|
String[] servletNames = null;
|
||||||
@@ -82,7 +85,10 @@ public class TomcatFilterProbe {
|
|||||||
servletNames = (String[]) invokeMethod(fm, "getServletNames");
|
servletNames = (String[]) invokeMethod(fm, "getServletNames");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// Tomcat 5
|
// Tomcat 5
|
||||||
servletNames = new String[]{(String) invokeMethod(fm, "getServletName")};
|
String servletName = (String) invokeMethod(fm, "getServletName");
|
||||||
|
if (servletName != null) {
|
||||||
|
servletNames = new String[]{servletName};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (servletNames != null) ((Set<String>) info.get("servletNames")).addAll(Arrays.asList(servletNames));
|
if (servletNames != null) ((Set<String>) info.get("servletNames")).addAll(Arrays.asList(servletNames));
|
||||||
}
|
}
|
||||||
|
|||||||
-12
@@ -35,14 +35,6 @@ public class DetectionTool {
|
|||||||
return getBase64Class(ServerProbe.class);
|
return getBase64Class(ServerProbe.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getTomcatFilterProbe() {
|
|
||||||
return getBase64Class(TomcatFilterProbe.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getJettyFilterProbe() {
|
|
||||||
return getBase64Class(JettyFilterProbe.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getResinFilterProbe() {
|
public static String getResinFilterProbe() {
|
||||||
return getBase64Class(ResinFilterProbe.class);
|
return getBase64Class(ResinFilterProbe.class);
|
||||||
}
|
}
|
||||||
@@ -51,10 +43,6 @@ public class DetectionTool {
|
|||||||
return getBase64Class(UndertowFilterProbe.class);
|
return getBase64Class(UndertowFilterProbe.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getGlassFishFilterProbe() {
|
|
||||||
return getBase64Class(GlassFishFilterProbe.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getApusicFilterProbe() {
|
public static String getApusicFilterProbe() {
|
||||||
return getBase64Class(ApusicFilterProbe.class);
|
return getBase64Class(ApusicFilterProbe.class);
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.glassfish;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -94,20 +97,17 @@ public class GlassFish3ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("EmptyFilter")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.glassfish;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -94,20 +97,17 @@ public class GlassFish4ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("EmptyFilter")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.glassfish;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -87,20 +90,17 @@ public class GlassFish501ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("EmptyFilter")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.glassfish;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -88,20 +91,17 @@ public class GlassFish510ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("EmptyFilter")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.glassfish;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -88,20 +91,17 @@ public class GlassFish6ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("EmptyFilter")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V11, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V11, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.glassfish;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -94,20 +97,17 @@ public class GlassFish7ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("EmptyFilter")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V17, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V17, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -94,7 +94,7 @@ public class Jboss423ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.JBoss, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.JBoss, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -92,7 +92,7 @@ public class Jboss510ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.JBoss, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.JBoss, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -92,7 +92,7 @@ public class Jboss610ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.JBoss, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.JBoss, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -92,7 +92,7 @@ public class Jboss711ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.JBoss, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.JBoss, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -97,7 +97,7 @@ public class Jetty10ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V11, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V11, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -98,7 +98,7 @@ public class Jetty11ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V17, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V17, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -83,7 +83,7 @@ public class Jetty12ee10ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.Jetty, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
shellInjectIsOk(url, Server.Jetty, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith("org.eclipse.jetty.servlet.handlers")));
|
assertThat(filterName, anyOf(startsWith("org.eclipse.jetty.servlet.handlers")));
|
||||||
|
|||||||
+1
-1
@@ -83,7 +83,7 @@ public class Jetty12ee11ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.Jetty, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
shellInjectIsOk(url, Server.Jetty, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith("org.eclipse.jetty.servlet.handlers")));
|
assertThat(filterName, anyOf(startsWith("org.eclipse.jetty.servlet.handlers")));
|
||||||
|
|||||||
+1
-1
@@ -90,7 +90,7 @@ public class Jetty12ee8ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -83,7 +83,7 @@ public class Jetty12ee9ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.Jetty, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
shellInjectIsOk(url, Server.Jetty, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith("org.eclipse.jetty.servlet.handlers")));
|
assertThat(filterName, anyOf(startsWith("org.eclipse.jetty.servlet.handlers")));
|
||||||
|
|||||||
+1
-1
@@ -95,7 +95,7 @@ public class Jetty61ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -89,7 +89,7 @@ public class Jetty75ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -91,7 +91,7 @@ public class Jetty76ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -91,7 +91,7 @@ public class Jetty81ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -92,7 +92,7 @@ public class Jetty92ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -91,7 +91,7 @@ public class Jetty93ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -91,7 +91,7 @@ public class Jetty94ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Jetty, ShellType.FILTER, ShellTool.Command, org.objectweb.asm.Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getJettyFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Jetty));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.payara;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -93,20 +96,17 @@ public class Payara5201ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("Context: ")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.payara;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -87,20 +90,17 @@ public class Payara520225ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("Context: ")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -2,11 +2,14 @@ package com.reajason.javaweb.integration.probe.payara;
|
|||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
|
import com.reajason.javaweb.integration.ShellAssertion;
|
||||||
import com.reajason.javaweb.integration.VulTool;
|
import com.reajason.javaweb.integration.VulTool;
|
||||||
import com.reajason.javaweb.integration.probe.DetectionTool;
|
import com.reajason.javaweb.integration.probe.DetectionTool;
|
||||||
|
import com.reajason.javaweb.memshell.MemShellResult;
|
||||||
import com.reajason.javaweb.memshell.ShellTool;
|
import com.reajason.javaweb.memshell.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.packer.Packers;
|
import com.reajason.javaweb.packer.Packers;
|
||||||
|
import com.reajason.javaweb.probe.payload.FilterProbeFactory;
|
||||||
import com.reajason.javaweb.utils.CommonUtil;
|
import com.reajason.javaweb.utils.CommonUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -88,20 +91,17 @@ public class Payara620222ContainerTest {
|
|||||||
@Test
|
@Test
|
||||||
void testFilterProbe() {
|
void testFilterProbe() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
System.out.println(data);
|
ShellAssertion.assertFilterProbeIsRight(data);
|
||||||
assertThat(data, anyOf(
|
|
||||||
containsString("Context: ")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
shellInjectIsOk(url, Server.GlassFish, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V11, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.GlassFish, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V11, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getGlassFishFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.GlassFish));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertThat(filterName, anyOf(startsWith(CommonUtil.getWebPackageNameForServer(Server.GlassFish))));
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -103,7 +103,7 @@ public class Tomcat10ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V11, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V11, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
log.info(data);
|
log.info(data);
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
|
|||||||
+1
-1
@@ -93,7 +93,7 @@ public class Tomcat11ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V17, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V17, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
log.info(data);
|
log.info(data);
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
|
|||||||
+1
-1
@@ -91,7 +91,7 @@ public class Tomcat11JRE21ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.JAKARTA_FILTER, ShellTool.Command, Opcodes.V21, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
log.info(data);
|
log.info(data);
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
|
|||||||
+1
-1
@@ -108,7 +108,7 @@ public class Tomcat5ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -99,7 +99,7 @@ public class Tomcat6ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -101,7 +101,7 @@ public class Tomcat7ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -103,7 +103,7 @@ public class Tomcat8ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
+1
-1
@@ -93,7 +93,7 @@ public class Tomcat9ContainerTest {
|
|||||||
void testFilterFirstInject() {
|
void testFilterFirstInject() {
|
||||||
String url = getUrl(container);
|
String url = getUrl(container);
|
||||||
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
MemShellResult memShellResult = shellInjectIsOk(url, Server.Tomcat, ShellType.FILTER, ShellTool.Command, Opcodes.V1_6, Packers.BigInteger, container);
|
||||||
String data = VulTool.post(url + "/b64", DetectionTool.getTomcatFilterProbe());
|
String data = VulTool.post(url + "/b64", FilterProbeFactory.getBase64ByServer(Server.Tomcat));
|
||||||
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
List<String> filter = ProbeAssertion.getFiltersForContext(data, "/app");
|
||||||
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
String filterName = ProbeAssertion.extractFilterName(filter.get(0));
|
||||||
assertEquals(filterName, memShellResult.getShellClassName());
|
assertEquals(filterName, memShellResult.getShellClassName());
|
||||||
|
|||||||
Reference in New Issue
Block a user