ThinkPHP6.0任意文件如何创建Getshell复现
这期内容当中小编将会给大家带来有关ThinkPHP6.0任意文件如何创建Getshell复现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联-专业网站定制、快速模板网站建设、高性价比木垒哈萨克网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式木垒哈萨克网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖木垒哈萨克地区。费用合理售后完善,10年实体公司更值得信赖。
2020年1月10日,ThinkPHP团队发布一个补丁更新,修复了一处由不安全的SessionId导致的任意文件操作漏洞。该漏洞允许攻击者在目标环境启用session的条件下创建任意文件以及删除任意文件,在特定情况下还可以getshell。
0x03 影响版本
ThinkPHP 6.0.0-6.0.1
0x04 环境搭建
https://getcomposer.org/download/
composer config -g repo.packagist composer https://packagist.phpcomposer.com
2、安装thinkphp
composer create-project topthink/think tp6 (tp6自定义)
出现报错可参考:
http://www.jrnw.net/index.php/2019/05/30/thinkphp6%E6%A1%86%E6%9E%B6%E6%BA%90%E7%A0%81%E7%9A%84%E4%B8%8B%E8%BD%BD%E4%B8%8E%E5%AE%89%E8%A3%85%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B/
3、版本选择
将 tp6/composer.json 文件的 "topthink/framework": "^6.0.0" 改成 6.0.0 版本,并执行更新命令
进入tp6目录cd tp6composer update
PS:
如果是linux 就再执行启动环境 :./think run --host=0.0.0.0 --port=8000
如果不能拉取到环境,公众号内回复“tp60环境”获取
0x05 漏洞利用
构造位置:tp60\app\controller\Index.php
需要增加构造的内容:
use think\facade\Session;Session::set('user',$_GET['username']);
0x06 坑点
1、本地测试localhost失败
问题:
当我们用localhost去测试poc的时候,请求中自带cookie,即使修改也没用
解决:
通过IP去测试,127.0.0.1 或者内网IP
2、shell选择
问题:
在最新版的phpstudy测试菜刀马失败
解决:
冰蝎的shell可以用。
0x07 修复方式
官方给出方案
对session id 加一个过滤,使用ctype_alnum()
$this->id = is_string($id) && strlen($id) === 32 ctype_alnum($id) && ? $id : md5(microtime(true) . session_create_id());
上述就是小编为大家分享的ThinkPHP6.0任意文件如何创建Getshell复现了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
分享文章:ThinkPHP6.0任意文件如何创建Getshell复现
文章起源:http://scyanting.com/article/jiohhd.html