lamp服务器站点目录被植入广告代码处理

时间:2022-10-10 10:44:33

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