CISAW 简答题

1. 简述什么是存储型 XSS,什么是反射型 XSS,并说明区别。

存储型 XSS(Stored XSS),也称为持久型 XSS,是指恶意脚本被永久存储在目标服务器上,例如在数据库、消息论坛、访客日志或评论字段中。当用户访问包含恶意脚本的页面时,脚本会执行,影响所有访问该页面的用户。

反射型 XSS(Reflected XSS),也称为非持久型 XSS,是指恶意脚本包含在用户发送给服务器的请求中,并在服务器的响应中立即反射回来。通常,攻击者会诱导用户点击包含恶意脚本的链接,从而在用户的浏览器中执行脚本。

区别

  • 存储型 XSS:恶意脚本存储在服务器上,影响所有访问相关页面的用户。攻击载荷持久存在。

  • 反射型 XSS:恶意脚本不存储在服务器上,仅在特定请求的响应中反射,影响点击恶意链接的用户。攻击载荷是临时的。

此外,还有一种 DOM-based XSS 类型,它发生在客户端,恶意脚本通过修改 DOM 环境在受害者的浏览器中执行(参考 OWASP XSS Types)。

2. BurpSuite 进行爆破网站密码时用到哪个模块?此模块应该怎么操作?如何判断是否攻击成功(可以写多个判断方法)?

在 BurpSuite 中,进行网站密码爆破时使用的是"Intruder"模块。

操作步骤

  1. 使用 Proxy 模块拦截登录请求。

  2. 将拦截到的请求发送到 Intruder 模块。

  3. 在 Intruder 中,选择攻击类型(例如 Sniper、Cluster bomb 等)。

  4. 标记需要爆破的参数位置,通常是密码字段(password),如果需要,也可以包括用户名(username)。

  5. 加载字典文件作为有效载荷(payload),字典中包含可能的密码列表。

  6. 启动攻击,Intruder 将自动发送带有不同密码的请求。

判断攻击是否成功的方法

  • 响应长度:成功的登录响应可能与失败的响应有不同的长度。

  • 响应内容:检查响应中是否包含特定的成功登录关键字,如"欢迎"、"登录成功"等。

  • HTTP 状态码:成功的登录可能返回 302 重定向到管理页面,而失败的登录返回 200 或 403。

  • 会话 cookie:成功的登录可能会设置新的会话 cookie。

需要注意,现代网站可能实施速率限制和 CAPTCHA 等防御措施,增加爆破难度(参考 PortSwigger Burp Suite)。

3. SQL 注入漏洞的危害是什么?有哪些防御手段?

危害

  • 数据窃取:攻击者可以从数据库中获取敏感信息,如用户凭证、个人信息等。

  • 数据修改:攻击者可以篡改或删除数据库中的数据。

  • 权限提升:通过操纵查询,攻击者可能获得更高的权限。

  • 服务器控制:在某些情况下,SQL 注入可导致执行系统命令,控制服务器。

  • 拒绝服务攻击:通过删除表或执行资源密集型查询,造成服务不可用。

防御手段

  • 输入验证:对用户输入进行严格的格式和内容检查,但仅此不足以完全防止注入。

  • 参数化查询:使用预编译的 SQL 语句,将用户输入作为参数传递,有效隔离 SQL 代码和数据。

  • 最小权限原则:为应用程序使用的数据库账户分配最低必要的权限。

  • ORM 工具:使用对象关系映射工具(如 Hibernate、Django ORM)可以减少直接 SQL 查询,但需注意避免动态 SQL 生成带来的风险。

  • Web 应用防火墙(WAF) :部署 WAF 可以检测和阻止 SQL 注入尝试,但可能存在误报(参考 OWASP SQL Injection)。

4. 跨站脚本攻击的危害是什么?有哪些防御手段?

危害

  • 恶意代码执行:攻击者在受害者的浏览器中执行脚本,可能导致多种攻击。

  • 数据窃取:窃取敏感信息,如 cookie、会话令牌等。

  • 账户劫持:通过窃取会话 cookie,攻击者可以冒充用户。

  • 网站篡改:改变网站的外观或内容。

  • 钓鱼攻击:注入虚假的登录表单以窃取凭证。

防御手段

  • 输入验证:对用户输入进行检查,但不足以完全防止 XSS。

  • 输出转义:在将用户生成的内容输出到 HTML、JavaScript 等上下文时,进行适当的转义,以防止其被解释为代码。例如,在 HTML 上下文中使用 HTML 编码,在 JavaScript 上下文中使用 JavaScript 编码。

  • HttpOnly cookies:设置 cookie 的 HttpOnly 标志,防止脚本访问 cookie。

  • 内容安全策略(CSP):通过 CSP 头限制脚本的加载来源。

  • 安全的 DOM 方法 :使用 textContent 而不是 innerHTML 等(参考 OWASP XSS Prevention)。

5. HTTP 协议中,响应头中的状态码有哪几个段,分别对应什么意思?

HTTP 响应状态码分为五个段:

  • 1xx(信息):表示请求已接收,服务器正在处理。

  • 2xx(成功):表示请求已成功接收、理解和接受。

  • 3xx(重定向):表示需要进一步操作以完成请求,通常涉及重定向。

  • 4xx(客户端错误):表示请求包含错误语法或无法被服务器满足。

  • 5xx(服务器错误):表示服务器未能完成有效请求。

例如,200 OK 表示请求成功,404 Not Found 表示资源未找到(参考 RFC 7231)。

6. 在使用 SQLMap 进行 SQL 注入攻击时,针对于 MySQL 数据库和 ACCESS 数据库如果要获取到所有字段的名字需要走不同的流程,简述需要的流程和需要的 SQLMap 参数,并说明流程不一样的原因?

对于 MySQL 数据库

  • 使用 --columns 参数直接查询 information_schema.columns 表获取字段名。

对于 Access 数据库

  • 由于 Access 没有 information_schema,需要使用盲注等技术推断字段名,可能使用 --technique=BEUSTQ 等参数。

原因 :MySQL 提供系统表存储元数据,而 Access 不提供,需要间接方法获取(参考 SQLMap Documentation)。

7. 请解释 SQL 注入漏洞,并提供一个预防此类漏洞的策略。请简述为什么这个策略有效。

SQL 注入漏洞允许攻击者通过插入恶意 SQL 代码来执行任意 SQL 命令。

预防策略:使用参数化查询,将用户输入作为参数传递,隔离 SQL 代码和数据,防止输入影响查询结构。

有效性 :参数化查询确保用户输入仅作为数据处理,不会改变 SQL 查询的结构,从而防止注入攻击(参考 OWASP SQL Injection Prevention)。

8. 请描述什么是反序列化漏洞,并例举两种防御策略。

反序列化漏洞是指在将序列化数据转换回对象时,由于未对数据进行充分验证,导致执行恶意代码或引发意外行为的安全问题。

防御策略

  1. 白名单验证:仅允许反序列化预期的类。例如,在 Java 中,可以实现一个白名单,列出允许反序列化的类,拒绝其他类。

  2. 数据签名/加密 :通过对序列化数据进行数字签名或加密,确保数据来自可信来源,并且未被篡改(参考 OWASP Deserialization)。

9. 请解释文件上传功能可能会引发哪种类型的安全漏洞,有哪些利用手段?并给出至少两种防御措施。

安全漏洞

  • 恶意文件上传

  • XXE 攻击

  • 拒绝服务

  • 恶意软件分发

利用手段

  • 上传 Web shell 以获取远程访问。

  • 上传包含恶意内容的文件,exploits 文件解析器的漏洞。

  • 使用文件上传覆盖服务器上的关键文件。

防御措施

  1. 文件类型白名单:仅允许上传特定、安全的文件类型。

  2. 重命名文件:更改文件名和扩展名,防止文件被执行。

  3. 内容检查:扫描上传文件,检测恶意内容或签名。

  4. 将文件存储在 Web 根目录外:防止通过 URL 直接访问上传的文件。

  5. 设置安全权限 :确保上传的文件不能被未经授权的用户执行或读取(参考 OWASP File Upload)。

10. 什么是 CSRF 攻击,它如何工作?请描述至少两种常用的防御手段。

CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击是一种利用用户在目标网站上的已认证会话,诱导用户执行未经授权操作的攻击。

工作原理:攻击者创建一个恶意网页,当用户访问该网页时,浏览器会自动向目标网站发送请求,并附带用户的 cookie 等凭证。目标网站无法区分该请求是用户自愿发送的还是被诱导的,从而执行了攻击者期望的操作。

常用的防御手段

  1. CSRF 令牌:在每个表单或请求中包含一个唯一且不可预测的令牌,服务器验证该令牌是否与用户会话中的令牌匹配。

  2. SameSite cookies:在 cookie 中设置 SameSite 属性为 "Strict" 或 "Lax",限制跨站请求时 cookie 的发送。

  3. 双重提交 cookies:将 CSRF 令牌同时存储在 cookie 和请求参数中,服务器验证两者是否一致。

  4. CAPTCHA:对于敏感操作,要求用户解决 CAPTCHA,确保请求是用户自愿的。

  5. 重新认证 :对于关键操作,要求用户重新输入密码(参考 OWASP CSRF Prevention)。

11. 在进行 Web 安全配置时,经常提到要实施"最少权限原则"。请解释该原则的含义,并且举例说明如何在 Web 服务器设置中应用这一原则。

"最少权限原则"是指在系统中,每个模块、用户或进程只应被授予执行其功能所必需的最小权限集,不多不少。

应用示例

  • 数据库用户权限:Web 应用程序使用的数据库账户应仅具有必要的权限,例如对特定表的 SELECT、INSERT、UPDATE 权限,而不具备 DROP 或 ALTER 等高危权限。

  • 文件系统权限:Web 服务器进程应以一个具有有限权限的用户身份运行,例如只对 Web 文件有读权限,对上传目录有写权限。

  • 进程权限:Web 服务器进程不应以 root 或管理员身份运行,以防止在被攻破时执行系统级操作。

  • 网络端口:仅开放必要的端口,如 HTTP 的 80 港和 HTTPS 的 443 港,关闭其他端口以减少攻击面。

此外,在云环境中,应为服务账户分配最小必要的 IAM 角色和权限(参考 NIST Least Privilege)。

12. 如何使用 Wireshark 过滤表达式来仅显示源地址为本机,且目标端口为 80 的 HTTP 请求数据包?提供相应的过滤表达式,并解释每个部分的作用。如果想要过滤出所有 HTTP GET 请求的数据包?

过滤表达式ip.src == [本机IP] && tcp.dstport == 80 && http

  • ip.src == [本机IP]:过滤源 IP 地址为本机的 IP 的数据包。

  • tcp.dstport == 80:过滤目标 TCP 端口为 80 的数据包。

  • http:过滤包含 HTTP 协议的数据包。

请将 [本机IP] 替换为实际的本机 IP 地址。

过滤 HTTP GET 请求http.request.method == "GET"

这个表达式会显示所有 HTTP 请求方法为 GET 的数据包(参考 Wireshark User Guide)。

相关推荐
付出不多2 小时前
Nginx安全防护与HTTPS部署
nginx·安全·https
请再坚持一下4 小时前
网络安全护网行动之个人见解
安全·web安全·网络安全
AORO_BEIDOU4 小时前
遨游科普:2025年,三防平板有多智能?
网络·人工智能·安全·智能手机·电脑·信息与通信
AWS官方合作商4 小时前
AWS VPC架构师指南:从零设计企业级云网络隔离方案
安全·架构·aws
wtsafe6 小时前
仓储车间安全革命:AI叉车防撞装置系统如何化解操作风险
人工智能·物联网·安全
独行soc7 小时前
2025年渗透测试面试题总结-某步在线面试(题目+回答)
linux·网络·安全·web安全·面试·职场和发展·渗透安全
hie988948 小时前
如何配置 Java 安全管理器来避免访问控制异常
java·python·安全
芯盾时代8 小时前
RSAC 2025观察:零信任+AI=网络安全新范式
人工智能·安全·web安全·网络安全
☞无能盖世♛逞何英雄☜8 小时前
文件包含漏洞
安全·web安全
Ftrans9 小时前
【分享】解锁文件摆渡系统新玩法:虚拟目录助力企业效率提升
大数据·安全