• 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

  • 相关阅读:
    C语言经典算法100例-039-排序队列中插入新元素
    C语言经典算法100例-037-给10个数排序
    C语言经典算法100例-036-求100之内的素数
    C语言经典算法100例-032~35
    C语言经典算法100例-031-判断星期几
    安卓 短信页面设置(线性布局)
    CSS样式表
    HTML表单
    第1部分 HTML 表格
    多线程
  • 原文地址:https://www.cnblogs.com/303donatello/p/12721587.html
Copyright © 2020-2023  润新知