Webshell应急响应指南
Webshell应急响应指南
- 1.Webshell 排查
- 2.入侵时间确定
- 3.Web日志分析
- 4.漏洞分析
- 5.漏洞复现
- 6.清除Webshell并修复漏洞
- 7.Webshell 防御方法
1.Webshell 排查
可利用 Webshell 扫描工具(如 D 盾,河马)对应用部署目录进行扫描,如网站D:\\WWW\\目录
或者将当前网站目录文件与此前备份文件进行比对,查看是否存在新增的不一致内容,确定是否包含 Webshell 相关信息,并确定 Webshell 位置及创建时间
也可手工搜索可能包含 Webshell 特征的文件
find ./ -type f -name "*.jsp" |xargs grep "exec("
find ./ -type f -name "*.php" |xargs grep "eval("
find ./ -type f -name "*.asp" |xargs grep "execute("
find ./ -type f -name "*.aspx" |xargs grep "eval("# 针对免杀Webshell,可以查看是否使用了编码函数
find ./ -type f -name "*.php " |xargs grep "base64_decode"
2.入侵时间确定
通过在网站目录中发现的 Webshell 文件的创建时间,判断攻击者实施攻击的时间范围,以便后续依据此时间进行溯源分析、追踪攻击者的活动路径
3.Web日志分析
需要对 Web 日志进行分析,以查找攻击路径及失陷原因,常见 Web 中间件默认路径
【Windows】
- Apache:
apache\\logs\\error.log、apache\\logs\\access.log
- IIS:
C:\\inetpub\\logs\\LogFiles、C:\\WINDOWS\\system32\\LogFiles
- Tomcat:
tomcat\\access_log
【Linux】
Apache:
/etc/httpd/logs/access_log
/var/log/httpd/access_log
Nginx:
/usr/local/nginx/logs
在 Linux 日志排查时,为方便日志检索及溯源分析,列举了常用日志检索命令:
- 定位具体的IP 地址或文件名:
find . access_log | grep xargs ip
find . access_log | grep xargs filename
- 查看页面访问排名前十的IP 地址
cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -r | head -10
- 查看页面访问排名前十的 URL 地址
cat access.log | cut -f4 -d " " | sort | uniq -c | sort -k 1 -r | head -10
4.漏洞分析
通过日志中发现的问题,针对攻击者活动路径,可排查网站中存在的漏洞, 并进行分析(主要分析什么漏洞导致的webshell攻击)
5.漏洞复现
对已发现的漏洞进行漏洞复现,从而还原攻击者的活动路径
6.清除Webshell并修复漏洞
- 处置时先断网,清理发现的 Webshell
- 如果网站被挂黑链或者被篡改首页,那么应删除篡改内容,同时务必审计源码,保证源码中不存在恶意添加的内容
- 在系统排查后,及时清理系统中隐藏的后门及攻击者操作的内容,存在
rootkit
类后门,则建议重装系统 - 对排查过程中发现的漏洞利用点进行修补,必要时可以做黑盒渗透测试,全面发现应用漏洞
- 待上述操作处置完成,重新恢复网站运行
7.Webshell 防御方法
- 配置必要的防火墙,并开启防火墙策略,防止暴露不必要的服务为攻击者提供利用条件
- 对服务器进行安全加固,例如,关闭远程桌面功能、定期更换密码、禁止使用最高权限用户运行程序、使用 HTTPS 加密协议等
- 加强权限管理,对敏感目录进行权限设置,限制上传目录的脚本执行权限,不允许配置执行权限等
- 安装 Webshell 检测工具,根据检测结果对已发现的可疑 Webshell 痕迹立即隔离查杀,并排查漏洞
- 排查程序存在的漏洞,并及时修补漏洞
- 时常备份数据库等重要文件防止糟糕的事情发生重装系统
- 需要保持日常维护,并注意服务器中是否有来历不明的可执行脚本文件
- 采用白名单机制上传文件,不在白名单内的一律禁止上传,上传目录权限遵循最小权限原则