最近由于ThinkPHP5存在RCE漏洞 导致我的网站多次被篡改 存个档 留个记录
起因
- 我的插件商城有人反馈一直卡在主页 无法跳转
- 我直接回复了上一次的Git存档 网站恢复
- 没过多久 又出现了 经过排查 发现首页被加入特殊代码 已做转换处理
排查问题
第一回合 更新框架
- 既然能多次篡改 明显是网站存在漏洞
- 找了最新的ThinkPHP更新日志
- 经过确认 这两次暴露的漏洞都是 RCE (Remote Command Exec) 也就是远程执行漏洞
- 随后我升级了 框架到最新的版本 同时恢复了被篡改的文件
第二回合 清理缓存
- 没过多久 又有人 反应 网站又打不开了
- 查看代码 发现的确又被篡改了
- 这里还真的卡了我一会儿
- 按照思路 因为这个是云虚拟主机 如果要修改网站总是要有一个入口来修改
- 随后我去下载了网站的访问记录
- 由于网站做了伪静态处理 所有 凡是访问 PHP文件的都是有问题的
经过搜索 发现了以下几处 还都是不同的后门
- 删除文件之后恢复网站访问
第三回合 屏蔽不安全的目录
- 没错 就半小时不到 又被改了
- 由于网站在万网 所以
index.php
文件只能在htdocs
目录下 - 于是我修改了入口文件 导致不安全的目录暴露 ThinkPHP适配云虚拟主机
- 同时 云虚拟主机好像不支持屏蔽目录
- 检查文件的时候 发现了
.htaccess
文件 - 这个文件是用来做Rewrite的 于是 写入规则 屏蔽访问
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteRule ^(vendor|runtime|thinkphp)(.*)$ [R=403,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
- 恢复文件 恢复访问
第四回合 屏蔽所有不安全的访问
- emm 不说了
- 检查日志文件 发现还是
public
目录导致了 - 由于
public
目录不能屏蔽 - 想到网站反正做了伪静态 索性就屏蔽了所有的 PHP 文件访问
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteRule ^(vendor|runtime|thinkphp)(.*)$ [R=403,L]
RewriteRule ^(.*\.php)$ [R=403,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
- 战斗到此结束 到目前为止 网站还没被篡改 有后续继续更新
相关文案
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。