zoukankan      html  css  js  c++  java
  • ThinkPHP 3.2.3~5.0.10 缓存函数设计缺陷后台GetShell实战

    0×00 前言

    ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的,由于其简单易用,很多cms都基于该框架改写。然而 Thinkphp在缓存使用却存在缺陷,生成缓存时,Thinkphp会将数据序列化存进一个php文件,这就产生了很大的安全问题。

    0×01 环境搭建

    工具

    phpstudy

    http://www.phpstudy.net/phpstudy/phpStudy20161103.zip

    Jymusic cms

    http://www.jyuu.cn/topic/t/41

    xyhcms

    https://pan.baidu.com/s/1qYhTKc8

    搭建

    安装好phpstudy,把jymusic目录下的所有文件及文件夹拷贝到phpstudy的www目录下,浏览器访问http://localhost/install.php,然后配置一下数据库信息即可。

    另外xyhcms安装类似,这里不赘述。

    0×02本地后台getshell

    Jymusic cms

    先看一下管理员登录页面的源代码,看到核心入口为ThinkPHP.php,找到并打开查看

    发现应用缓存目录为Temp文件夹

    打开Temp文件夹会发现有很多缓存文件,我们随便打开即可看看,可以发现里面的内容有点像网站配置信息,只不过是序列化后的结果

    所以我们在后台的网站设置处插入一句话,就会被ThinkPHP写入缓存文件。而且这个缓存文件的文件名都是固定不变的,这也是导致getshell的原因。

    成功插入后,我们来执行一下phpinfo()函数看看,菜刀也能成功连接

    xyhcms

    xyhcms和Jymusic cms一样使用了ThinkPHP框架,这里不赘述,直接给出缓存文件的位置

    xyhcms其实还有一个漏洞,在模板管理处可以添加一个php后缀的模板,文件内容也未做任何检测过滤。下面是成功getshell过程

    0×03总结

    其实现在很多小型网站都是基于ThinkPHP框架开发的,很多都存在这种问题。当你找不到上传点的时候,可以试试这种方法。当然,肯定有人会说,这个要后台登录才能利用,你只是在本地复现,都没实战过,说个锤子。其实,我还真的实战过,只是不方便贴图,使用弱口令做密码还是挺多的,所以锤子未必不可用。还有,有的网站,虽然说你用很简单的方法getshell,但是其实可以研究的东西还有很多,比如你getshell之后发现权限不够,那就可以试试提权,例如用udf提权、使用mysql远程连接结合sqlmap提权等等,虽然有些方法很早就有了,但是并不是每个人都会,而且一些老的思路还有可能启发你新的思考,继续加油吧!

    转自:https://www.freebuf.com/articles/web/148629.html

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    各种锁
    几百兆的sql文件无法编辑
    og4j1.x升级log4j2.x及异步日志开启
    TSNE/分析两个数据的分布
    _tkinter.TclError: no display name and no $DISPLAY environment variable
    split分割文件
    ubuntu+jdk
    进程操作
    ImportError: No module named apex
    Ubuntu 16.04.4安装Anaconda
  • 原文地址:https://www.cnblogs.com/devi1/p/13486662.html
Copyright © 2011-2022 走看看