package ysoserial.payloads;
import java.util.concurrent.Callable;
import javax.management.BadAttributeValueExpException;
import org.junit.Assert;
import ysoserial.CustomTest;
import ysoserial.exploit.JRMPListener;
/**
* @author mbechler
*
*/
public class JRMPReverseConnectTest implements CustomTest {
private int port;
/**
*
*/
public JRMPReverseConnectTest () {
// some payloads cannot specify the port
port = 1099;
}
public void run ( Callable<Object> payload ) throws Exception {
JRMPListener l = new JRMPListener(port, new BadAttributeValueExpException("foo"));
Thread t = new Thread(l, "JRMP listener");
try {
t.start();
try {
payload.call();
}
catch ( Exception e ) {
// ignore
}
Assert.assertTrue("Did not have connection", l.waitFor(1000));
}
finally {
l.close();
t.interrupt();
t.join();
}
}
public String getPayloadArgs () {
return "rmi:localhost:" + port;
}
}