利用Thinkphp 5缓存漏洞实现前台Getshell

hacker4年前关于黑客接单291

  网站为了实现加速访问,会将用户访问过的页面存入缓存来减小数据库查询的开销。而Thinkphp5框架的缓存漏洞使得在缓存中注入代码成为可能。(漏洞详情见参考资料)

  本文将会详细讲解:

  1. 如何判断缓存漏洞存在的可能性

  2. 如何利用Thinkphp5的框架漏洞结合网站的一些配置实现前台getshell

  希望可以给予读者一些关于漏洞应用的启发。

  1.某基于Thinkphp5.0.10搭建的论坛类测试网站

  2.apache2

  3.php5.6及以上版本,相关php组件

  4.mysql

  1.dirsearch (github上的一个用python编写的网站路径扫描工具)

  1.查看网页的cookie,发现存在thinkphp_show_page_trace字段,确定网页基于thinkphp框架。

  

  2.使用 dirsearch 扫描目标网站。发现可以访问 cache目录,说明可能存在缓存漏洞。

  

  1.考虑到这是一个论坛类网站,尝试发帖注入缓存。

  

  2.这是最困难的一步,猜解缓存中的php文件名。根据框架实现,文件名是一个唯一字符串的md5码(此处的md5要用php的函数计算,测试发现和网上的一些在线平台计算结果不同)。考虑到论坛类网站有大量的帖子,需要用数据库存储,而帖子的索引应该为很有可能为id 。

  再结合url的路径名,猜测为article_id

  echo(md5(“article_52″));

  12a51218427a2df68e54e8f4c8b10109

  

  通过访问缓存成功getshell

  

  在thinkphp框架中,/thinkphp/library/think/cache/driver/File.php中定义了缓存的实现。其中,getCacheKey($name)函数实现了cache文件路径的计算,为获得缓存文件名称提供了可能。

  

  而set()与get()函数以序列化对象的方式无过滤地实现了缓存数据的写入与读出,为代码注入缓存提供可能。

  

  

  通过测试,可以发现帖子中的内容可以直接写入缓存文件。

  

  由于缓存文件是一个php文件,可以进行代码注入。在代码前加一个回车,使代码行独立于前面的注释行。再在末尾加上注释符号//,注释剩余内容。

  在处理帖子的代码中,读取帖子首先查询cache文件,通过调用thinkphp5框架中的cache接口实现。

  

  1. 从框架入手,在/thinkphp/library/think/cache/driver/File.php 中的set()函数中对于$value参数进行过滤,去除换行符号。(具体代码见参考资料)缺点: 可能会导致缓存文件在展示时文本布局的改变。

  2. 从网页实现入手,读取缓存时的使用的唯一索引可以设置的比较复杂,让攻击者无法猜到。如: 3ae282ad69314d68_article_id

  3. 从服务器的配置入手,关闭从外部对于cache文件夹的直接访问。

  4. 从php的配置入手,关闭eval等危险函数。

  https://paper.seebug.org/374/

  *本文原创作者:WindWing(mail)

相关文章

绘色宝贝纸尿裤怎么样 绘色宝贝纸尿裤使用测评

绘色宝贝纸尿裤怎么样 绘色宝贝纸尿裤使用测评

绘色商品尿不湿是国内的尿不湿怕怕怕,许多妈妈在给商品挑选尿不湿都是会从尿不湿的柔软性吸水能力层面着手挑选较为,下边的我就产生:绘色商品尿不湿应用评测。 绘色商品尿不湿如何 摄取量非常好,纤薄十...

黑客先办事后付款是真的吗?请黑客盗微信号多少钱

十五年以前,如同现在一样闷热的夜晚,人们屏气凝声,守在电视机前听萨马兰奇说出:“The city of Beijing”。 彼时年轻的我们之所以雀跃,是因为确信,可以从此平等地分享人类的荣光。...

如何学会编写代码(初学者怎样编写代码)

如何学会编写代码(初学者怎样编写代码)

本文目录一览: 1、怎么写代码? 2、新手怎么学代码编程? 3、代码怎么自学? 4、新手怎么学代码编程? 5、如何学会写代码? 需要循序渐进多练习 怎么写代码? 零基础的人想要写代码...

手机可以看到老公的手机微信聊天记录吗

爱情的开始总是美好而甜蜜的,但在俩个人发展的过程中,总是会出现一些挫折和争吵,有的人越吵越甜蜜,但是有的感情吵着吵着就没了。友谊长存小编带来:情侣吵架后感到心灰意冷的伤感文案句子。 情侣吵架后感到心...

世卫组织:全球累计不惑之年感慨新冠确诊病例达57882183例

  新华社日内瓦11月22日电(记者刘曲)世界卫生组织22日公布的最新数据显示,全球累计新冠确诊病例达57882183例。   世卫组织网站最新数据显示,截至欧洲中部时间22日14时31分(北京时间...

华为出售荣耀,职场人启示录

华为出售荣耀,职场人启示录

编辑导读:华为出售荣耀的工作在各界引起了遍及接头,这样的大行动被视为是华为在艰巨时期的自救。从一个普通的职场人角度出发,我们能从这次事件中得到哪些启示呢?本文将从三个方面展开阐明,但愿对你有辅佐。...