当前位置: 首页 > news >正文

脆弱的SSL加密算法漏洞原理以及修复方法

漏洞名称:弱加密算法、脆弱的加密算法、脆弱的SSL加密算法、openssl的FREAK Attack漏洞

漏洞描述:脆弱的SSL加密算法,是一种常见的漏洞,且至今仍有大量软件支持低强度的加密协议,包括部分版本的openssl。其实,该低强度加密算法在当年是非常安全的,但时过境迁,飞速发展的技术正在让其变得脆弱。黑客可利用SSL弱加密算法漏洞进行SSL中间人攻击,即强迫服
务器和用户之间使用低强度的加密方式,然后再通过暴力破解,窃取传输内容。强度较弱的加密算法将不能较好的保证通信的安全性,有被攻击者破解的风险。对于linux中openssl的FREAK Attack漏洞,该漏洞是由于OpenSSL库里的s3_clnt.c文件中,ssl3_get_key_exchange函数,允许客户端使用一个弱RSA秘钥,向SSL服务端发起RSA-to-EXPORT_RSA的降级攻击,以此进行暴力破解,得到服务端秘钥。此问题存在于OpenSSL版本0.9.8zd之前, 或1.0.0p之前的1.0.0,
或1.0.1k之前的1.0.1。

检测条件:

1、 已知Web网站开放443端口(https)。
2、 开启了SSL协议。

检测方法:

1、 对于windows中的检测方法:通过加密算法检测工具,与网站系统进行加密算法枚举通信,
探测系统存在的加密算法及位数情况。利用SSLciphercheck软件,通过CMD下运行,进行协议探测进行检测命令:‚sslciphercheck.exe -h ip地址或者域名 -p 443‛,或者是利用web扫描工具,如AWVS,APPscan等进行扫描检测,相关检测截图:

2、 对于openssl的FREAK Attack漏洞,检测如下:https远程检查方法(看一个网站是脆弱的
RSA弱密钥攻击,你可以使用OpenSSL命令):openssl s_client -connect www.fbi.gov:443
-cipher EXPORT,如果你看到‛alert handshake failure‛这句话就说明该网站是安全的:


RedHat系列检查命令:rpm -qa|grep openssl

Debian\Ubuntu系列检查命令: dpkg -l|grep openssl

修复方案:以下为针对脆弱的SSL加密算法漏洞的修复建议,其中包括IIS、apache、和windows本身的一些安全建议方法:

对于linux中openssl的FREAK Attack漏洞,如果因为生产环境无法直连外网或是变更配置管理等原因而不便更新补丁,可以采取以下临时修复方法:

1、 禁用出口级弱加密算法在命令行使用:openssl ciphers MEDIUM。
2、 禁止apache服务器使用出口级加密算法:vi /etc/httpd/conf.d/ssl.conf;增加如下配置:SSLCipherSuite HIGH:!aNULL:!MD5:!EXP;需要重启apache服务:/etc/init.d/httpd restart。
3、 关于nginx加密算法:1.0.5及以后版本,默认SSL密码算法是HIGH:!aNULL:!MD5;0.7.65、0.8.20及以后版本,默认SSL密码算法是HIGH:!ADH:!MD5;0.8.19版本,默认SSL密码算法是:ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM;0.7.64、0.8.18及以前 版 本 , 默 认 SSL 密 码 算 法 是
ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;低版本的nginx或没注释 的 可 以 直 接 修 改 域 名 下 ssl 相 关 配 置 为 ssl_ciphersHIGH:!aNULL:!MD5;需要nginx重新加载服务:/etc/init.d/nginx reloa

对于IIS中SSL,修复方案为:

1、 在 IIS 管理器中,双击本地计算机,然后右键单击所需的某个网站、目录或文件,然后单击‚属性‛。
2、 在‚目录安全性‛或‚文件安全性‛选项卡的‚安全通信‛下面,单击‚编辑‛。
3、 在‚安全通信‛框中,选中‚需要安全通道 (SSL)‛复选框。
4、 如果需要使用 128 位加密,请选择‚要求 128 位加密‛复选框。
5、 单击‚确定‛。

对于Apache的修复方案为:

1、 禁用它只需几分钟的时间。例如,在Apache v2中,你只需要改变默认设置:

SSLProtocol all
To
SSLProtocol all -SSLv2

2、 如何建立一个仅使用SSLv2的服务器:

可以这样建立一个仅使用SSLv2协议及其密码算法的服务器:
httpd.conf
SSLProtocol -all +SSLv2
SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP

3、 如何建立一个仅接受强加密请求的SSL服务器:

如下设置为仅使用最强的七种密码算法:
httpd.conf
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

4、 如何建立一个仅接受强加密请求的SSL服务器,而又允许对外浏览器使用更强的加密:这个功能被称为以服务器为网关的加密(Server Gated Cryptography[SGC]), 在README.GlobalID文档中有详细说明。 简单地说就是:服务器拥有一个由来自Verisign的一个特殊的CA证书签发的服务器身份证, 从而在对外浏览器上实现强加密。 其过程如下:浏览器使用对外密码进行连接,服务器返回其全局ID身份证, 浏览器校验后在后继HTTP通讯产生之前提升其密码组。 现在的问题是:如何允许这样的提升,而又强制性地使用强加密。 换句话说就是:浏览器必须在开始连接时就使用强加密,或者提升到强加密, 但是维持对外密码是不允许的。以下巧妙地解决了这个问题:

httpd.conf
# 允许在初始握手阶段使用所有的密码,
# 以允许对外服务器通过SGC功能提升密码组
SSLCipherSuite
ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Directory /usr/local/apache2/htdocs>
# 但是最终会拒绝所有没有提升密码组的浏览器
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
</Directory>

5、 如何建立接受所有类型密码的SSL服务器,但对特定的URL实施强加密:显然,不能使用服务器全局设置SSLCipherSuite,它会限制密码为强类型。 但是,mod_ssl允许重配置针对目录的密码组,并自动进行一个带有服从新配置的SSL参数的重协商。 因此,其解决方案成了:

httpd.conf
# 在一般情况下的处理是宽松的
SSLCipherSuite
ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Location /strong/area>
# 但对于https://hostname/strong/area/ 及其以下的内容
# 要求强密码
SSLCipherSuite HIGH:MEDIUM
</Location>

对于windos系统中,禁用SSL弱加密算法修复方案:

1、 windows server 2003注册表可能与以下的不同。解决方案:Windows Server 2008支持下列协议:•SSL 2.0 •SSL 3.0•TLS 1.0。Windows Server 2008 R2 和Windows 7 支持下列协议:•SSL 2.0 •SSL 3.0•TLS 1.0•TLS 1.1•TLS 1.2,对于服务器或客户端体系结构,可以禁用这些协议。这意味着可以省略该协议,或将其禁用。如果要禁用SSL-V2.0,采用如下方案:

SSL 2.0 的 服 务 器 计 算 机 上 的 注 册 表 位 置 如 下 所 示 :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server
(1)若要启用 SSL 2.0,请执行以下步骤: 1.在客户端计算机上,将DisabledByDefault DWORD 值设置为 00000000。 2.在服务器计算机上,将启用的 DWORD 值设置为 0xffffffff。 3.重新启动计算机。
(2)若要禁用 SSL 2.0,请执行以下步骤: 1.在客户端计算机上,将DisabledByDefault DWORD 值设置为 00000001。2.在服务器计算机上,将启用 DWORD 值设置为 00000000。 3.重新启动计算机。

1、 SCHANNEL 键部分、 方法或任务包含一些介绍如何修改注册表的步骤。但是,如果不正确地修改了注册表,可能会出现严重的问题。因此,请确保仔细按照下列步骤操作。为增加保护,对其进行修改之前备份注册表。然后,您可以在出现问题时还原注册表。:

SCHANNEL 键位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
以下为常见的SCHANNEL键子项,包含弱加密算法的一些禁用方法:
(1)56/128 SCHANNEL\Ciphers\RC4 子项:RC4 64/128,若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(2)56/128 SCHANNEL\Ciphers\RC2 子项:RC4 56/128,56 位 RC4 引用此注 册 表 项 。 若 要 允 许 此 密 码 算 法 , 更 改 到 已 启 用 值 的 DWORD 值 数 据0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(3)SCHANNEL\Ciphers\RC2 56/56 子项:RC2 56/128,56 位 RC2 引用此注册表项。若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(4)SCHANNEL\Ciphers\RC4 40/128 子项:DES 56,56 位 DES 作为指定 FIPS46-2 中 引 用 此 注 册 表 项 。 FIPS 140-1 加 密 模 块 验 证 计 划 下 , 它 的Rsabase.dll 和 Rsaenh.dll 文件中的实现进行验证。若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据0x0.如果您不配置启用值,默认情况下启用。


(5)SCHANNEL\Ciphers\RC2 40/128 子项:RC4 40/128,这指的是 40 位 RC4。若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(6)SCHANNEL\Ciphers\NULL 子项:RC2 40/128,40 位 RC2 引用此注册表项。若要允许此密码算法,更改到已启用值的 DWORD 值数据 0xffffffff.否则,更改到的 DWORD 值数据 0x0.如果您不配置启用值,默认情况下启用。


(7)SCHANNEL\Hashes\SHA 子项:MD5,若要允许此哈希算法,将启用值的DWORD 值数据更改为默认值 0xffffffff.否则,更改到的 DWORD 值数据 0x0.有效地禁用此算法时,不允许以下:•SSL_RSA_EXPORT_WITH_RC4_40_MD5,•SSL_RSA_WITH_RC4_128_MD5 , • SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 , •TLS_RSA_EXPORT_WITH_RC4_40_MD5 , • TLS_RSA_WITH_RC4_128_MD5 , •TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5。


(8)SCHANNEL/KeyExchangeAlgorithms 子项:SHA,此注册表项是指安全哈希算法 (sha-1),指定 FIPS 180-1 中。FIPS 140-1 加密模块验证计划下,它的 Rsabase.dll 和 Rsaenh.dll 文件中的实现进行验证。若要允许此哈希算法,将启用值的 DWORD 值数据更改为默认值 0xffffffff.否则,更改到的DWORD 值 数 据 0x0. 有 效 地 禁 用 此 算 法 时 , 不 允 许 以 下 :

•SSL_RSA_WITH_RC4_128_SHA , • SSL_RSA_WITH_DES_CBC_SHA , •SSL_RSA_WITH_3DES_EDE_CBC_SHA,•SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA,
• SSL_RSA_EXPORT1024_WITH_RC4_56_SHA , • TLS_RSA_WITH_RC4_128_SHA , •
TLS_RSA_WITH_DES_CBC_SHA , • TLS_RSA_WITH_3DES_EDE_CBC_SHA , •TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA , •TLS_RSA_EXPORT1024_WITH_RC4_56_SHA。

相关文章:

脆弱的SSL加密算法漏洞原理以及修复方法

漏洞名称&#xff1a;弱加密算法、脆弱的加密算法、脆弱的SSL加密算法、openssl的FREAK Attack漏洞 漏洞描述&#xff1a;脆弱的SSL加密算法&#xff0c;是一种常见的漏洞&#xff0c;且至今仍有大量软件支持低强度的加密协议&#xff0c;包括部分版本的openssl。其实&#xf…...

SVN迁移至GitLab,并附带历史提交记录(二)

与《SVN迁移至GitLab&#xff0c;并附带历史提交记录》用的 git svn clone不同&#xff0c;本文使用svn2git来迁移项目代码。 一、准备工作 安装Git环境&#xff0c;配置本地git账户信息&#xff1a; git config --global user.name "XXX" git config --global us…...

如何创建容器搭建节点

1.注册Discord账号 https://discord.com/这是登录网址: https://discord.com/ 2.点击startnow注册,用discord注册或者邮箱注册都可,然后登录tickhosting Tick Hosting这是登录网址:Tick Hosting 3.创建servers 4.点击你创建的servers,按照图中步骤进行...

微众区块链观察节点的架构和原理 | 科普时间

践行区块链公共精神&#xff0c;实现更好的公众开放与监督&#xff01;2023年12月&#xff0c;微众区块链观察节点正式面向公众开放接入功能。从开放日起&#xff0c;陆续有多个观察节点在各地运行&#xff0c;同步区块链数据&#xff0c;运行区块链浏览器观察检视数据&#xf…...

React Admin 前端脚手架之ant-design-pro

文章目录 一、React Admin 前端脚手架选型二、React Admin 前端脚手架之ant-design-pro三、ant-design-pro使用步骤四、调试主题五、常用总结(持续更新)EditableProTable组件 常用组件EditableProTable组件 编辑某行后,保存时候触发发送请求EditableProTable组件,添加记录提…...

向爬虫而生---Redis 基石篇1 <拓展str>

前言: 本来是基于scrapy-redis进行讲解的,需要拓展一下redis; 包含用法,设计,高并发,阻塞等; 要应用到爬虫开发中,这些基础理论我觉得还是有必要了解一下; 所以,新开一栏! 把redis这个环节系统补上,再转回去scrapy-redis才好深入; 正文: Redis是一种内存数据库&#xff0c…...

【野火i.MX6ULL开发板】利用microUSB线烧入Debian镜像

0、前言 烧入Debian镜像有两种方式&#xff1a;SD卡、USB SD卡&#xff1a;需要SD卡&#xff08;不是所有型号都可以&#xff0c;建议去了解了解&#xff09;、SD卡读卡器 USB&#xff1a;需要microUSB线 由于SD卡的网上资料很多了&#xff0c;又因为所需硬件&#xff08;SD卡…...

“我在大A炒自己”

嘻嘻嘻&#xff0c;大伙儿好像还挺喜欢我闲聊&#xff0c;今天太忙&#xff0c;没得空精进技术&#xff0c;那咱还是接着闲聊吧&#x1f602;&#x1f602; 看到标题点进来的各位大A真爱粉&#xff0c;请先收下我的崇高敬意&#xff01;&#xff01;别误会&#xff0c;标题说的…...

js 颜色转换,RGB颜色转换为16进制,16进制颜色转为RGB格式

颜色转换&#xff0c;RGB颜色转换为16进制,16进制颜色转为RGB格式&#xff0c;可以自己设置透明度。 //十六进制颜色值的正则表达式 var reg /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*RGB颜色转换为16进制*/ String.prototype.colorHex function () {var that this;if (/^…...

uniapp中用户登录数据的存储方法探究

Hello大家好&#xff01;我是咕噜铁蛋&#xff01;作为一个博主&#xff0c;我们经常需要在应用程序中实现用户登录功能&#xff0c;并且需要将用户的登录数据进行存储&#xff0c;以便在多次使用应用程序时能够方便地获取用户信息。铁蛋通过科技手段帮大家收集整理了些知识&am…...

引导过程与服务控制

文章目录 一、Linux操作系统引导过程1、开机启动的完整过程1.1 开机自检&#xff08;BIOS&#xff09;1.2 MBR引导1.3 GRUB菜单1.4 加载内核&#xff08;kernel&#xff09;1.5 init进程初始化 2、系统初始化进程2.1 init进程2.2 systemdinit与systemd区别 3、Systemd单元类型4…...

《矩阵分析》笔记

来源&#xff1a;【《矩阵分析》期末速成 主讲人&#xff1a;苑长&#xff08;5小时冲上90&#xff09;】https://www.bilibili.com/video/BV1A24y1p76q?vd_sourcec4e1c57e5b6ca4824f87e74170ffa64d 这学期考矩阵论&#xff0c;使用教材是《矩阵论简明教程》&#xff0c;因为没…...

『App自动化测试之Appium应用篇』| Appium常用API及操作

『App自动化测试之Appium应用篇』| Appium常用API及操作 1 press_keycode1.1 键盘操作1.2 关于KeyCode1.3 press_keycode源码1.4 电话键相关1.5 控制键相关1.6 基本按键相关1.7 组合键相关1.8 符号键相关1.9 使用举例 2 swip方法2.1 swip说明2.2 swip使用方法2.3 使用示例 3 sc…...

VSCode搭建 .netcore 开发环境

一、MacOS 笔者笔记本电脑上安装的是macOS High Sierra(10.13)&#xff0c;想要尝试一下新版本的.netcore&#xff0c;之前系统是10.12时&#xff0c;.netcore 3.1刚出来时安装过3.1版本&#xff0c;很久没更新了&#xff0c;最近.net8出来了&#xff0c;想试一下&#xff0c;…...

python 写自动点击爬取数据

今天来点不一样的&#xff01;哥们 提示&#xff1a; 这里只是用于自己学习的 &#xff0c;请勿用违法地方 效果图 会进行点击下一页 进行抓取 需要其他操作也可以自己写 文章目录 今天来点不一样的&#xff01;哥们前言一、上代码&#xff1f;总结 前言 爬虫是指通过编程自动…...

CSDN博客重新更新

说来惭愧&#xff0c;好久没更新博客文章&#xff0c;导致个人博客网站&#xff1a;https://lenky.info/ 所在的网络空间和域名都过期了都没发觉&#xff0c;直到有个同事在Dim上问我我的个人博客为啥打不开了。。。幸好之前有做整站备份&#xff0c;后续慢慢把内容都迁回CSDN上…...

《剑指 Offer》专项突破版 - 面试题 5 : 单词长度的最大乘积(C++ 实现)

目录 前言 方法一 方法二 前言 题目链接&#xff1a;318. 最大单词长度乘积 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 输入一个字符串数组 words&#xff0c;请计算不包含相同字符的两个字符串 words[i] 和 words[j] 的长度乘积的最大值。如果所有字符串…...

【Java集合篇】HashMap的get方法是如何实现的?

HashMap的get方法是如何实现的 ✔️典型解析✔️拓展知识仓✔️如何避免HashMap get方法的哈希重✔️HashMap get方法的优缺点有哪些✔️HashMap get方法的是线程安全的吗✔️什么是ConcurrentHashMap✔️ConcurrentHashMap有哪些应用场景✔️ConcurrentHashMap的优缺点 ✔️源…...

Java学习苦旅(二十二)——MapSet

本篇博客将详细讲解Map和Set。 文章目录 搜索概念模型 MapMap.Entry<K, V>Map的常用方法说明TreeMap和HashMap的区别 Set常用方法说明TreeSet和HashSet的区别 结尾 搜索 概念 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例…...

【Linux Shell】12. 文件包含

和其他语言一样&#xff0c;Shell 也可以包含外部脚本&#xff0c;这样可以很方便的封装一些公用的代码作为一个独立的文件。可以理解为在第2个文件中包含第1个文件&#xff0c;执行第1个文件的代码。 被包含的文件 不需要可执行权限 。Shell 文件包含的语法格式如下&#xff1…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...