Web应急基础指南
字数 2652 2025-08-20 18:18:10

Web应急响应基础指南

1. 总述

Web应急响应主要针对基于webshell和各类web漏洞(如SQL注入、RCE)的安全事件。虽然从抽象定义角度独立于操作系统(Windows或Linux),但在实际操作中常与操作系统密切相关。

本文重点:

  • 仅涉及Web部分,不包含攻击队后续维权手段(如CS马)
  • 不涉及安全设备日志分析(因厂商设备多、接触有限、客户可能无设备)
  • 基于原始Web日志进行分析

2. 信息搜集

2.1 确定网站使用的服务器类型

2.1.1 访问网站

通过浏览网站可判断服务器/应用语言:

  • 响应头中的Server字段
  • 特定URL路径特征(如.aspx表示.NET)
  • 错误页面特征

2.1.2 查看进程

Windows:

tasklist | findstr "httpd apache nginx java javaw inetinfo"

Linux:

ps -aux | grep -E "apache|httpd|nginx|java|tomcat"

常见进程名:

  • Apache: httpd, apache2
  • Nginx: nginx
  • Tomcat: java/javaw
  • IIS: inetinfo

2.2 常见日志位置

Linux下:

服务器 日志路径 配置文件路径 主要日志文件
Apache /usr/local/apache/logs/, /var/log/apache2/ httpd.conf access.log, error.log
Nginx /etc/nginx/logs/, /var/log/nginx/ nginx.conf access.log, error.log
Tomcat $CATALINA_HOME - catalina.out, localhost.yyyy-mm-dd.log

Windows下:

服务器 日志路径 配置文件路径 主要日志文件
IIS %SystemRoot%\System32\LogFiles\ - -
Apache 安装路径(非固定) httpd.conf access.log, error.log
Nginx 安装路径(非固定) nginx.conf access.log, error.log
Tomcat %CATALINA_HOME% - catalina.out, localhost.yyyy-mm-dd.log

搜索日志文件方法:

  • Linux: find / -name "access.log"
  • Windows: 使用Everything工具搜索

2.3 Web应用中的日志

查找方法:

  1. 在根目录下搜索log文件
  2. 登录网站数据库,查询是否有log表

常见框架日志:

  • ThinkPHP: 自带日志功能
  • 小CMS: 通常有admin_log表

2.4 Docker中的日志

操作命令:

docker ps -a  # 列出所有容器
docker exec -it <id> /bin/bash  # 进入容器shell
docker cp <id>:/etc/passwd /tmp/  # 拷贝容器文件到本地

3. 分析研判

3.1 常见日志格式

Apache访问日志示例:

访问IP - - [访问时间(服务器时间)] "请求方式 请求路由 HTTP协议版本" 响应码 -

3.2 使用工具分析日志

推荐工具:360星图

  1. 修改conf/config.ini中的日志路径
  2. 启动分析
  3. 查看result文件夹中的报告

3.3 使用命令进行日志统计

常用命令组合:

  1. 统计访问次数最多的IP:
cut -d - -f 1 [file] | sort | uniq -c | sort -rn | head -20
  1. 统计访问IP数量:
awk '{print $1}' [file] | sort | uniq | wc -l
  1. 统计特定页面访问次数:
grep "/index.php" [file] | wc -l
  1. 统计每个IP访问的页面数量:
awk '{++S[$1]} END {for (a in S) print a,S[a]}' [file]
  1. 查找IP访问的页面:
grep ^[ip] [file] | awk '{print $1,$7}'
  1. 统计特定时间的访问IP数:
awk '{print $4,$1}' [file] | grep [time_11/Jun/2020:14] | awk '{print $2}' | sort | uniq | wc -l

3.4 黑页与黑链的研判

常见篡改方式:

  • 仅改写TITLE
  • 根据UA判断(PC端不改写)
  • 根据IP判断(境外展示被改写首页)
  • 使用JS脚本定时跳转
  • 仅改写META
  • 修改服务器拦截规则进行劫持

判断方法:

  1. 访问首页并抓包
  2. 检查加载的可疑外部JS
  3. 分析跳转顺序

示例:META篡改

  • 篡改内容可能被实体编码
  • 解码后可发现黑产导航内容

3.5 特殊情况:反向代理

特征:

  • 日志中所有访问IP相同(反向代理服务器IP)
  • 可通过User-Agent头区分真实访问者

4. 排查修复

4.1 排查

4.1.1 判断后门

判断依据:

  1. 创建时间:
    find / -name "*.php" -newermt "2023-01-01" -printf '%T+ %p\n' | sort -r
    
  2. 文件内容:使用D盾等工具查杀
  3. 访问日志:通过日志反推攻击时间

4.1.2 内存马排查

  • PHP内存马:通过被反复落地的文件反推
  • Java内存马:读取注册组件名和字节码

4.2 修复

步骤:

  1. 删除webshell
  2. 修补漏洞(需代码审计)
  3. 根据业务需求调整修复方案

4.3 PHP内存马的排查与修复

特征代码:

<?php
set_time_limit(0);
ignore_user_abort(1);
unlink(__FILE__);
$c = 'webshell内容';
while(true){
    if(!file_exists("back.php")){
        file_put_contents("back.php", $c);
    }
    usleep(1000000);
}
?>

修复方法:

  1. 使用空白文件占位
  2. 定时扫描并删除生成文件
  3. 重启服务(最后手段)

4.4 Java内存马的排查与修复

4.4.1 agent内存马

  • 难以彻底清除,建议重启

4.4.2 组件内存马(servlet/filter/listener)

排查工具:arthas

  1. 列出Java进程:
    jps
    
  2. 连接进程:
    java -jar arthas-boot.jar [pid]
    
  3. 查询所有Filter:
    sc *.Filter
  4. 反编译可疑类:
    jad --source-only 类名

4.5 示例:Filter内存马排查

  1. 使用jps获取PID
  2. 使用arthas连接
  3. 查询Filter并反编译可疑类
  4. 检查Classloader(特别注意匿名或子类实现的classloader)

4.6 示例:Windows应急

4.6.1 日志审计

  1. 查看日志行数
  2. 访问网站判断类型(如CMS系统)
  3. 搜索历史漏洞
  4. 对比POC查找可疑请求

4.6.2 查找后门

  1. 使用D盾扫描网站根目录
  2. 在日志中搜索可疑文件访问记录
  3. 确认webshell类型(如冰蝎)

4.6.3 漏洞修补

  1. 查找漏洞函数
  2. 分析漏洞点(如未过滤的上传扩展名)
  3. 添加安全校验(如文件名正则)
  4. 修改弱口令
  5. 检查数据库连接配置

PHP修补示例:

if(preg_match("/[a-zA-Z0-9-_]*\.?[a-zA-Z0-9-_]*$/", $file['name']) or 
   preg_match("/[a-zA-Z0-9-_]*\.?[a-zA-Z0-9-_]*$/", $file['tmp_name'])){
    Error('你的格式有误!');
}

数据库密码修改(MySQL):

UPDATE hongcms.hong_user SET password="6c10cac8a7ceb242e31e349d1bba9cd8" WHERE username="admin";

5. 攻击溯源

主要方法:

  1. 通过攻击IP进行溯源
    • 使用微步等工具查询IP情报
    • 判断是住宅IP还是服务器IP
  2. 对服务器IP的额外操作:
    • 探测运行的服务
    • 查询绑定域名的WHOIS信息

难点:

  • 攻击IP未绑定域名或未运行服务时溯源困难
  • 移动基站IP难以追踪

6. 总结

Web应急响应关键点:

  1. 快速定位日志文件
  2. 准确判断攻击入口
  3. 彻底清除后门文件
  4. 有效修补漏洞
  5. 做好防御加固

注意事项:

  • 修补前需了解业务需求
  • 重启服务前需与客户协商
  • 记录完整处理过程便于复盘
Web应急响应基础指南 1. 总述 Web应急响应主要针对基于webshell和各类web漏洞(如SQL注入、RCE)的安全事件。虽然从抽象定义角度独立于操作系统(Windows或Linux),但在实际操作中常与操作系统密切相关。 本文重点: 仅涉及Web部分,不包含攻击队后续维权手段(如CS马) 不涉及安全设备日志分析(因厂商设备多、接触有限、客户可能无设备) 基于原始Web日志进行分析 2. 信息搜集 2.1 确定网站使用的服务器类型 2.1.1 访问网站 通过浏览网站可判断服务器/应用语言: 响应头中的 Server 字段 特定URL路径特征(如 .aspx 表示.NET) 错误页面特征 2.1.2 查看进程 Windows : Linux : 常见进程名: Apache: httpd, apache2 Nginx: nginx Tomcat: java/javaw IIS: inetinfo 2.2 常见日志位置 Linux下: | 服务器 | 日志路径 | 配置文件路径 | 主要日志文件 | |--------|----------|--------------|--------------| | Apache | /usr/local/apache/logs/, /var/log/apache2/ | httpd.conf | access.log, error.log | | Nginx | /etc/nginx/logs/, /var/log/nginx/ | nginx.conf | access.log, error.log | | Tomcat | $CATALINA_ HOME | - | catalina.out, localhost.yyyy-mm-dd.log | Windows下: | 服务器 | 日志路径 | 配置文件路径 | 主要日志文件 | |--------|----------|--------------|--------------| | IIS | %SystemRoot%\System32\LogFiles\ | - | - | | Apache | 安装路径(非固定) | httpd.conf | access.log, error.log | | Nginx | 安装路径(非固定) | nginx.conf | access.log, error.log | | Tomcat | %CATALINA_ HOME% | - | catalina.out, localhost.yyyy-mm-dd.log | 搜索日志文件方法: Linux: find / -name "access.log" Windows: 使用Everything工具搜索 2.3 Web应用中的日志 查找方法: 在根目录下搜索log文件 登录网站数据库,查询是否有log表 常见框架日志: ThinkPHP: 自带日志功能 小CMS: 通常有admin_ log表 2.4 Docker中的日志 操作命令: 3. 分析研判 3.1 常见日志格式 Apache访问日志示例: 3.2 使用工具分析日志 推荐工具:360星图 修改 conf/config.ini 中的日志路径 启动分析 查看 result 文件夹中的报告 3.3 使用命令进行日志统计 常用命令组合: 统计访问次数最多的IP: 统计访问IP数量: 统计特定页面访问次数: 统计每个IP访问的页面数量: 查找IP访问的页面: 统计特定时间的访问IP数: 3.4 黑页与黑链的研判 常见篡改方式: 仅改写TITLE 根据UA判断(PC端不改写) 根据IP判断(境外展示被改写首页) 使用JS脚本定时跳转 仅改写META 修改服务器拦截规则进行劫持 判断方法: 访问首页并抓包 检查加载的可疑外部JS 分析跳转顺序 示例:META篡改 篡改内容可能被实体编码 解码后可发现黑产导航内容 3.5 特殊情况:反向代理 特征: 日志中所有访问IP相同(反向代理服务器IP) 可通过User-Agent头区分真实访问者 4. 排查修复 4.1 排查 4.1.1 判断后门 判断依据: 创建时间: 文件内容:使用D盾等工具查杀 访问日志:通过日志反推攻击时间 4.1.2 内存马排查 PHP内存马:通过被反复落地的文件反推 Java内存马:读取注册组件名和字节码 4.2 修复 步骤: 删除webshell 修补漏洞(需代码审计) 根据业务需求调整修复方案 4.3 PHP内存马的排查与修复 特征代码: 修复方法: 使用空白文件占位 定时扫描并删除生成文件 重启服务(最后手段) 4.4 Java内存马的排查与修复 4.4.1 agent内存马 难以彻底清除,建议重启 4.4.2 组件内存马(servlet/filter/listener) 排查工具:arthas 列出Java进程: 连接进程: 查询所有Filter: sc *.Filter 反编译可疑类: jad --source-only 类名 4.5 示例:Filter内存马排查 使用jps获取PID 使用arthas连接 查询Filter并反编译可疑类 检查Classloader(特别注意匿名或子类实现的classloader) 4.6 示例:Windows应急 4.6.1 日志审计 查看日志行数 访问网站判断类型(如CMS系统) 搜索历史漏洞 对比POC查找可疑请求 4.6.2 查找后门 使用D盾扫描网站根目录 在日志中搜索可疑文件访问记录 确认webshell类型(如冰蝎) 4.6.3 漏洞修补 查找漏洞函数 分析漏洞点(如未过滤的上传扩展名) 添加安全校验(如文件名正则) 修改弱口令 检查数据库连接配置 PHP修补示例: 数据库密码修改(MySQL): 5. 攻击溯源 主要方法: 通过攻击IP进行溯源 使用微步等工具查询IP情报 判断是住宅IP还是服务器IP 对服务器IP的额外操作: 探测运行的服务 查询绑定域名的WHOIS信息 难点: 攻击IP未绑定域名或未运行服务时溯源困难 移动基站IP难以追踪 6. 总结 Web应急响应关键点: 快速定位日志文件 准确判断攻击入口 彻底清除后门文件 有效修补漏洞 做好防御加固 注意事项: 修补前需了解业务需求 重启服务前需与客户协商 记录完整处理过程便于复盘