Files
2025-09-25 03:24:57 +08:00

90 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### Shiro 不出网怎么利用
**1. 利用内存马**
这是最常见且有效的方法之一。**内存马**是一种将恶意代码直接注入到目标服务器内存中的技术,它不会在磁盘上留下任何文件,因此难以被传统的杀毒软件和文件监控系统发现
**实现思路:**
- **注入 WebShell** 通过 Shiro 反序列化漏洞执行一个内存中的 Shell 代码。这个 Shell 通常是一个 Servlet、Filter 或者 JSP 的形式。它接收你的 HTTP 请求,然后执行命令并将结果通过 HTTP 响应返回
- **通信方式:** 你需要找到一个能够与目标服务器交互的 HTTP 端点(Endpoint)。例如,你可以注入一个 Filter,它会监听特定的 URL 路径,当你的请求命中这个路径时,Filter 就会被触发,执行你传入的命令,然后将命令执行结果作为 HTTP 响应的一部分返回给你
**优点:**
- 隐蔽性高,不依赖外网连接
- 可以绕过很多安全检测
- 可以实现双向通信,方便后续操作
**缺点:**
- 需要一定的 Java 基础和内存马编写能力
- 服务器重启后,内存马会消失
**2. 利用 JRMP 协议进行反向连接**
如果目标服务器能够出网,但限制了 HTTP/HTTPS 协议,你还可以尝试通过其他协议进行反向连接。JRMPJava Remote Method Protocol)是 Java RMI (Remote Method Invocation) 的底层协议,可以用于远程调用对象
**实现思路:**
- **创建 JRMPListener** 在你的攻击机上运行一个 JRMPListener,这个 Listener 监听一个端口,等待目标服务器连接
- **Shiro 利用链:** 使用 Shiro 反序列化漏洞,在目标服务器上执行一段代码,这段代码会去连接你的 JRMPListener
- **获取 Shell:** 一旦连接建立,你可以通过这个通道在目标服务器上执行命令或者进行其他操作
**优点:**
- 利用 JRMP 协议,绕过一些基于 HTTP/HTTPS 的网络限制
**缺点:**
- 依然需要目标服务器能够出网
- 需要编写或使用专门的 JRMP 利用工具
**3. 利用文件操作**
虽然不能出网,但我们仍然可以利用 Shiro 反序列化漏洞来操作服务器上的文件
**实现思路:**
- **写入 WebShell:** 通过反序列化漏洞,执行文件写入操作,将一个 WebShell 文件(例如 `webshell.jsp`)写入到目标服务器的 Web 目录下
- **利用已有的 WebShell:** 如果你发现服务器上已经存在一个可写的目录,或者存在一些可以被利用的日志文件等,也可以将命令执行的结果写入到这些文件中
**具体步骤:**
- 使用 `URLDNS` 或者其他利用链来验证漏洞存在性
- 找到一个可写的路径,例如 `webapps/ROOT/` 目录
- 构造一个恶意的序列化 payload,其中包含写入文件的操作。例如,可以使用 `CommonsCollections` 或者 `Jdk7u21` 等利用链,然后调用 `Runtime.exec()` 来执行 `echo "恶意代码" > /path/to/shell.jsp` 命令
**优点:**
- 不需要服务器出网
- 操作直观,容易理解
**缺点:**
- **权限问题:** 需要目标服务器用户具有写入权限
- **路径问题:** 需要知道 Web 目录的绝对路径,或者通过其他方式推测
**4. 命令执行带回显**
如果目标服务器不出网,但我们仍然可以执行命令,那么如何看到命令执行的结果呢?
**实现思路:**
- **写入文件,然后读取:** 执行命令,并将命令执行的结果重定向到一个可读的目录,例如 Web 目录下的一个新文件。然后,你再通过浏览器访问这个文件,就可以看到命令执行的结果了
- **利用报错:** 构造一个特殊的命令,使得命令执行结果作为错误信息输出。例如,一些命令在执行失败时会返回有用的信息
**具体步骤:**
- **写入文件:** `ls -la > /tmp/result.txt`
- **再读取文件:** 再次构造反序列化 payload,执行 `cat /tmp/result.txt`,然后将结果写入到可访问的 Web 文件中,或者通过其他方式带出
**优点:**
- 不依赖网络连接
**缺点:**
- 操作繁琐,需要多次构造 payload
- 容易被检测