Gentle_knife's Studio.

Tomcat,JSP,servlet,war——[WUSTCTF 2020]train yourself to be godly

Word count: 1.3kReading time: 4 min
2025/07/16
loading

JAVA前置概念小记

这个题目就是可以通过 /..;/manager/html 路径穿越进入到manager页面,然后弱口令登录,带着Authorization 和之前的 Cookie 上传一个 LandGrey 的 jsp 木马打包成的 war,最后按照下面的逻辑访问马。

因为war包叫test2.war,里面的内容是2.jsp,所以访问**/..;/test2/2.jsp**即可。

GitHub - LandGrey/webshell-detect-bypass: 绕过专业工具检测的Webshell研究文章和免杀的Webshell

[WUSTCTF2020]WEB做题记录 – 「配枪朱丽叶。」

[WUST-CTF]Web WriteUp - Ye’sBlog - 博客园

WUSTCTF&MRCTF部分web题解 - byc_404’s blog

WUST-CTF 2020 官方 Writeup

你需要搞清楚的问题是:

1.Tomcat 是什么?

2.弱口令的洞是哪个 CVE?

3.这个目录穿越的原理是什么(好像是前后端不一致,总之写一下)

相关知识了解

Tomcat 是什么?

Tomcat 是一个 web 容器,是一个 专门运行 Web 程序的一个软件环境,是一个内置 HTTP 服务的服务器程序。它能接收用户访问请求(比如 /index.jsp);能调用 JVM,运行你写的 Java 后端逻辑,然后把结果返回成网页给浏览器。

一言以蔽之,你写好网站后,把它部署到 Tomcat 中,网站就能运行了。

Servlet 是什么?

Servlet 是 Java 写的后台程序,专门用来处理浏览器发过来的请求。它运行在服务器端,返回 HTML 页面、数据等。那么 servlet 如何创建?这时候 Tomcat 出场了,它就是帮助你创建 servlet 的东西,所以也称 web 容器,没有它,没法运行 web 项目。

其他 web 容器也可以运行 servlet,比如:JBoss(现在叫 WildFly,WebLogic(Oracle 的企业级容器)

JSP 是什么?

JSP(Java Server Pages)是可以写 Java 代码的网页。

它本质上就是一个 特殊的 HTML 页面,你可以在 HTML 里面写 Java 代码。

我们来看一个非常简单的 JSP 页面:

1
2
3
4
5
6
<html>
<body>
<h1>当前时间:</h1>
<%= new java.util.Date() %>
</body>
</html>

注意这段代码里:

  • <html>...</html> 是正常的网页内容。
  • <%= new java.util.Date() %> 是一段 Java 代码,表示“输出当前时间”。

JSP 最终会被 Tomcat 转换成 Servlet,然后再运行。

也就是说:

  • 你写的是 .jsp 文件(像 HTML),
  • Tomcat 会 自动把 JSP 转成 Java 的 Servlet 类
  • 再由 Tomcat 执行这个 Servlet,最终生成 HTML,返回给浏览器。

War

war包是用来进行Web开发时一个网站项目下的所有代码,包括前台HTML/CSS/JS代码,以及后台JavaWeb的代码。 当开发人员开发完毕时,就会将源码打包给测试人员测试,测试完后若要发布则也会打包成War包进行发布。War包 可以放在Tomcat下的webapps或word目录,当Tomcat服务器启动时,War包即会随之解压源代码来进行自动部署。

WebSocket是什么?

WebSocket 是一种浏览器和服务器之间“长连接”的通信方式,可以实现 双向、实时 的数据传输。

前面讲的 Servlet/JSP 是基于 HTTP 协议 的,它有一个特点:

请求-响应模型:浏览器发一个请求,服务器返回一个响应,完了就断开连接。

但是有些场景需要服务器主动告诉客户端信息,比如聊天室,这个时候 HTTP 就不够用了,需要 WebSocket。

就像打电话一样,只要不挂电话,双方都能主动发消息。

WebSocket 是怎么工作的?

它其实最开始也是 HTTP 请求,但会发起一个特别的请求,要求升级协议:

1
2
3
4
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade

服务器接受后,就会把 HTTP 协议升级为 WebSocket 协议,从此连接不再关闭,浏览器和服务器可以互相发送消息!

Tomcat 支持 WebSocket 协议,你写的 Java WebSocket 服务端程序,可以直接部署在 Tomcat 中运行。

题目原理了解

目录穿越

img

一、这图到底在说什么?

这张图的意思是:

Nginx 收到你访问的路径:

1
http://example.com/portal/..;/manager/html

它看到中间有个 ..;/,觉得这是个合法目录名,比如 /portal/..;/manager/html 看起来像一个普通路径,它不会特别处理 ..;

所以它觉得这个路径没问题,于是把整个请求发给了后端 Tomcat。

Tomcat 接收到 /portal/..;/manager/html 后,它有一个习惯:

  • 它会忽略掉 ; 后面的内容(把它当作“脏数据”)。
  • 所以 ..;/ 会被解析成 ../

于是整条路径:

1
/portal/..;/manager/html

被 Tomcat 解析成:

1
/manager/html

你就跳出了原本的 /portal 目录,进入了上层目录,然后访问了 Tomcat 的后台管理页面


总结下重点知识点!

重点概念 含义说明
路径穿越 利用 ../ 跳出当前目录
反向代理绕过 Nginx 和 Tomcat 对路径的解析不一致
**;** 的作用 Tomcat 会忽略它,Nginx 不会
利用场景 想要访问被禁止的上级目录时(比如后台)

弱口令 && Gershell

Vulhub复现 - byc_404’s blog

16.Tomcat弱口令 && 后台getshell漏洞 - bmjoker - 博客园

CATALOG
  1. 1. 相关知识了解
    1. 1.1. Tomcat 是什么?
    2. 1.2. Servlet 是什么?
    3. 1.3. JSP 是什么?
    4. 1.4. War
    5. 1.5. WebSocket是什么?
      1. 1.5.1. WebSocket 是怎么工作的?
  2. 2. 题目原理了解
    1. 2.1. 目录穿越
    2. 2.2. 一、这图到底在说什么?
    3. 2.3. 总结下重点知识点!
    4. 2.4. 弱口令 && Gershell