用户
搜索
  • TA的每日心情

    2017-12-28 15:34
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看

    版主

    Rank: 7Rank: 7Rank: 7

    78

    主题

    269

    帖子

    2005

    魔法币
    收听
    0
    粉丝
    79
    注册时间
    2016-6-21

    i春秋认证春秋巡逻i春秋签约作者春秋游侠春秋文阁

    发表于 2019-1-16 22:20:29 710864
    本帖最后由 Sp4ce 于 2019-1-17 01:44 编辑

    先吐槽下创宇盾 吞了我2次帖子

    漏洞名称

    ThinkPHP 5.0.*远程代码执行漏洞

    日期

    2019年1月12日

    影响范围

    ThinkPHP 5.0.全版本

    分析

    跟着大佬的脚步笔者简单的分析了下。
    Thinkphp处理请求的关键类为Request(thinkphp/library/think/Request.php)
    其中成员函数method用来获取当前请求类型,其定义如下:

    该函数主要在其他成员函数(例如isGet、isPost、isPut等)中被用来做请求类型判断

    thinkphp支持配置“表单伪装变量”,默认情况下该变量值为_method

    因此在method()中,可以通过“表单伪装变量”进行变量覆盖实现对该类任意函数的调用,并且$_POST作为函数的参数传入

    Request类的构造函数定义如下

    构造函数中,主要对$option数组进行遍历,当$option的键名为该类属性时,则将该类同名的属性赋值为$options中该键的对应值。

    因此可以构造请求如下,来实现对Request类属性值的覆盖,例如覆盖filter属性。filter属性保存了用于全局过滤的函数。
    因此在thinkphp 5.0.10 中可以通过构造如下请求实现代码执行:

    但是笔者测试了所有版本后发现一个问题

    那就是这个漏洞并不通杀
    笔者后续对比了官方多个发布的5.0版本,大概总结出如下结论

    版本名 是否可被攻击 攻击条件
    5.0.0
    5.0.1
    5.0.2
    5.0.3
    5.0.4
    5.0.5
    5.0.6
    5.0.7
    5.0.8 无需开启debug
    5.0.9 无需开启debug
    5.0.10 无需开启debug
    5.0.11 无需开启debug
    5.0.12 无需开启debug
    5.0.13 需开启debug
    5.0.14 需开启debug
    5.0.15 需开启debug
    5.0.16 需开启debug
    5.0.17 需开启debug
    5.0.18 需开启debug
    5.0.19 需开启debug
    5.0.20
    5.0.21 需开启debug
    5.0.22 需开启debug
    5.0.23 需开启debug

    之前看很多人复现时选的版本是5.0.13~5.0.19的,这些版本默认情况下config中的app_debug配置项为false,这也是为什么很多人用payload都无法复现

    总结

    在版本低于5.0.13的版本中,破坏性还是很强的,因为无需开启debug模式即可造成代码执行


    在版本高于5.0.20的版本中,破坏性还是一般的,需开启debug模式才可造成代码执行


    关于为什么5.0.7及以下版本不能执行,笔者对比了thinkphp\library\think\Route.php,发现5.0.8相对于5.0.7在获取当前请求类型的路由规则处增加了一个三目运算符导致$rules数组被置空

    这也解释了为什么5.0.7执行时会爆出如下错误

    附赠2个payload
    由于创宇盾的原因 全部用图片了

    不傲不畏,不卑不亢,不骄不躁,不气不馁,不争不抢
    发表于 2019-1-17 10:33:24
    楼主分析的很到位,谢谢分享。
    使用道具 举报 回复
    发表于 2019-1-17 16:09:31
    点赞,学习了
    使用道具 举报 回复
    发表于 2019-1-20 00:07:24
    感谢作者分享
    使用道具 举报 回复
    发表于 2019-1-21 15:30:32
    是时候分享你的tp大全了
    使用道具 举报 回复
    发表于 2019-1-21 18:44:07
    大佬.你这个真全啊
    使用道具 举报 回复
    发表于 2019-1-22 20:39:52
    大佬师傅 能不能分享一下这个全家桶源码呀
    使用道具 举报 回复
    发表于 2019-2-27 00:30:35
    谢谢谢谢谢谢
    QQ图片20190227003001.png
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册