zoukankan      html  css  js  c++  java
  • Thinkphp5-0-X远程代码执行漏洞分析(2019-1-11)

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

    分析过程

    本次漏洞关键位置:/thinkphp/library/think/Request.php,lines:501由图可以看到在method函数中引入了可控的数据来源:
    官方github
    lines:501

    isset($_POST[Config::get('var_method')

    $this->method在取得该数据的值之后动态调用$this->{$this->method}($_POST),漏洞的关键位置即在该位置。攻击者调用该类任意函数,并通过$_POST作为参数。动态调用__construct函数即导致代码执行。

    下图为Request类中包含的__construct函数内容(lines:130):从中我们可以看到通过$options参数,攻击者可以覆盖到filter、method属性以及get属性的值。
    lines:130

    同时在Request当中的param函数(lines:617)中可以看到当$this->arrayParam为空时,即调用$this->get(false)
    lines:617

    $this->Get函数(lines:673)内容如下:在get函数末端我们可以看到其调用了input函数将攻击者可控的get内容进行了传值。
    lines:673

    input函数内容如下(lines:976):
    lines:976

    我们可以看到getFilter(lines:1005),继续跟踪至getFilter函数(lines:1035):
    lines:1035

    Filter返回后即进入input函数中解析过滤器的if当中,紧接着其调用了filtervValue函数(lines:1059):从中我们不难发现$filter$value均可自行控制。
    lines:1059

    攻击还原(仅供技术交流,请勿非法测试)

    攻击还原

    影响范围

    5.0.X<Thinkphp<5.0.24

    防御方案

    版本升级到5.0.24最新版本规避漏洞
    参考链接: https://github.com/top-think/framework/commit/4a4b5e64fa4c46f851b4004005bff5f3196de003?diff=split

  • 相关阅读:
    react学习总结(一)
    jQuery的attr()与prop()的区别
    Vue.js学习(常用指令)
    Node.js学习(篇章一)
    CSS3关于-webkit-tap-highlight-color属性
    position布局影响点击事件以及冒泡获取事件目标
    取消事件默认行为(移动端)
    rem与px之间的换算(移动端)
    Node.js(初识)
    ES6(变量的解构赋值)
  • 原文地址:https://www.cnblogs.com/303donatello/p/12721587.html
Copyright © 2011-2022 走看看