周五下午爆洞能不能让人们好好休个周末!

分析过程

本次漏洞关键位置:/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

最新文章

  1. Java连接SQLServer2008终极解决办法(亲身上机演练版)
  2. 解决Gradle编译时出现: 编码GBK的不可映射字符
  3. BZOJ2164 : 采矿
  4. Spring mvc 模式小结
  5. bzoj2754
  6. java +bootstrap table 完整例子
  7. thinkphp 常用的查询
  8. SEOR要懂得如何建立完善的seo运营团队
  9. 全球互联网技术大会GITC 2016 最炫酷技术盛宴
  10. VS2013程序打包部署详细图解
  11. Linux添加系统环境变量的两种方法
  12. 前端开发chrome与fireFox浏览器都使用
  13. 源码(03) -- java.util.Collection&lt;E&gt;
  14. C#应用程序隐藏调用bat脚本
  15. JAVA -数据类型与表达式---字符串
  16. sqlserver给用户配置存储过程查看权限
  17. PS跑马灯效果和更换图标
  18. 结构型---享元模式(Flyweight Pattern)
  19. Acegi框架
  20. SqlServer查询中使用事务

热门文章

  1. vue全家桶(2.1)
  2. plsql启动报 Using filter for all users can lead to poor perform
  3. Taro 3 正式版发布:开放式跨端跨框架解决方案
  4. Pytest 单元测试框架标记用例
  5. 拿2k的前端开发都会做些什么?
  6. docker 容器中 apt-get install 软件时,提示无法定位软件包
  7. Centos 6.4 安装KSnapshot 和gimp截图工具
  8. 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
  9. for of
  10. Python之爬虫(十六) Scrapy框架中选择器的用法