网络安全面试题汇总¶
整理自奇安信、长亭等安全厂商面试真题 最后更新:2026-04-19
一、Web 漏洞基础¶
1. XSS 与 CSRF 的区别¶
| 对比项 | XSS | CSRF |
|---|---|---|
| 全称 | Cross-Site Scripting | Cross-Site Request Forgery |
| 攻击方式 | 注入恶意脚本,获取用户 Cookie | 构造恶意链接,利用用户 Cookie 发起请求 |
| 是否能看到 Cookie | 能 | 不能 |
| 发生频率 | 更容易发生 | 相对较少 |
| 危害程度 | 高 | 更高 |
2. XSS 原理与利用¶
XSS 攻击通过在网页中注入恶意脚本,在用户浏览器中执行,常见于表单、搜索框、评论等交互式页面。
属性可控时的利用:
通过控制 HTML 属性(如 onload、onerror、href)注入恶意脚本:
HttpOnly 绕过:
HttpOnly 禁止 JS 通过 document.cookie 读取 Cookie,绕过方式:
- 利用 XSS 读取非 HttpOnly 的 Cookie
- 利用 CSRF 通过服务端逻辑获取
- 利用浏览器漏洞或中间人攻击
3. CSRF 防护¶
- 使用 CSRF Token 验证表单提交
- 同源策略限制请求来源
- 校验 HTTP Referer 头
- 关键操作使用二次确认
4. SQL 注入¶
原理: 攻击者将恶意 SQL 语句插入到应用程序的输入参数中,篡改后端数据库查询逻辑,获取数据或控制服务器。
常用关键字: SELECT、UNION、WHERE
分类:
| 类型 | 说明 |
|---|---|
| 数字型 | id=1 AND 1=1 |
| 字符型 | id='1' AND '1'='1 |
| 布尔盲注 | 通过页面返回 true/false 判断 |
| 时间盲注 | 通过响应延迟判断(sleep()) |
| 报错注入 | 利用数据库报错信息回显数据 |
检测方法(以 id=1 为例):
- 尝试
id=1',观察是否报错 - 使用
order by N确定列数 - 使用
limit 1,1绕过分页获取数据
sleep() 被禁用后的替代方案:
BENCHMARK(10000000, SHA1('test'))— 通过计算消耗时间WAITFOR DELAY '0:0:5'(MSSQL)- 布尔盲注逐位推断数据
绕过方式: 大小写绕过、注释绕过、关键字替换、特殊符号编码
防御措施:
- 参数化查询 / 预编译 SQL
- 输入过滤与校验
- WAF 防护(安全狗、阿里云盾等)
- 定期基线检查与漏洞扫描
5. XXE(XML 外部实体注入)¶
危害:
- 读取服务器本地文件
- 发起内网端口扫描
- SSRF 攻击
- 命令执行(特定条件下)
易出现的位置: 任何解析 XML 输入的功能 — Web 服务接口、文件上传(xlsx/docx)、SOAP 接口等。
攻击原理: 利用 XML 的 <!ENTITY> 定义外部实体,加载恶意资源。
6. 业务逻辑漏洞 — 任意密码重置¶
常见场景:
- 验证码可爆破或可预测
- 重置链接中的 Token 可伪造
- 修改请求中的用户 ID 即可重置他人密码
- 验证步骤可跳过(前端校验,后端未校验)
根因: 缺乏严格的身份验证、逻辑校验不完整、前后端校验不一致。
二、中间件漏洞¶
IIS¶
| 版本 | 漏洞 |
|---|---|
| IIS 6.0 | .asp; 解析漏洞(分号截断) |
| IIS 7.0/7.5 | Fast-CGI 解析漏洞(xx.jpg/.php) |
| 通用 | 短文件名枚举、PUT 上传 |
Java 中间件¶
| 中间件 | 典型漏洞 |
|---|---|
| Apache Struts2 | 远程代码执行(CVE-2017-5638 等) |
| Apache Tomcat | 文件上传漏洞、路径穿越 |
| Spring Framework | Spring4Shell 远程代码执行 |
| WebLogic | 反序列化 RCE |
其他¶
- Apache:目录遍历、解析漏洞
- Nginx:配置错误导致的目录穿越、CRLF 注入
- Tomcat:AJP 协议漏洞(Ghostcat)
三、有害的 HTTP 请求头¶
| 请求头 | 风险 |
|---|---|
Referer | 泄露用户来源页面信息 |
User-Agent | 指纹识别、UA 注入 |
X-Forwarded-For | IP 地址伪造 |
Authorization | 包含敏感认证信息 |
Cookie | 会话劫持 |
Host | Host 头注入攻击 |
四、渗透测试思路¶
单一网站¶
信息收集
├── CDN 判断 → 有则找真实 IP
├── 旁站 / C 段扫描
├── CMS 识别 → 中间件、插件、操作系统
├── 端口探测
├── 目录扫描
├── JS 文件分析(敏感信息泄露)
└── APP、公众号等关联资产
漏洞探测
├── 常规漏洞测试(SQL/XSS/RCE/文件上传...)
├── 漏洞验证 → 能否获取 WebShell 或权限
└── 漏洞利用
权限提升
├── Windows:内核溢出、数据库提权、DLL 劫持、组策略
└── Linux:内核漏洞、SUID 提权、sudoers 配置错误
日志清理
网段/区域¶
使用 Goby 等工具批量扫描资产,批量打点,对薄弱点进行漏洞探测。
漏洞扫描工具¶
- Nessus — 系统漏洞扫描
- AWVS — Web 漏洞扫描
- AppScan — Web 应用安全测试
五、应急响应¶
流程¶
- 收集信息:搜集客户信息和中毒信息,备份现场
- 判断类型:勒索病毒、挖矿、断网、DDoS 等
- 深入分析:日志分析、进程分析、启动项分析、样本分析
- 清理处置:杀进程、删文件、打补丁、修复
- 产出报告:输出完整的安全事件报告
Windows 应急¶
| 检查项 | 命令/方法 |
|---|---|
| 可疑账号 | net user、lusrmgr.msc 检查隐藏/克隆账号 |
| 系统日志 | eventvwr.msc 查看登录时间和异常 |
| 异常端口 | netstat -ano 检查可疑连接 |
| 定位进程 | tasklist \| findstr "PID" |
| 启动项 | msconfig 检查可疑启动项 |
| 计划任务 | 任务计划程序中检查异常任务 |
| 系统补丁 | systeminfo 查看版本和补丁 |
| 自动查杀 | 360、火绒剑;WebShell 用 D 盾、河马 |
| 日志分析 | 360 星图、ELK |
Linux 应急¶
| 检查项 | 命令 |
|---|---|
| 异常账号 | cat /etc/passwd(检查 nologin) |
| 当前登录 | who(tty 本地 / pts 远程)、w、uptime |
| 历史命令 | history(配置显示 IP 和时间) |
| 可疑端口 | netstat -antlp \| more |
| 进程分析 | ps aux \| grep PID、ls -l /proc/PID/exe |
| 运行级别 | vi /etc/inittab,检查 /etc/rc.d/rc[0~6].d |
| 定时任务 | crontab -l |
| 异常服务 | chkconfig --list |
| 安全日志 | grep + awk 分析 /var/log/secure |
| 后门查杀 | chkrootkit、rkhunter、ClamAV |
| WebShell | D 盾、河马,或手工搜关键函数(eval、system、shell_exec) |
六、流量分析与 WebShell 特征¶
基本方法¶
将流量包导入 Wireshark,使用过滤规则分析。
冰蝎(Behinder)流量特征¶
- 基于 Java 开发的动态加密 WebShell 客户端
- 通信分两阶段:密钥协商 + 加密传输
- 流量经过 AES 加密,常规 WAF 难以检测
七、代码审计¶
PHP 常见考点¶
| 考点 | 说明 |
|---|---|
| 弱类型比较 | 0 == '0' 为 true,可绕过逻辑判断 |
| 反序列化 | unserialize() 处理恶意数据导致 RCE |
| 命令注入 | system()、exec()、passthru() 未过滤输入 |
| 文件包含 | include($_GET['file']) 导致 LFI/RFI |
Python 框架漏洞¶
| 框架 | 常见漏洞 |
|---|---|
| Django | XSS、CSRF、SQL 注入 |
| Flask | SSTI 模板注入、路径穿越 |
| FastAPI | 路径穿越、参数校验绕过 |