lamp服务器站点目录被植入广告代码
lamp服务器站点目录被植入广告代码
欢迎来到 来到大浪涛天的博客 !
lamp服务器站点目录被植入广告代码
1 产生背景
由于公司运维人员在系统上的权限体现分配不合理,导致站点目录被上传木马,把站点目录下所有文件均植入了如下广告<script language=javascript src=http://%4%66E/x.js?google_ad=93>
包括图片目录也被植入,网站打开都会调用这个地址,显示出一个广告,产生恶劣的影响。
2 解决思路
因为站点目录下所有文件都被植入了<script language=javascript src=http://%4%66E/x.js?google_ad=93>这条代码,导致打开任何页面都会调用这个地址,因此需要在每个文件把该代码删除。
3 从发现问题到解决的过程
3.1 运维人员,网站用户发现问题,网站有弹窗广告。
3.2 运营人员报给开发,开发工程师和运维工程师共同解决。
3.3 开发工程师发现问题,所有站点目录被植入了一段JS代码。
3.4 运维工程师解决问题:
3.4.1 备份原始出问题的所有文件
3.4.2 使用find +sed替换内容
3.4.3 确认网站运行正常,且无上述弹窗广告
3.4.5 详细查看日志,寻找问题来源
3.4.6 提供改进方案,杜绝这种事情再次发生
4 处理过程
4.1 通过和该公司运维人员确认确实出现了问题,详细查看确认问题情况,发现是站点目录下所有文件的开头都被植入了恶意代码。
4.2 制定处理方案,先备份已有数据,执行命令批量修改回来。
4.3 写解决说明,发送给运维工程师。
4.4 询问处理结果,详细查看日志,寻求问题来源
4.5 提供站点严格权限规划方案,及新上线发布规范的思路
5 处理步骤
5.1 因此先模拟出问题来源,如下
[root@server ~]# mkdir /www
[root@server ~]# cd /www
[root@server www]# touch file{1..100}
[root@server www]# for n in `ls`;do echo "hello world" >>$n;done
[root@server www]# for n in `ls`;do cat $n;done |wc -l
100
[root@server www]# find ./ -type f |xargs sed -i '1 i <script language=javascript src=http://%4%66E/x.js?google_ad=93></script>'
[root@server www]# find ./ -type f |xargs cat
<script language=javascript src=http://%4%66E/x.js?google_ad=93></script>
hello world
<script language=javascript src=http://%4%66E/x.js?google_ad=93></script>
hello world
<script language=javascript src=http://%4%66E/x.js?google_ad=93></script>
[root@server www]# cp -a /www /mnt/
5.2 利用sed命令将代码片段匹配删除或者替换,如:
删除
[root@server www]# find ./ -type f |xargs sed -i '/^.* src=.*pt>$/d'
[root@server www]# find ./ -type f |xargs cat
hello world
hello world
hello world
hello world
hello world
替换
[root@server www]# find ./ -type f |xargs sed -i '1 i <script language=javascript src=http://%4%66E/x.js?google_ad=93></script>'
[root@server www]#
[root@server www]#
[root@server www]# find ./ -type f |xargs sed -i 's#^.* src=.*pt>$##g'
[root@server www]# find ./ -type f |xargs cat
hello world
hello world
hello world
因为把恶意代码替换为空了,所以每个文件开头都出现了空白行,如果介意的话可以批量删除,如下:
[root@server www]# find ./ -type f |xargs sed -i '/^$/d'
[root@server www]# find ./ -type f |xargs cat
hello world
hello world
hello world