Path: blob/master/external/source/exploits/CVE-2015-8103/ExecBlockingSecurityManager.java
19534 views
package ysoserial;12import java.security.Permission;3import java.util.concurrent.Callable;45public class ExecBlockingSecurityManager extends SecurityManager {6@Override7public void checkPermission(final Permission perm) { }89@Override10public void checkPermission(final Permission perm, final Object context) { }1112public void checkExec(final String cmd) {13super.checkExec(cmd);14// throw a special exception to ensure we can detect exec() in the test15throw new ExecException(cmd);16};1718@SuppressWarnings("serial")19public static class ExecException extends RuntimeException {20private final String cmd;21public ExecException(String cmd) { this.cmd = cmd; }22public String getCmd() { return cmd; }23}2425public static void wrap(final Runnable runnable) throws Exception {26wrap(new Callable<Void>(){27public Void call() throws Exception {28runnable.run();29return null;30}31});32}3334public static <T> T wrap(final Callable<T> callable) throws Exception {35SecurityManager sm = System.getSecurityManager();36System.setSecurityManager(new ExecBlockingSecurityManager());37try {38return callable.call();39} finally {40System.setSecurityManager(sm);41}42}43}4445