漏洞原理 该漏洞出现的原因在于ThinkPHP5框架对控制器名缺少必要的过滤,导致让攻击者可以通过url调用到ThinkPHP框架内部的敏感函数,进而执行任意命令。 代码审计 要理解这个漏洞,首先要学习thinkphp是怎么处理路由的 thinkphp/library/think/App.php#r
漏洞概述 如果 Thinkphp 程序开启了多语言功能,攻击者可以通过 get、header、cookie 等位置传入参数,实现目录穿越+文件包含,通过 pearcmd 文件包含这个 trick 即可实现 RCE。默认情况下,系统只会加载默认语言包,如果需要多语言自动侦测及自动切换,需要在全局的中间件定义文件中添加中间件定义。因此只有启用多语言...
第一回合 更新框架 既然能多次篡改 明显是网站存在漏洞 找了最新的ThinkPHP更新日志 经过确认 这两次暴露的漏洞都是 RCE (Remote Command Exec) 也就是远程执行漏洞 随后我升级了 框架到最新的版本 同时恢复了被篡改的文件 第二回合 清理缓存 没过多久 又有人 反应 网站又打不开了 查看代码 发现的确又被篡改了...
首先,从 GitHub 下载 ThinkPHP 源码(例如,版本为 6.0.12),解压后,通过 composer 安装依赖。在 app/middleware.php 文件中取消注释以开启多语言功能。接着,通过 go-pear.phar 或 Docker 安装 pear。三、漏洞分析 漏洞主要在于 LoadLangPack 类中的 handle 函数,该函数先通过 detect() 方法检...
docker-compose build//可选 docker-compose up -d 完成试验后,记得删除漏洞环境哦~~ docker-compose down docker system prune -a -f//可选 简单访问一下,说明thinkphp2.x任意代码执行漏洞环境搭建成功了 基于查询报错查看版本,确认是ThinkPHP2.1
攻击者可向缓存文件内写入PHP代码,导致远程代码执行。根据漏洞利用能得出通过s参数传递具体的路由。参考http://blog.nsfocus.net/thinkphp-full-version-rce-vulnerability-analysis/?tdsourcetag=s_pctim_aiomsg梳理出的漏洞流程图: 可以得到重要是参数为method和filter。value是传入的数组值,由server决定。
近日,thinkphp发布了安全更新,修复一个可getshell的rce漏洞,由于没有有效过滤$controller,导致攻击者可以利用命名空间的方式调用任意类的方法,进而getshell。二、影响范围 5.x < 5.1.31 5.x < 5.0.23 以及基于ThinkPHP5 二次开发的cms,如AdminLTE后台管理系统、thinkcmf、ThinkSNS等 ...
首先,我们需要准备一个Docker环境,并从vulhub下载相关资料。然后,进入漏洞复现的目录,开始执行实验。实验结束后,别忘了清理漏洞环境,以确保安全。简单访问该环境,可以确认ThinkPHP2.1版本的任意代码执行漏洞已成功搭建。通过查询错误信息,我们进一步验证了这一点。接着,我们通过访问特定URL,确认了漏洞...
thinkphp在开启多语言功能的情况下存在文件包含漏洞,可以通过get、header、cookie等位置传入参数,实现目录穿越和文件包含,同时通过pearcmd文件实现RCE。 pecl是PHP中管理拓展而使用的命令行工具,pear是pecl依赖的类库。也是一个php拓展及应用的一个代码仓库,类似于composer,用于代码的管理和下载。7.3以前 pecl/pear是默认...