### 如何判断靶标是否使用 Shiro

**1. 查看 HTTP 请求和响应头**

这是最直接也最常用的方法。当一个网站使用 Shiro 框架时，它通常会在 HTTP 响应中设置一个特定的 Cookie

------

- **Shiro Cookie:** 检查 HTTP 响应头中的 `Set-Cookie` 字段。如果存在名为 **`rememberMe`** 的 Cookie，那么目标很可能使用了 Shiro 框架

  ```
  HTTP/1.1 200 OK
  Server: Apache-Coyote/1.1
  Set-Cookie: JSESSIONID=...; Path=/; HttpOnly
  Set-Cookie: rememberMe=...; Path=/; HttpOnly
  Content-Type: text/html;charset=UTF-8
  ```

  这个 `rememberMe` Cookie 是 Shiro 用来记住用户登录状态的。它的值是 Base64 编码的，这正是 Shiro-550 和 Shiro-721 漏洞的核心所在

**2. 发送特定请求并观察响应**

除了查看响应头，我们还可以通过发送一个带有特定 Cookie 的请求，并观察服务器的响应来进一步确认

- **发送带无效 RememberMe Cookie 的请求:** 发送一个 GET 请求到目标网站的任意页面，并在请求头中手动添加一个 **无效的 `rememberMe` Cookie**。例如，可以设置 `rememberMe=123`

  ```
  GET /index.jsp HTTP/1.1
  Host: example.com
  Cookie: rememberMe=123
  ```

- **观察响应头:** 如果目标使用了 Shiro，并且 `rememberMe` 验证失败，服务器通常会在响应头中返回一个 **`rememberMe=deleteMe`** 的 Cookie，来清除浏览器中无效的 Cookie。这是 Shiro 框架的一个典型特征

  ```
  HTTP/1.1 200 OK
  Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; HttpOnly
  ```

  如果看到了 `rememberMe=deleteMe`，几乎可以 100% 确定目标使用了 Shiro 框架

**3. 利用工具自动检测**

对于渗透测试工程师来说，手动测试虽然精确，但效率较低。我们可以使用一些自动化工具来快速检测

- **ShiroScan：** 这是一款专门用于检测 Shiro 漏洞的工具。它能够自动发送带有特定 Payload 的请求，并根据响应来判断目标是否使用了 Shiro，以及是否存在可利用的漏洞
- **Burp Suite 插件：** 许多 Burp Suite 插件，如 **Shiro-check**，都提供了自动检测功能。你只需在代理中浏览目标网站，插件就会自动分析请求和响应，并提示是否发现了 Shiro 的痕迹