Thinkphp5-0-X远程代码执行漏洞分析(2019-1-11)
周五下午爆洞能不能让人们好好休个周末!
分析过程
本次漏洞关键位置:/thinkphp/library/think/Request.php
,lines:501由图可以看到在method函数中引入了可控的数据来源:
isset($_POST[Config::get('var_method')
$this->method
在取得该数据的值之后动态调用$this->{$this->method}($_POST)
,漏洞的关键位置即在该位置。攻击者调用该类任意函数,并通过$_POST
作为参数。动态调用__construct
函数即导致代码执行。
下图为Request类中包含的__construct
函数内容(lines:130):从中我们可以看到通过$options
参数,攻击者可以覆盖到filter、method
属性以及get属性的值。
同时在Request
当中的param
函数(lines:617)中可以看到当$this->arrayParam
为空时,即调用$this->get(false)
。
$this->Get
函数(lines:673)内容如下:在get函数末端我们可以看到其调用了input
函数将攻击者可控的get
内容进行了传值。
input
函数内容如下(lines:976):
我们可以看到getFilter
(lines:1005),继续跟踪至getFilter
函数(lines:1035):
Filter
返回后即进入input
函数中解析过滤器的if当中,紧接着其调用了filtervValue
函数(lines:1059):从中我们不难发现$filter
和$value
均可自行控制。
攻击还原(仅供技术交流,请勿非法测试)
影响范围
5.0.X<Thinkphp<5.0.24
防御方案
版本升级到5.0.24最新版本规避漏洞
参考链接: https://github.com/top-think/framework/commit/4a4b5e64fa4c46f851b4004005bff5f3196de003?diff=split
最新文章
- Java连接SQLServer2008终极解决办法(亲身上机演练版)
- 解决Gradle编译时出现: 编码GBK的不可映射字符
- BZOJ2164 : 采矿
- Spring mvc 模式小结
- bzoj2754
- java +bootstrap table 完整例子
- thinkphp 常用的查询
- SEOR要懂得如何建立完善的seo运营团队
- 全球互联网技术大会GITC 2016 最炫酷技术盛宴
- VS2013程序打包部署详细图解
- Linux添加系统环境变量的两种方法
- 前端开发chrome与fireFox浏览器都使用
- 源码(03) -- java.util.Collection<;E>;
- C#应用程序隐藏调用bat脚本
- JAVA -数据类型与表达式---字符串
- sqlserver给用户配置存储过程查看权限
- PS跑马灯效果和更换图标
- 结构型---享元模式(Flyweight Pattern)
- Acegi框架
- SqlServer查询中使用事务
热门文章
- vue全家桶(2.1)
- plsql启动报 Using filter for all users can lead to poor perform
- Taro 3 正式版发布:开放式跨端跨框架解决方案
- Pytest 单元测试框架标记用例
- 拿2k的前端开发都会做些什么?
- docker 容器中 apt-get install 软件时,提示无法定位软件包
- Centos 6.4 安装KSnapshot 和gimp截图工具
- 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- for of
- Python之爬虫(十六) Scrapy框架中选择器的用法