首页/安全/取证与溯源速查/Web 目录可疑脚本排查
Linux 取证135 条

Web 目录可疑脚本排查

按时间窗筛出新增或修改的脚本文件,再按危险函数特征逐个人工确认,是排查 WebShell 的常规路径。

取证与溯源速查安全更新于 2026-10-13

Web 目录可疑脚本排查

Web 目录排查通常分两步:先按时间窗筛出新增或修改的脚本文件,把范围从海量文件中压缩到可疑集合;再按危险函数特征逐个读代码确认。时间窗是效率关键,入侵窗口已知时可以把几十天缩到几小时;特征匹配只负责给候选排序,最终判定要看完整调用链、文件属主与访问记录。

基本信息

时间过滤find <目录> -newermt '<起点>' ! -newermt '<终点>'
特征函数eval、assert、base64_decode、system、passthru 等组合
常见落地位置/var/www/html、上传目录、缓存目录、日志目录
权限视角属主为 Web 运行用户且带可执行位的脚本更可疑
判定原则特征命中只是候选,须读代码确认数据来源与执行路径

典型使用场景

  • 按已确定的入侵窗口筛出窗口内被写入的脚本文件
  • 检查上传目录与缓存目录中出现的异常脚本
  • 核对正常文件是否被插入后门段落或额外的执行入口
  • 结合访问日志确认可疑脚本是否真的被外部请求调用过
  • 清理前固定样本与哈希,为后续分析保留原始文件

两步排查

两步排查
find /var/www -xdev -type f -newermt '-30 days' \( -name '*.php' -o -name '*.jsp' \) 2>/dev/null | head -30
find /var/www -xdev -type f -name '*.php' -newermt '2026-01-01' ! -newermt '2026-01-03' 2>/dev/null
find /var/www -xdev -type f -perm -u+x -name '*.php' 2>/dev/null | head    # 带执行位的脚本
grep -RlnE 'eval\(|base64_decode\(|assert\(|system\(' /var/www/html --include='*.php' 2>/dev/null | head
ls -lt --time-style=long-iso /var/www/html | head -20                      # 目录内最近改动

排查维度

维度方法判断要点
时间find -newermt 限定窗口优先看窗口内新增与修改的文件
函数特征匹配危险函数与编码函数组合出现比单一命中更可疑
属主与权限ls -l 看属主与权限位Web 用户写入且带执行位需重点看
访问记录访问日志中对应路径的请求被外部调用是实际利用的旁证
特征匹配必然误报:模板引擎、编码库、混淆过的正常代码都可能命中 eval 或 base64_decode。定性前要读完整文件,确认参数来源与调用条件,不能只凭关键词就下结论。
确认可疑文件之前不要删除或覆盖:先复制样本并计算哈希,保留原路径与时间信息,再按处置流程处理,否则后续既无法复核,也无法追究本次事件的责任边界。

易错点

  • 凭关键词命中直接判定为 WebShell,未读代码导致误报并影响正常业务
  • 只搜常见扩展名,漏掉上传目录中的其他后缀与被改写过的正常文件
  • 没有按入侵窗口限定时间,在数十万文件中人工翻找效率极低
  • 清理时直接删除文件未留存样本,后续无法分析攻击者代码与跳板

数据来源与参考

  • OWASP(WebShell 检测与文件完整性)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌