首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

CISAW 简答题

  • 25-04-17 22:41
  • 2600
  • 9532
juejin.cn

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)。

注:本文转载自juejin.cn的FreeCultureBoy的文章"https://juejin.cn/post/7493810284810321920"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

142
代码人生
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top