Tomcat是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行。Apache Tomcat服务器存在文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件或源代码等。
tomcat默认的conf/server.xml中配置了2个Connector,一个为8080的对外提供的HTTP协议端口,另外一个就是默认的8009 AJP协议端口,两个端口默认均监听在外网ip。
一、Aapache Tomcat AJP 文件包含漏洞(CVE-2020-1938)
如果直接访问的8009端口的话访问不到,所以我们需要通过一个py脚本去访问8009下边的目录
payload:python2 CNVD-2020-10487-Tomcat-Ajp-lfi\(1\).py 192.168.44.145 -p 8009 -f WEB-INF/web.xml
在docker容器中新建一个文件
然后使用叫脚本读取
二、Tomcat session持久化漏洞
服务器会将session对象存储到文件系统或者数据库中,这就是session的持久化,session持久化时,数据以序列化的方式存储,如果要调用对象时会将其反序列化,要是过滤不严格时会产生反序列化漏洞。
当Tomcat使用了自带session同步功能时,使用不安全的配置(没有使用EncryptInterceptor)会存在反序列化漏洞,攻击者通过精心构造的数据包, 可以对使用了自带session同步功能的Tomcat服务器进行攻击
利用该漏洞的前提利用
1.攻击者能够控制服务器上文件的内容和文件名称(目的上传session文件)
2.服务器PersistenceManager配置中使用了FileStore
3.PersistenceManager中的sessionAttributeValueClassNameFilter被配置为 “null”,或者过滤器不够严格,导致允许攻击者提供反序列化数据的对象
4.攻击者知道使用的FileStore存储位置到攻击者可控文件的相对路径
漏洞复现步骤
cd CVE-2020-9484 进入该容器
docker build -t tomcat:groovy . 下载镜像
docker run -d -p 8080:8080 tomcat:groovy
5.在漏洞环境中存放着执行”touch /tmp/rce”命令的groovy.session文件,因此我们只要反序列化这个文件就能执行命令了
进行bp抓包,查看文件
查看文件位置
三、Apache Tomcat7+ 弱口令 && 后台getshell漏洞
访问后台输入账号和密码进行登录:/manager/html,抓包查看账号密码都在Authorization字段,并且使用base64进行加密。
使用msf爆破tomcat后台
(1)开启msf :msfconsole
(2)搜索tomcat search tomcat
(3)利用该模块
(4)显示参数
(5)设置IP,端口
,然后开始攻击