TL-NodeJsShell:一个Node.jsWebShell管理工具

admin 2025-12-22 04:40:52 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: TL-NodeJsShell是天禄实验室开发的WebShell管理工具,面向安全测试人员,提供内存马注入、交互式终端、文件管理和连接管理等功能。该工具采用前后端分离架构,后端使用Go语言,前端使用Vue3框架,支持多种编码方式和代理配置。项目已在GitHub开源,仅供授权的安全测试和教育研究使用,用户需遵守相关法律法规和职业道德规范。 综合评分: 89 文章分类: 安全工具,WEB安全,红队,产品介绍,安全开发


cover_image

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启动开发服务器。

使用流程

  1. 在Shell管理器中添加新的连接,配置目标URL、密码、编码类型等必要参数
  2. 系统会自动测试连接状态,连接成功后显示目标系统的基本信息
  3. 进入Shell详情页面,可以使用终端执行命令或通过文件管理器操作文件
  4. 根据测试需要,可以上传工具文件或下载目标系统中的数据

使用规范

在使用本工具时,需要严格遵守以下规范:

  1. 必须获得明确的书面授权后才能进行安全测试
  2. 建议在隔离的测试环境中使用,避免对生产系统造成影响
  3. 妥善保管Shell连接信息,不得泄露给无关人员
  4. 测试完成后及时清理部署的WebShell和相关文件
  5. 定期更新工具版本,及时修复已知的安全问题

项目展望

目前项目已经实现了基本的功能需求,但仍有改进空间。后续可能会考虑增加更多类型的中间件注入支持、扩展Payload模板库、增加操作日志审计功能等。

项目代码已在GitHub开源,欢迎安全研究人员和开发者参与贡献。如果在使用过程中发现问题或有功能建议,可以通过GitHub Issues反馈。

总结

TL-NodeJsShell是一个面向安全测试场景的WebShell管理工具,提供了内存马注入、命令执行、文件管理等功能。项目采用现代化的技术栈,界面设计简洁,操作流程清晰。

本工具可以在一定程度上提高安全测试工作的效率,但使用时必须严格遵守法律法规和职业道德规范,确保在授权范围内进行测试。

项目地址:https://github.com/tianlusec/TL-NodeJsShell

欢迎关注天禄实验室,获取更多安全研究成果。


声明:本工具仅供授权的安全测试和教育研究使用,用户需对自己的行为承担全部法律责任。


查看原文:《TL-NodeJsShell:一个Node.js WebShell管理工具》

评论:0   参与:  0