MatouWebshell 是一个基于 Vue 3 和 Python 开发的,针对Webshell利用与管理的工具平台。它旨在为安全研究人员提供一个集成的环境,用于管理和操控已植入的Webshell,并扩展后渗透能力。
项目简介
目前,该平台集成了以下核心工具:
- Webshell管理工具:基于哥斯拉(Godzilla)Webshell的设计思路开发,着重于去除通信流量中的强特征,并支持高度自定义流量格式,以实现伪装正常业务流量的目的。目前主要支持目标系统为Linux,支持的Webshell类型包括JSP/JSPX和PHP。
重要声明:本文及相关工具仅用于合法的安全研究、学习与授权测试。请勿利用文章内的相关技术从事非法渗透测试。由于传播、利用此文所提供的信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具和内容均来自网络,仅做学习和记录使用,安全性需自测。
项目启动
1. 直接运行ELF二进制文件
由于项目是使用 GLIBC_2.38 进行编译的,建议在以下版本或更新的系统上运行:
- Ubuntu 23.10
- Fedora 39 / 40
- Arch Linux
- Debian 13
- openSUSE Tumbleweed
启动步骤:
- 将项目解压至目标目录。
- 给予
app.bin 文件可执行权限。
- 支持以下启动参数:
--debug:输出调试信息。
--port:指定服务监听的端口。
执行命令示例:
./app.bin --debug --port 6324
启动成功后,终端会输出详细的调试信息,包括已注册的Webshell类型和服务地址。

- 使用浏览器访问控制台地址,例如
http://localhost:6324/。

2. 使用Docker镜像
对于希望快速部署的用户,也提供了Docker镜像。
拉取镜像:
docker pull henry404/matouwebshell:1.0
运行容器:
docker run -it --rm -p 5001:5001 -v matou_data:/app/router_modules/webshellmanager_router/data henry404/matouwebshell
Webshell管理功能详解
Webshell生成
基础配置
在生成Webshell时,需要配置以下基础参数:
- 参数名:客户端在初始化阶段,需要将加密的Payload以表单格式发送至服务端,POST请求参数形如
{参数名}={encryptedPayload}。
- Webshell类型:支持 PHP、JSP 和 JSPX。
- CookieName:可以将其理解为激活Webshell功能的“密钥”开关。只有当请求中包含正确值的对应Cookie时,Webshell才会响应。
- 标识符替换:此功能用于替换代码中指定前缀的变量标识符,支持“随机生成”和从“变量池文件”中选取。变量池文件位于
router_modules/webshellmanager_router/webshell 目录下,用户可以自行编辑。

高级选项
不同类型Webshell的高级选项有所不同。
- PHP类型:提供了“模拟正常业务”功能。启用后,可以将生成的Webshell代码嵌入到预设的正常业务页面模板中,大幅增加隐蔽性。模板来源于
webshell/normal_template 目录。

- JSP/JSPX类型:支持代码混淆功能。JSP仅支持Unicode编码混淆,而JSPX支持更丰富的组合,包括Unicode编码、CDATA拆分、HTML实体编码、HTML+Unicode、CDATA+Unicode以及CDATA+HTML编码。例如,可以对
getParameter 等关键字进行混淆,并可通过滑块控制Unicode编码的比例。

混淆后的代码示例如下:
if (session.g<![CDATA[\u0065]]>t<![CDATA[\u0074\u0041\u0074t\u0072i\u0062]]>ute("$payload$") == null
Webshell连接与配置
基本连接参数
添加Webshell连接时,需要填写以下基本信息:
- URL地址:Webshell的完整访问路径。
- 连接密码:请注意,此密码仅用于加密通信流量,可以与生成Webshell时设置的
CookieName不同,且可以随时更改。
- 参数名:与生成Webshell时设置的“参数名”保持一致。
- Cookie名称:此处应填写生成Webshell时设置的
CookieName,这是激活Webshell的真正“开关”。

此外,还支持配置网络代理(HTTP/SOCKS)以通过代理服务器连接目标。

传输与加密定制
这是MatouWebshell的一大特色,允许用户深度自定义通信的加密方式、请求格式和响应格式。
- 可选择AES_BASE64_JSON等加密类型。
- 请求格式支持 Form、JSON、XML、Plain Text甚至PNG图片伪装。
- 响应格式同样支持JSON等,并允许自定义JSON响应模板,其中
PAYLOAD_DATA 作为加密数据的占位符。

更强大的是,它支持完全自定义请求内容。你可以精细地定义请求体(Form、JSON、XML、Plain)、请求头(Headers),并插入动态变量如随机User-Agent ${random_ua}、时间戳 ${timestamp}、UUID ${uuid} 以及最重要的加密数据 ${encrypted_data}。

通信示例
- 请求为XML,响应为JSON:这种组合可以很好地伪装成某些API接口的通信。

- 请求为Form,响应为PNG:将返回数据隐藏在图片文件中,绕过一些基于内容类型的检测。

核心管理功能
1. 命令行终端
提供一个交互式Web终端,支持执行系统命令。
- 支持
cd 命令切换目录,切换后的路径会自动同步到文件管理器。
- 支持上下键查看历史命令。
- 提供清空输出功能。

2. 文件管理
文件管理器界面分为三栏,功能全面:
- 左侧:目录树,清晰展示文件夹结构。
- 中间:当前目录的文件和文件夹列表。
- 顶部:地址栏和操作按钮区。
浏览方式多样:点击目录树、双击文件列表中的文件夹,或直接在地址栏输入路径后回车。

- 上传/下载:支持普通模式和大文件分块传输模式。可以在全局设置中配置大文件传输的参数,如分块大小、请求间隔、重试次数等,以适应不同的网络环境和规避检测。

- 文件编辑:双击文本文件或点击“编辑”按钮,可在内置编辑器中修改文件内容(支持小于1MB的文本文件)。

- 压缩/解压:支持对选中的文件/文件夹进行ZIP压缩,以及对ZIP文件进行解压。


- 修改属性:支持修改文件的权限属性(RWX)和时间属性(修改时间、访问时间)。


3. 数据库管理
提供直观的数据库管理界面。
- 输入数据库类型、主机、端口、用户名、密码等配置信息,点击“连接测试”。
- 连接成功后,左侧会显示数据库结构树。
- 在SQL查询区域编写或执行语句(支持多语句,用分号分隔)。点击左侧数据库的表节点,会自动生成
SELECT * FROM 查询语句。
- 查询结果会以表格形式展示在下方。

4. 内网穿透
此功能允许通过已控制的Webshell服务器作为跳板,访问其内网资源。
- SOCKS5代理:在本地开启一个SOCKS5代理端口。将浏览器、扫描器等任何支持SOCKS协议的工具指向该端口,即可访问Webshell内网。支持IP白名单功能。
- 端口映射:将内网特定IP和端口映射到本机的某个端口。例如,将内网
192.168.1.1:80 映射到本机 8080 端口,然后访问 localhost:8080 即可。
- 反向DMZ(仅JSP支持):适用于反弹Shell等场景。

5. 内存马注入(仅限JSP)
针对Java Web环境,提供了无文件内存马注入功能,这是渗透测试中常用的持久化手段。
- 加载内存马:配置内存马路径、密钥(即Cookie名称)、参数名,并选择类型(Servlet 或 Filter)。加载成功后,只有携带正确Cookie的请求才会激活内存马,否则返回正常页面,具有极强的隐蔽性。加载记录会保存在历史中。

- 获取组件信息:可以查看当前Web应用中所有已注册的Servlet和Filter的详细信息,便于分析环境。

- 卸载内存马:选择内存马类型,并指定其路径和对应的Wrapper/Filter名称,即可将其从内存中清理。

总结
MatouWebshell 作为一个集Webshell管理、流量伪装、文件操作、数据库管理、内网穿透和内存马注入于一体的后渗透平台,在Python与Vue.js的驱动下,提供了较为完善的图形化操作界面。它特别注重流量的隐蔽性与可定制性,适合安全研究人员在授权环境中进行深入的攻防演练和研究。正如所有安全工具一样,其价值在于提升防御者的认知与能力,请务必在合法合规的范围内使用。
项目地址:
https://github.com/HeNrY4396/MatouWebshell
希望这篇关于MatouWebshell的详细介绍能为你带来启发。如果你对Web安全、渗透测试或工具开发有更多兴趣,欢迎到云栈社区参与讨论,与更多开发者交流学习。