TP5代码执行漏洞分析:绕过WAF与getshell方法
需积分: 0 152 浏览量
更新于2024-08-05
收藏 1.29MB PDF 举报
"记一次有趣的tp5代码执行1"
在网络安全领域,发现并利用漏洞是常态。这次分享的是关于ThinkPHP框架5.0.23版本的一个代码执行漏洞。ThinkPHP是一个广泛使用的PHP开发框架,而这个特定的漏洞,称为“tp5method代码执行”,允许攻击者通过精心构造的payload来执行任意代码,尽管存在WAF(Web Application Firewall)的防护。
首先,我们需要了解漏洞的基础信息。攻击者可以利用`captcha_method`参数进行方法注入,触发`__construct`魔术方法,并通过`method`参数指定要执行的方法。在给定的payload中,可以看到`get`方法被调用,并尝试通过`assert`函数执行代码。然而,由于`assert`函数在php7.1.7中已经不能通过`call_user_func`回调调用,攻击者需要寻找其他方式来绕过限制。
面对无回显的环境,通常需要依赖外部反馈来确认漏洞利用是否成功。在这个例子中,通过判断WAF拦截的内容,我们可以推断出目标服务器的ThinkPHP版本是5.0.23,并且系统禁用了多个高风险的PHP函数,如`passthru`, `exec`, `system`等,这增加了利用的难度。
为了突破这些限制,文章提到了两种可能的策略:
1. **写日志并包含日志文件获取Shell**:攻击者可以将恶意代码写入日志文件,然后通过包含日志文件来执行代码。例如,可以使用`call_user_func`或`think\__include_file`来包含写入恶意PHP代码的日志文件,从而实现远程命令执行。
- payload示例:
```
_method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=<?phpeval($_POST['x'])?>
```
或
```
_method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=../data/runtime/log/201901/21.log&x=phpinfo();
```
2. **写session并包含session文件获取Shell**:另一种方法是将恶意代码写入session文件,然后通过包含session文件来执行。攻击者可以通过发送特定的POST请求来创建包含恶意代码的session,并在后续请求中利用它。
- payload示例:
```
POST/?s=captcha HTTP/1.1
Cookie: session_name=...
Content-Type: application/x-www-form-urlencoded
...
```
这里省略了具体的POST数据,因为实际payload会包含恶意PHP代码,并写入session。
在实战中,攻击者可能需要多次尝试不同的payload和方法,以适应目标系统的具体配置和防护措施。同时,防御方应该及时更新框架到最新安全版本,禁用不必要的危险函数,并启用严格的输入验证和过滤,以降低这类漏洞被利用的风险。对于开发者而言,理解这些攻击手段可以帮助他们在编写代码时避免类似的错误,确保应用的安全性。
2022-08-03 上传
2022-08-03 上传
2021-03-11 上传
2019-05-01 上传
2021-02-13 上传
2017-10-31 上传
2020-12-17 上传
2019-09-12 上传
2020-12-19 上传
恽磊
- 粉丝: 27
- 资源: 297
最新资源
- ES管理利器:ES Head工具详解
- Layui前端UI框架压缩包:轻量级的Web界面构建利器
- WPF 字体布局问题解决方法与应用案例
- 响应式网页布局教程:CSS实现全平台适配
- Windows平台Elasticsearch 8.10.2版发布
- ICEY开源小程序:定时显示极限值提醒
- MATLAB条形图绘制指南:从入门到进阶技巧全解析
- WPF实现任务管理器进程分组逻辑教程解析
- C#编程实现显卡硬件信息的获取方法
- 前端世界核心-HTML+CSS+JS团队服务网页模板开发
- 精选SQL面试题大汇总
- Nacos Server 1.2.1在Linux系统的安装包介绍
- 易语言MySQL支持库3.0#0版全新升级与使用指南
- 快乐足球响应式网页模板:前端开发全技能秘籍
- OpenEuler4.19内核发布:国产操作系统的里程碑
- Boyue Zheng的LeetCode Python解答集