最近由于ThinkPHP5存在RCE漏洞 导致我的网站多次被篡改 存个档 留个记录

起因

  • 我的插件商城有人反馈一直卡在主页 无法跳转
  • 我直接回复了上一次的Git存档 网站恢复
  • 没过多久 又出现了 经过排查 发现首页被加入特殊代码 已做转换处理
  • image.png
  • image

排查问题

第一回合 更新框架

  • 既然能多次篡改 明显是网站存在漏洞
  • 找了最新的ThinkPHP更新日志
  • image
  • 经过确认 这两次暴露的漏洞都是 RCE (Remote Command Exec) 也就是远程执行漏洞
  • 随后我升级了 框架到最新的版本 同时恢复了被篡改的文件

第二回合 清理缓存

  • 没过多久 又有人 反应 网站又打不开了
  • 查看代码 发现的确又被篡改了
  • 这里还真的卡了我一会儿
  • 按照思路 因为这个是云虚拟主机 如果要修改网站总是要有一个入口来修改
  • 随后我去下载了网站的访问记录
  • image
  • 由于网站做了伪静态处理 所有 凡是访问 PHP文件的都是有问题的
  • 经过搜索 发现了以下几处 还都是不同的后门

    • http://w.yumc.pw/vendor/composer/autoload_namespacess.php样本下载
    • http://w.yumc.pw/runtime/temp/11f5a43852bea323.php
    • http://w.yumc.pw/public/css/base.php样本下载
    • http://w.yumc.pw/public/images/magic.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 发布!

MiaoWoo
0 声望0 粉丝