web安全面经
web安全面经
1、poc与exp
- Poc:漏洞验证程序
- Exp:漏洞利用程序
2、通用型漏洞
有一定使用量或用户量的第三方框架、软件、应用、系统等对应的漏洞,拿web层应用来说需要满足:1、 两个站点以上使用了该应用,可参考cnvd(国家信息安全漏洞共享平台)的漏洞;2、 路径固定、参数固定。
3、Poc编写流程
- 发现漏洞;
- 寻找线上目标或搭建漏洞环境复现;
- 理解漏洞的出发点,判断是否为漏洞;
- 编写poc;
- poc测试,通用漏洞,找到足够多的URL证明这个是通用可用的poc
4、Web常见漏洞
- 敏感信息泄露:配置信息泄露、日志泄露、路径泄漏
- 未授权访问:未经授权和认证可直接访问
- 默认密码:例如经典的admin/admin
- SQL注入:提交恶意的数据可以被数据库解析执行
- Xss:跨站脚本攻击
- 目录穿越:未设置访问边界,用户可以越界访问到不该提供的文件
- 文件下载:对文件下载没有做限制,攻击者恶意利用这种方式下载服务器敏感文件
- 文件包含:为了使用代码的重用性,通过文件包含函数将代码文件包含进来,从而使用里面的代码。文件包含在php开发中很常见。当文件包含函数的文件参数可控时,文件参数又未进行校验或者校验被绕过,就会产生文件包含漏洞,导致读取文件、代码执行。
- 文件上传:当上传功能没有限制校验或者限制被绕过时,攻击者会上传恶意脚本,且恶意脚本被web服务器解析成脚本文件,就会导致代码执行。
- 远程代码执行:为了方便传输、提高性能,web项目中可能会使用到序列化。序列化是将对象的状态信息转换为可以存储或者传输的形式的过程,反序列化为相反的过程。当不可信数据做了反序列化处理,那么攻击者就可以通过构造恶意输入,让反序列化产生非预期的对象,非预期对象在产生过程中就有可能导致任意代码执行。例如,项目中使用的一些组件可能会支持一些表达式,当安全策略被绕过时,攻击者就可以通过构造特定数据代入表达式造成远程代码执行。
- 远程命令执行:常见的web应用调用服务器程序,参数被直接带入程序中命令或过滤被绕过时,就可能会出现命令注入漏洞,导致远程命令被执行。例如,支持ping命令的web程序参数IP,使用管道符|进行拼接恶意命令,就可能会导致远程命令执行。
- URL跳转:跳转的URL可控或者过滤被绕过时,就会导致任意URL链接跳转。
5、SQL注入
SQL注入是比较常见的网络攻击方式之一。攻击者通过在应用程序的输入字段中插入恶意的SQL代码,来操纵应用程序执行未预期的SQL语句,从而获取、修改或删除数据库中的数据。SQL注入攻击可以对系统的安全性和数据的完整性造成严重威胁。
原理
利用应用程序对用户输入的数据缺乏有效的验证和过滤,使得恶意的SQL语句可以直接传递给数据库执行。例如,在一个登录系统中,如果用户输入的用户名和密码直接被拼接到SQL查询语句中而未进行适当的处理,攻击者可以通过构造特定的输入,绕过身份验证。
分类
按照回显效果分:
- 有回显:联合注入和报错注入。
- 无回显:时间盲注、布尔盲注。
联合注入:使用UNION关键字将恶意的查询结果与正常查询结果合并,返回额外的数据。
报错注入:通过故意触发SQL错误,攻击者可以从数据库返回的错误消息中获取有用的信息。
时间盲注:通过使用延迟函数(如SLEEP
),观察应用程序的响应时间来获取数据库中的信息。
布尔盲注:通过构造条件语句并观察应用程序的响应(如页面是否加载正常),来推断数据库中的信息。
示例
假设一个应用程序的登录功能代码如下:
username = input("Enter username:") password = input("Enter password:") query = "SELECT * FROM users WHERE username = '{}' AND password = '{}';".format(username, password)
如果攻击者输入以下内容:
username: admin password: ' OR '1'='1
最终的SQL查询语句将变成:
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
由于'1'='1'
始终为真,这个查询将返回数据库中所有用户的信息,允许攻击者绕过身份验证
防御SQL注入的方法
- 使用参数化查询:确保用户输入的数据作为参数传递给SQL查询,而不是直接拼接到SQL字符串中
- 使用ORM工具(如Django ORM):生成安全的SQL查询,避免手动构造SQL语句
- 输入验证和过滤: 严格验证和过滤用户输入,避免将恶意内容传递给数据库
- 最小权限原则: 数据库账户应仅授予必要的权限,避免使用具有管理员权限的账户执行应用程序的SQL查询
- 数据库错误消息隐藏: 配置服务器不向用户显示详细的数据库错误消息,防止攻击者利用错误信息进行进一步的攻击
6、XSS(跨站脚本攻击)
跨站脚本攻击是一种常见的安全漏洞,攻击者通过在网页中注入恶意的脚本代码,利用浏览器执行这些代码,从而盗取用户的敏感信息、劫持会话、篡改内容或进行其他恶意操作。XSS攻击主要利用了Web应用对用户输入的数据缺乏充分的验证和过滤。
分类
- 反射型:攻击者准备攻击链接, 需要受害者访问链接触发XSS代码,一般容易出现在搜索页面。
- 存储型:XSS代码存在服务器中的,如在发表文章的时候插入payload,如果没有过滤或过滤不严payload存储在服务器中,当有用户访问插入payload的文章链接之后触发XSS代码执行。
- Dom型:基于Dom(DocumentObjeet Model基于文档对象模型)的漏洞,DOM中有很多对象,其中一些是用户可以操纵的,如location等。客户端的脚本不依赖于提交数据到服务器端,如果没有将DOM中传入的数据做严格的过滤,将其限制在可控范围内,就会产生DOM XSS。
XSS攻击的危害
- 窃取用户信息:如cookie、会话令牌、登录凭证等。
- 劫持用户会话:冒充用户进行操作。
- 篡改网页内容:展示虚假信息、钓鱼页面等。
- 恶意操作:例如,利用用户的权限在网站上进行恶意操作。
XSS的防御方法
- 输入验证和输出编码
- 使用安全的框架和库
- 内容安全策略
- HTTPOnly和Secure标志
- 定期安全测试
7、0day漏洞
0day漏洞,也称为零日漏洞或零时差漏洞,是指那些尚未被公众发现、官方尚未发布补丁的安全漏洞。攻击者利用这些未公开的漏洞,可以在目标系统或应用中执行恶意代码,获取敏感信息,甚至完全控制目标系统。由于0day漏洞的隐蔽性和利用的高效性,它往往成为黑客进行高级持续性威胁(APT)攻击的首选手段。
当前“零日”现在已经不再局限于漏洞被公开的时间长短。“零日”不一定是真的刚刚发现,黑客完全有可能在很久之前发现了漏洞,但是一直未被发现公开。那么对于外界来说,漏洞公开的那一刻才能称为零日漏洞。所以,“0day”往往可以理解为“软件供应商和公众未知”,但是“攻击者已知”。
防范零日攻击的基本措施
- 使用最新的安全补丁
- 使用防病毒软件
- 使用防火墙
- 使用双因素身份验证 (2FA)。2FA要求提供除密码之外的其他信息(例如,发送到手机的代码)
- 启用浏览器安全功能
- 小心电子邮件和链接
8、渗透测试常用的工具
AWVS、SQLMAP、NMAP、APPSCAN、BURPSUITE、中国菜刀等
9、WAF是什么?
Web应用程序防火墙(Web Application Firewall,WAF)是一种用于保护Web应用程序的安全设备。
WAF可以通过对Web应用程序的流量进行过滤和监控,识别并阻止潜在的安全威胁。WAF可以检测Web应用程序中的各种攻击,例如SQL注入、跨站点脚本攻击(XSS)、跨站请求伪造(CSRF)等,并采取相应的措施。
WAF的工作原理通常包括以下几个步骤:
- 流量识别:WAF识别来自客户端的请求,并对请求进行分析。WAF可以检查请求头、请求体、Cookie、URL参数等信息,并识别其中的攻击。
- 攻击检测:WAF对识别的请求进行攻击检测。WAF可以使用多种技术来检测攻击,例如正则表达式、特征匹配、行为分析等。WAF可以检测多种攻击,包括SQL注入、XSS、CSRF、命令注入等。
- 攻击响应:WAF根据检测结果采取相应的措施,例如拦截请求、阻止访问、记录事件等。WAF可以使用多种技术来响应攻击,例如重定向、报错、拦截等。
- 日志记录:WAF记录所有请求和响应的详细信息,包括请求头、请求体、响应头、响应体等。WAF可以将日志发送给中央日志管理系统,以便进行分析和审计。
10、什么是CSRF?
CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,是一种对网站的恶意利用。与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。
简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己以前认证过的站点并运行一些操作(如发邮件,发消息,甚至财产操作(如转账和购买商品))。因为浏览器之前认证过,所以被访问的站点会觉得这是真正的用户操作而去运行。
CSRF漏洞挖掘
- 抓取一个正常请求的数据包,如果没有Referer字段和token,那么极有可能存在CSRF漏洞。
- 如果有Referer字段,但是去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
- 随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。
CSRF漏洞的防御
- 验证码
- 在请求地址中添加 token 并验证
- 在 HTTP 头中自定义属性并验证
- 验证 HTTP Referer 字段
11、在 Django 项目中,如果页面从数据库中取数据迟迟得不到响应,一直处于等待状态,应该怎么处理?
- 增加超时设置:为数据库连接增加超时设置,防止查询时间过长。如果查询时间超过设定的超时时间,数据库会抛出异常,你可以捕获并处理这个异常。使用 try...except 语句捕获 DatabaseError 异常。如果捕获到异常,使用 logger.error 记录错误日志,包含错误信息 e。返回 JSON 响应,提示用户数据库请求超时,并设置 HTTP 状态码为 500(服务器内部错误)。在前端显示一个友好的错误提示,告知用户查询超时。
- 异步处理:Django 3.1 及以后版本支持异步视图。可以用异步视图处理长时间运行的任务,避免阻塞主线程。
- 监控和调试:使用工具如 Django Debug Toolbar, New Relic, Sentry 等来监控和分析数据库查询性能,识别和解决性能瓶颈。Django Debug Toolbar:可以显示每个页面的 SQL 查询,帮助你发现慢查询。New Relic:性能监控工具,可以帮助你追踪应用的性能瓶颈。Sentry:错误跟踪工具,可以帮助你捕获和分析应用中的错误。
12、在 Django 中,如何防御跨站请求伪造(CSRF)攻击?
Django 提供了一套内置的机制来防御 CSRF 攻击。以下是一些具体措施:
- 启用 CSRF 中间件:默认情况下,Django 启用了 django.middleware.csrf.CsrfViewMiddleware 中间件。
- 在表单中使用 CSRF Token:在 Django 模板中,使用 {% csrf_token %} 标签来生成 CSRF 令牌。
- 在 AJAX 请求中传递 CSRF Token:在发送 AJAX 请求时,确保在请求头中包含 CSRF 令牌
13、常见的空间搜索引擎
什么叫空间搜索引擎?
空间搜索引擎用于搜索和分析互联网上的设备和服务,帮助识别潜在的安全威胁。
1、Shodan
-
简介: Shodan 是最著名的空间搜索引擎之一,被称为“互联网的眼睛”。
-
功能: 搜索互联网上的设备,包括服务器、路由器、摄像头等。提供设备的开放端口、服务、版本信息。发现暴露在互联网上的漏洞设备。
-
应用: 安全研究人员用于发现暴露在互联网的未授权设备。企业用于评估网络安全状况。
2、Fofa
- 简介: Fofa 是另一款由中国公司开发的空间搜索引擎,功能强大且使用方便。
- 功能: 扫描和索引互联网上的设备和服务。提供详细的设备信息和漏洞报告。支持高级搜索语法和多种过滤条件。
- 应用: 安全研究人员用于发现和分析互联网暴露的设备。企业用于监控和评估自身的网络安全状况。
3、Censys
- 简介:Censys是一个提供互联网设备和服务搜索的搜索引擎。它能对整个互联网进行扫描,并提供详细的设备和服务信息。
- 功能:互联网扫描、设备识别、安全分析、数据可视化等。
14、请简要说明常见的 Web 安全漏洞及其防护措施
SQL 注入
-
描述: 攻击者通过输入恶意的 SQL 语句来执行数据库操作。
-
防护措施: 使用参数化查询或 ORM 框架、验证和清理用户输入、最小化数据库权限。
跨站脚本(XSS)
- 描述: 攻击者向网页注入恶意脚本,窃取用户数据或执行其他恶意操作。
- 防护措施: 对用户输入进行编码和转义、使用 Content Security Policy(CSP)、验证和清理用户输入。
跨站请求伪造(CSRF)
- 描述: 攻击者诱导用户在已认证的网站上执行未授权的操作。
- 防护措施: 使用 CSRF 令牌、验证请求来源、对敏感操作进行二次验证。
文件上传漏洞
- 描述: 攻击者上传恶意文件并通过访问该文件执行恶意代码。
- 防护措施: 验证文件类型、限制文件大小、存储上传文件在隔离目录、对文件进行扫描。
15、请描述如何编写一个简单的 PoC 来验证某个 Web 应用存在 SQL 注入漏洞
1、确定目标 URL 和参数: 找到接受用户输入的 URL 和参数,例如
http://example.com/search?q=
2、构造恶意输入: 使用单引号闭合 SQL 语句并注入 SQL 代码,例如
http://example.com/search?q=test' OR '1'='1
3、发送请求: 使用 Python 的 requests 库发送请求并检查响应内容。
16、在Django中如何实现用户登录功能?
- 配置 URL
- 创建视图函数
- 创建模板 (login.html)
17、请简述如何使用 Nessus 扫描一个目标网络
- 安装 Nessus: 从 Tenable 官网下载并安装 Nessus。
- 配置 Nessus: 打开 Nessus 控制台,创建用户并登录。
- 添加新扫描任务:输入目标网络或 IP 地址。
- 选择扫描模板: 根据需要选择合适的扫描模板(如基础网络扫描、Web 应用扫描)。
- 启动扫描: 配置扫描参数并启动扫描。
- 分析报告: 扫描完成后查看生成的报告,分析发现的漏洞和风险,并采取相应的修复措施。
18、什么是 Pocsuite?它有哪些主要功能?
Pocsuite 是由 360 网络安全研究团队开发的开源 PoC 框架,用于批量漏洞验证和利用。
主要功能
- PoC 管理: 支持加载和管理多个 PoC(漏洞验证代码)。
- 批量扫描: 支持批量目标扫描,快速验证大量目标的漏洞情况。
- 自动化测试: 提供自动化漏洞验证和利用功能,提高测试效率。
- 扩展性: 支持自定义 PoC 编写和集成其他工具。
Pocsuite框架支持哪些漏洞利用模式?
- 攻击模式(attack):用于实际的漏洞利用。
- 验证模式(verify):用于验证漏洞的存在性。
- 脚本模式(shell):允许用户编写自定义脚本进行复杂的操作。
Pocsuite框架如何管理和执行漏洞利用脚本(POC)?
Pocsuite框架通过其核心组件管理和执行漏洞利用脚本(POC)。用户可以编写和加载自定义的POC脚本,框架会处理与目标系统的交互,执行POC脚本中的利用逻辑,并记录和报告测试结果。POC脚本使用Python编写,并需要实现特定的接口和方法,如_verify
和_attack
。
Pocsuite如何帮助进行批量漏洞利用测试?
Pocsuite支持批量漏洞利用测试,允许用户对多个目标进行同时测试。用户可以通过配置文件或命令行参数指定多个目标地址,Pocsuite会依次对这些目标执行指定的漏洞利用脚本(POC),并记录每个目标的测试结果。这种方式可以大大提高漏洞扫描和利用的效率,特别适用于大规模的渗透测试和安全评估。
在使用Pocsuite进行漏洞利用测试时,如何保证测试过程中的合法性和道德规范?
在使用Pocsuite进行漏洞利用测试时,必须遵守以下原则以保证合法性和道德规范:
- 获得授权:在对目标系统进行测试前,必须获得系统所有者的明确授权。
- 遵守法律:所有测试活动必须遵守相关法律法规,不得进行任何非法操作。
- 保护隐私:避免在测试过程中泄露或滥用目标系统中的敏感信息和个人数据。
- 负责任地披露:发现漏洞后,应遵循负责任的披露原则,及时通知系统所有者,并在对方修复漏洞前不公开相关细节。
19、什么叫渗透测试?渗透测试的类型
渗透测试是一种模拟网络攻击的安全评估方法,旨在发现并修复系统、网络和应用中的安全漏洞。通过模拟真实攻击者的行为,渗透测试能够帮助组织识别潜在的安全威胁,评估其防御能力,并提供改进建议。
渗透测试的目标
- 识别漏洞:发现系统、网络和应用中的已知或未知漏洞。
- 评估影响:评估这些漏洞可能带来的安全影响。
- 验证防御措施:测试现有的安全防御措施的有效性。
- 改进安全策略:提供改进建议,帮助组织加强安全防护。
渗透测试的类型
- 黑盒测试(Black Box Testing):
- 描述:测试人员没有目标系统的内部信息,仅通过外部测试发现漏洞。
- 优点:模拟真实的外部攻击者视角。
- 缺点:测试范围有限,可能遗漏内部漏洞。
- 白盒测试(White Box Testing):
- 描述:测试人员拥有目标系统的全部内部信息,如源代码、架构设计等。
- 优点:全面深入地分析系统内部的安全性。
- 缺点:需要更多的时间和资源。
- 灰盒测试(Gray Box Testing):
- 描述:测试人员拥有部分目标系统的内部信息,如用户账户、部分代码等。
- 优点:平衡黑盒和白盒测试的优缺点,既有外部视角又有部分内部视角。
- 缺点:测试效果依赖于所提供的信息质量。
渗透测试的步骤
- 信息收集(Reconnaissance):
- 描述:收集目标系统的相关信息,如域名、IP地址、网络拓扑、操作系统版本、开放端口、服务等。
- 工具:Nmap、Whois、DNS查询工具、Google Hacking等。
- 扫描和枚举(Scanning and Enumeration):
- 描述:对目标系统进行端口扫描、服务探测、漏洞扫描等,以确定潜在的攻击点。
- 工具:Nmap、Nessus、OpenVAS、Nikto等。
- 漏洞分析(Vulnerability Analysis):
- 描述:分析扫描结果,确定存在的漏洞并评估其严重性。
- 工具:Nessus、OpenVAS、Metasploit等。
- 漏洞利用(Exploitation):
- 描述:利用发现的漏洞进行实际攻击,验证漏洞的存在并评估其影响。
- 工具:Metasploit、Pocsuite、ExploitDB等。
- 权限提升(Privilege Escalation):
- 描述:在目标系统中获得初始访问权限后,尝试提升权限以获取更高的访问级别。
- 工具:Linux和Windows本地提权漏洞利用工具、Metasploit等。
- 持续性和数据收集(Post-Exploitation):
- 描述:保持对目标系统的访问,并收集有价值的数据,如敏感信息、配置文件等。
- 工具:Meterpreter、Empire、Cobalt Strike等。
- 报告(Reporting):
- 描述:编写渗透测试报告,详细描述发现的漏洞、利用过程、影响评估及修复建议。
- 工具:报告模板、自动化报告生成工具等。
渗透测试的工具
- Nmap:网络扫描和发现工具,用于端口扫描和服务探测。
- Metasploit:漏洞利用框架,用于漏洞利用和后渗透阶段。
- Burp Suite:用于Web应用渗透测试的综合工具包。
- Nessus:广泛使用的漏洞扫描工具。
- Wireshark:网络分析和嗅探工具,用于分析网络流量。
- John the Ripper:密码破解工具,用于测试密码的强度。
20、什么是payload
payload(有效载荷)是指攻击者注入到目标系统中的恶意代码或数据。payload 的目的是利用系统或应用程序的漏洞或弱点,执行恶意操作,例如获取敏感信息、获取系统访问权限、篡改数据等。payload 可以是各种形式的恶意输入,如恶意脚本、SQL 查询、命令注入等,具体取决于攻击的类型和目标系统的特性。
21、什么是OSI模型
OSI(Open Systems Interconnection)模型是一个描述网络通信的框架,用于标准化和指导不同网络系统之间的互操作性。OSI 模型由国际标准化组织(ISO)制定,分为七个层次,每一层次都有特定的功能和协议。
OSI模型的七个层次
1、物理层(Physical Layer):
功能: 负责传输原始的比特流(0 和 1)到物理媒体(如电缆、光纤)。 设备: 集线器、网线、光纤、电缆。 协议和标准: 例如,IEEE 802.3(以太网)、RS-232(串行通信)。
2、数据链路层(Data Link Layer):
功能: 提供节点到节点的可靠数据传输,负责帧的传输和错误检测与校正。 子层: 逻辑链路控制(LLC)和媒体访问控制(MAC)。 设备: 交换机、网桥。 协议和标准: 例如,Ethernet(以太网)、PPP(点对点协议)。
3、网络层(Network Layer):
功能: 负责数据包的路径选择(路由)和转发,实现网络间通信。 设备: 路由器。 协议和标准: 例如,IP(互联网协议)、ICMP(Internet 控制报文协议)。
4、传输层(Transport Layer):
功能: 提供端到端的传输服务,确保数据的完整性和顺序。 设备: 防火墙(部分功能在传输层)。 协议和标准: 例如,TCP(传输控制协议)、UDP(用户数据报协议)。
5、会话层(Session Layer):
功能: 负责建立、管理和终止会话,实现应用程序之间的通信控制。 协议和标准: 例如,RPC(远程过程调用)、NetBIOS。
6、表示层(Presentation Layer):
功能: 负责数据的格式化、加密和解密,确保数据在应用层之间的兼容性。 协议和标准: 例如,SSL/TLS(安全套接字层/传输层安全协议)、MIME(多用途互联网邮件扩展)。
7、应用层(Application Layer):
功能: 提供网络服务和应用程序接口,直接面向用户。 协议和标准: 例如,HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)。
22、什么是TCP/IP模型
TCP/IP 模型是互联网协议套件的描述性框架,用于指导和标准化网络通信。TCP/IP 模型常被简化为五层模型,这五层分别是物理层、数据链路层、网络层、传输层和应用层。每一层都对应特定的功能和协议。
- 物理层(Physical Layer):
功能: 负责在物理媒体上传输比特流。 设备: 集线器、网线、光纤、电缆。 协议和标准: 例如,以太网(Ethernet)物理层标准,IEEE 802.3。
- 数据链路层(Data Link Layer):
功能: 提供节点到节点的数据传输,处理物理地址(MAC 地址)的识别和数据帧的传输。 设备: 交换机、网桥。 协议和标准: 例如,以太网(Ethernet)、PPP(点对点协议)、ARP(地址解析协议)。
- 网络层(Network Layer):
功能: 负责数据包的路由和转发,实现不同网络之间的通信。 设备: 路由器。 协议和标准: 例如,IP(互联网协议)、ICMP(Internet 控制报文协议)、IGMP(Internet 组管理协议)。
- 传输层(Transport Layer):
功能: 提供端到端的通信控制和数据传输完整性,确保数据的顺序和无差错传输。 协议和标准: 例如,TCP(传输控制协议)、UDP(用户数据报协议)。
- 应用层(Application Layer):
功能: 提供网络服务和应用程序接口,直接支持用户应用程序。 协议和标准: 例如,HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、DNS(域名系统)。
23、HTTPS协议
在 HTTPS(HyperText Transfer Protocol Secure)中,使用了多种加密技术来确保数据在客户端和服务器之间传输时的安全性。
以下是 HTTPS 中使用的主要加密技术:
-
非对称加密
用途: 在握手过程中用于交换密钥和身份验证。 算法: RSA、ECDHE(椭圆曲线 Diffie-Hellman 临时密钥交换)。 过程: 客户端向服务器发送连接请求。 服务器发送数字证书,证书中包含服务器的公钥。 客户端验证服务器证书的有效性(由受信任的证书颁发机构 CA 签名)。 客户端生成一个随机的对称密钥,并用服务器的公钥加密该密钥,然后发送给服务器。 服务器用自己的私钥解密出对称密钥。 -
对称加密
用途: 在数据传输过程中用于加密实际的数据。 算法: AES(高级加密标准)、ChaCha20。 过程: 一旦握手完成,客户端和服务器将使用对称密钥进行数据加密和解密。这种方式速度快,适合大数据量的加密。 -
哈希算法
用途: 用于数据完整性验证,确保数据在传输过程中未被篡改。 算法: SHA(安全哈希算法)系列,如 SHA-256。 过程: 在传输数据前,对数据进行哈希计算,并将哈希值附加在数据上。接收方接收数据后,对数据进行相同的哈希计算并比对哈希值,确保数据完整性。 -
数字证书
用途: 验证服务器的身份,确保客户端连接到合法的服务器。 颁发机构: 证书由受信任的证书颁发机构(CA)签发。 内容: 证书包含服务器的公钥、证书颁发机构的签名、有效期等信息。
24、MD5加密
MD5(Message Digest Algorithm 5)是一种常用的哈希函数,主要用于生成数据的固定长度的哈希值或消息摘要。MD5 在密码学中的主要用途是验证数据的完整性。虽然 MD5 已被认为是不安全的(特别是用于密码学目的),但了解其底层实现原理仍然是理解哈希函数工作机制的一个有用示例。
为什么MD5不安全
-
碰撞攻击(Collision Attack)
描述:碰撞攻击是指找到两组不同的输入数据,使得它们的MD5哈希值相同。MD5由于设计上的缺陷,使得找到碰撞变得相对容易。
影响:碰撞攻击会导致数字签名、数据完整性验证等依赖哈希值唯一性的应用失效。例如,攻击者可以创建两个不同的文件,具有相同的MD5哈希值,从而绕过签名验证或完整性检查。
示例:2004年,研究人员首次展示了实际可行的MD5碰撞攻击,随后更多的研究进一步降低了找到碰撞的计算复杂度。
2. 预映射攻击(Preimage Attack)
描述:预映射攻击是指找到一个给定哈希值的输入数据。这种攻击虽然在理论上针对MD5仍然非常难,但在实践中MD5的脆弱性使得该攻击的难度大大降低。
影响:预映射攻击会威胁密码存储的安全性。攻击者可以通过彩虹表(预计算哈希值表)快速找到与存储的MD5哈希值对应的明文密码。
3. 快速计算
描述:MD5的计算速度非常快,这在一定程度上成为了它的弱点。攻击者可以利用这种快速计算的特性,通过暴力破解的方法尝试大量不同的输入数据来找到匹配的哈希值。
影响:对于密码哈希,快速计算会降低其安全性,因为攻击者可以更快地进行暴力破解。现代安全哈希算法如bcrypt、scrypt等引入计算延迟,增加了破解的难度。
4. 散列长度
描述:MD5生成的哈希值长度为128位,这对于现代安全需求来说显得不够长。较短的哈希值增加了发生碰撞的概率,降低了安全性。
影响:较短的哈希值使得攻击者更容易找到碰撞,增加了攻击成功的可能性。
5. 已知漏洞和广泛的攻击工具
描述:由于MD5的广泛使用和其已知的安全漏洞,许多攻击工具和技术已经发展得非常成熟,能够轻松地进行MD5碰撞和预映射攻击。
影响:使用MD5的系统和应用更容易受到攻击,因为攻击者可以利用现有工具进行有效攻击。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报