码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • thinkphp5.0.24反序列化漏洞分析


    thinkphp5.0.24反序列化漏洞分析

    文章目录

    • thinkphp5.0.24反序列化漏洞分析
      • 具体分析
        • 反序列化起点
        • toArray
        • getRelationData分析
        • $modelRelation生成
        • 进入__call前的两个if
        • __call
        • 虚假的写文件
        • setTagItem
        • 绕过exit
      • exp
      • pop链图
      • 解决windows下的文件名问题
      • 参考链接

    thinkphp5框架:

    image-20220615000257518

    thinkphp5的入口文件在publicindex.php,访问

    http://192.168.64.105/thinkphp_5.0.24/public/index.php
    
    • 1

    image-20220615000539160

    具体分析

    反序列化起点

    写一个反序列化入口点

    image-20220615001131637

    全局搜索__destruct()函数

    image-20220615001115342

    hinkphp_5.0.24 hinkphplibrary hinkprocesspipesWindows.php中的__destruct()函数,调用了removeFiles()

    image-20220615001339350

    跟进removeFiles(),第163行的file_exists可以触发__toString方法

    image-20220615001418986

    全局搜索__toString方法

    在thinkphplibrary hinkModel.php的第2265行,发现其调用了toJson方法

    image-20220616230519422

    跟进toJson,发现其调用了toArray()方法(在Model.php中)

    image-20220616230630861

    toArray

    跟进toArray,发现其有三处可以调用__call方法(就是整一个可以控制的类对象,然后让其调用该类不存在的方法,然后触发__call魔术方法)

    __call(),在对象中调用一个不可访问方法时调用。

    image-20220616231036322

    着重看第三处,也就是第912行,这个需要我们控制$value变量

    这个 v a l u e 变量是根据 ‘ value变量是根据 ` value变量是根据‘value = t h i s − > g e t R e l a t i o n D a t a ( this->getRelationData( this−>getRelationData(modelRelation);`而来的

    getRelationData分析

    跟进getRelationData方法,注意参数$modelRelation需要是Relation类型的,该方法也是thinkphplibrary hinkModel.php中定义的

    image-20220616235535073

    如果我们让if满足,那么$value=$this->parent,看三个条件

    1. 相关阅读:
      检查两个数组在维度,形状以及元素值上是否均等价 numpy.array_equiv()
      JUC并发编程第三篇,CompletableFuture场景练习,电商比价需求性能提升
      加密和解密
      ConvNeXt论文及实现
      C++11 学习之路
      掘金热榜首推!阿里内部都在用的Java后端面试笔记,囊括99%的主流技术
      Kubernetes 是什么 ?
      【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio快速构建React完成点餐H5页面还原
      卷积神经网络超详细介绍(转载)
      HTML5:七天学会基础动画网页(end)
    2. 原文地址:https://blog.csdn.net/m0_67392182/article/details/126812221
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号