网站为了实现加速接见,会将用户接见过的页面存入缓存来减小数据库查询的开销。而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″));
12aa2df68e54e8f4c8b
通过接见缓存乐成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. 从网页实现入手,读取缓存时的使用的唯一索引可以设置的比较复杂,让攻击者无法猜到。如: 3aeadd68_article_id
3. 从服务器的设置入手,关闭从外部对于cache文件夹的直接接见。
4. 从php的设置入手,关闭eval等危险函数。
https://paper.seebug.org//
*本文原创作者:WindWing(mail)
本文导读目录: 1、辽宁大量特警突袭一家刚开业几个月的药店,多人被蒙头套押走,怎么回事? 2、香港旅游大巴于菲律宾被劫事件 3、在菲律宾的香港游客被劫持事件中,大巴司机为什么要说所有的人质都被...
随着百姓生活水平不断提高,绝大多数的人对健康意识加强了,都想要把疾病消灭在萌发期间或许因不良的生活习惯引发了各种肛肠疾病,而不得不看医生。青海东大肛肠医院怎么样好不好呢? 青海东大肛肠医院建院多年来...
中新网11月25日电 据法新社报道,当地时间25日,英国政府预测,受新冠疫情影响,英国经济2020年将萎缩11.3%,这意味着,英国经济将经历300多年来最严重的年度衰退。在此背景下,英国当局宣布...
事物是有2面的,念书早恋中学生的爱情乐成率我想应该只有0,要求越高,别妙想天开。其实都是出格重要的呢,早恋种下苦果分散意志,年数到了,也因此反倒会逐渐造就起更好的习惯,短暂的祝福永远都不会幸福,女孩早...
媳妇微信如何和我手机同步(媳妇微信聊天同歩接受) 应当不好吧,可是你为何要同歩呢,那么不信任何必在一起 如何做才能够同歩接受另一方微信聊天纪录,另外不被另一方了解? 谁选购过第三方软件,应用过沒有 要...
周深的最新歌曲《花西子》上线,天籁深音传韵艺术美,化妆品品牌花西子携手并肩4位歌曲工匠,一同写作,许多人都被优美的歌词节奏所触动,那麼,周深花西子歌曲歌词是啥?下边我就产生花西子歌曲歌词完整篇。...