文章总结: TL-NodeJsShell是天禄实验室开发的WebShell管理工具,面向安全测试人员,提供内存马注入、交互式终端、文件管理和连接管理等功能。该工具采用前后端分离架构,后端使用Go语言,前端使用Vue3框架,支持多种编码方式和代理配置。项目已在GitHub开源,仅供授权的安全测试和教育研究使用,用户需遵守相关法律法规和职业道德规范。 综合评分: 89 文章分类: 安全工具,WEB安全,红队,产品介绍,安全开发
TL-NodeJsShell:一个Node.js WebShell管理工具
原创
天禄实验室
天禄网络安全实验室
2025年12月12日 14:35 四川
TL-NodeJsShell:一个Node.js WebShell管理工具
项目介绍
TL-NodeJsShell是天禄实验室开发的一个WebShell管理工具,主要面向安全测试人员和安全研究人员。本文将介绍该工具的设计思路、主要功能以及使用方法。
在开始之前,需要特别说明:本工具仅用于授权的安全测试和教育研究目的,任何未经授权的使用都是违法行为,用户需对自己的行为承担全部责任。
设计背景
在安全测试工作中,管理多个WebShell连接是一个常见需求。传统的管理方式存在一些不便之处,比如需要频繁切换工具、操作流程繁琐、缺乏统一的管理界面等。基于这些考虑,我们开发了TL-NodeJsShell这个项目。
项目采用前后端分离架构,后端使用Go语言开发,前端使用Vue 3框架。选择Go是因为其编译后的单文件部署特性,便于在不同环境中快速部署。选择Vue 3则是考虑到其完善的生态系统和TypeScript支持,能够提供较好的开发体验。
核心功能
内存马注入
该功能支持在Node.js框架中注入中间件,也支持通过原型链污染技术实现注入。为了适应不同的测试场景,系统提供了Base64编码方式。
内存马技术的优势在于无需在目标系统磁盘上留下文件,降低了被检测的风险,同时也便于测试结束后的清理工作。
交互式终端
系统集成了xterm.js实现虚拟终端功能,支持实时命令执行和输出显示。终端会自动记录命令历史,方便用户查看之前的操作记录。
系统支持同时管理多个Shell连接,用户可以在不同的目标系统之间进行切换,提高了工作效率。
文件管理
文件管理模块提供了目录浏览、文件上传下载等基础功能。考虑到实际测试中可能需要传输较大的文件,系统实现了分块传输机制,经过测试,能够较为稳定地传输数百MB的文件。
系统集成了Monaco Editor作为代码编辑器,支持语法高亮和基本的代码编辑功能,方便用户直接在浏览器中查看和修改文件内容。
连接管理
每个Shell连接可以独立配置编码方式、HTTP请求方法、自定义请求头等参数。针对复杂的网络环境,系统支持HTTP、HTTPS和SOCKS5代理配置。
为了保证安全性,所有连接都支持密码保护,防止未授权访问。
功能模板
命令执行模板
(function(){
try{
const cmd = "your_command";
const exec = require('child_process').exec;
const timeout = 30000;
let output = '';
let success = true;
const childProcess = exec(cmd, {maxBuffer: 104857600, encoding: 'utf8'}, function(err, stdout, stderr){
if(err){
success = false;
output = err.message || err.toString();
} else {
output = stdout || '';
if(stderr) output += stderr;
}
});
// 超时处理和结果返回...
} catch(err) {
returnJSON.stringify({success: false, error: err.message});
}
})();
文件读取模板
const fs = require('node:fs');
const path = require('node:path');
try {
let filePath = "target_file_path";
let target = path.resolve(filePath);
if (!fs.existsSync(target)) {
thrownewError('File not found: ' + target);
}
let stats = fs.statSync(target);
if (!stats.isFile()) {
thrownewError('Path is not a file: ' + target);
}
let content = fs.readFileSync(target, 'utf8');
console.log(JSON.stringify({
ok: true,
path: target,
content: content,
size: content.length
}));
} catch(error) {
console.log(JSON.stringify({
ok: false,
error: String(error.message || error)
}));
}
系统还提供了文件上传、文件下载、系统信息获取等多个实用模板,并支持分块传输大文件。
编码处理
生成的Payload会根据选择的编码方式进行处理:
- Base64编码:支持多层编码,增加混淆程度
编码后的Payload可以有效绕过一些基础的安全检测机制。
技术实现
后端架构
后端使用Go语言开发,采用Gin作为Web框架,GORM作为ORM框架,数据库选用SQLite。选择SQLite主要是考虑到部署的便利性,无需额外安装数据库服务。
代码组织方面,采用了标准的Go项目结构,将不同功能模块进行了合理划分,包括应用核心、配置管理、核心功能、数据库操作和HTTP处理器等。
前端架构
前端基于Vue 3框架开发,使用TypeScript提供类型支持。UI组件库选用Element Plus,构建工具使用Vite。状态管理采用Pinia,路由管理使用Vue Router。
项目结构按照功能模块进行组织,包括API调用、可复用组件、页面视图、状态管理等,便于代码的维护和扩展。
TL-NodeJsShell/
.github/ # GitHub 工作流与社区规范
data/ # 运行时数据存储 (SQLite 数据库文件)
docs/ # 项目详细文档 (API, 安装, 安全)
server/ # Go 后端核心服务
cmd/api/ # 程序入口 (main.go)
internal/ # 内部私有代码
app/ # 应用层 (路由注册, 中间件)
config/ # 配置加载与管理
core/ # 核心业务逻辑
crypto/ # 加密解密 (AES, Base64, XOR)
exploit/ # 漏洞利用与内存马注入逻辑
payload/ # Payload 生成器与 JS 模板
proxy/ # 流量代理实现
transport/ # 通讯协议与 HTTP 客户端封装
database/ # 数据库交互层 (GORM)
handlers/ # HTTP 接口处理器 (Controller)
go.mod # Go 依赖管理
web/ # Vue3 前端界面
src/
api/ # 后端接口定义 (Axios)
components/ # 公共 UI 组件
router/ # 路由配置
stores/ # Pinia 状态管理
types/ # TypeScript 类型定义
views/ # 页面视图 (Page)
index.html # 入口 HTML
vite.config.ts # Vite 构建配置
ARCHITECTURE.md # 系统架构图
CHANGELOG.md # 更新日志
README.md # 项目主页
关键技术点
文件传输模块实现了分块传输机制,每个数据块传输完成后会进行校验,失败时支持重传,提高了传输的可靠性。
代理功能基于Go标准库实现,支持HTTP、HTTPS和SOCKS5三种代理协议,同时支持需要身份认证的代理服务器。
终端模块通过WebSocket实现实时通信,保证了命令执行的响应速度。
部署与使用
环境要求
- Go 1.21或更高版本
- Node.js 16或更高版本
- npm或yarn包管理器
安装步骤
首先克隆项目代码:
git clone https://github.com/tianlusec/TL-NodeJsShell.git
cd TL-NodeJsShell
编译后端程序:
cd server
go mod download
go build -o NodeJsshell cmd/api/main.go
构建前端资源:
cd web
npm install
npm run build
启动服务后,通过浏览器访问http://localhost:8080即可使用。
开发模式下,后端可使用go run cmd/api/main.go运行,前端可使用npm run dev启动开发服务器。
使用流程
- 在Shell管理器中添加新的连接,配置目标URL、密码、编码类型等必要参数
- 系统会自动测试连接状态,连接成功后显示目标系统的基本信息
- 进入Shell详情页面,可以使用终端执行命令或通过文件管理器操作文件
- 根据测试需要,可以上传工具文件或下载目标系统中的数据
使用规范
在使用本工具时,需要严格遵守以下规范:
- 必须获得明确的书面授权后才能进行安全测试
- 建议在隔离的测试环境中使用,避免对生产系统造成影响
- 妥善保管Shell连接信息,不得泄露给无关人员
- 测试完成后及时清理部署的WebShell和相关文件
- 定期更新工具版本,及时修复已知的安全问题
项目展望
目前项目已经实现了基本的功能需求,但仍有改进空间。后续可能会考虑增加更多类型的中间件注入支持、扩展Payload模板库、增加操作日志审计功能等。
项目代码已在GitHub开源,欢迎安全研究人员和开发者参与贡献。如果在使用过程中发现问题或有功能建议,可以通过GitHub Issues反馈。
总结
TL-NodeJsShell是一个面向安全测试场景的WebShell管理工具,提供了内存马注入、命令执行、文件管理等功能。项目采用现代化的技术栈,界面设计简洁,操作流程清晰。
本工具可以在一定程度上提高安全测试工作的效率,但使用时必须严格遵守法律法规和职业道德规范,确保在授权范围内进行测试。
项目地址:https://github.com/tianlusec/TL-NodeJsShell
欢迎关注天禄实验室,获取更多安全研究成果。
声明:本工具仅供授权的安全测试和教育研究使用,用户需对自己的行为承担全部法律责任。
查看原文:《TL-NodeJsShell:一个Node.js WebShell管理工具》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论