脆弱的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加密算法漏洞原理以及修复方法
漏洞名称:弱加密算法、脆弱的加密算法、脆弱的SSL加密算法、openssl的FREAK Attack漏洞 漏洞描述:脆弱的SSL加密算法,是一种常见的漏洞,且至今仍有大量软件支持低强度的加密协议,包括部分版本的openssl。其实…...
SVN迁移至GitLab,并附带历史提交记录(二)
与《SVN迁移至GitLab,并附带历史提交记录》用的 git svn clone不同,本文使用svn2git来迁移项目代码。 一、准备工作 安装Git环境,配置本地git账户信息: 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,按照图中步骤进行...
微众区块链观察节点的架构和原理 | 科普时间
践行区块链公共精神,实现更好的公众开放与监督!2023年12月,微众区块链观察节点正式面向公众开放接入功能。从开放日起,陆续有多个观察节点在各地运行,同步区块链数据,运行区块链浏览器观察检视数据…...
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是一种内存数据库,…...
【野火i.MX6ULL开发板】利用microUSB线烧入Debian镜像
0、前言 烧入Debian镜像有两种方式:SD卡、USB SD卡:需要SD卡(不是所有型号都可以,建议去了解了解)、SD卡读卡器 USB:需要microUSB线 由于SD卡的网上资料很多了,又因为所需硬件(SD卡…...
“我在大A炒自己”
嘻嘻嘻,大伙儿好像还挺喜欢我闲聊,今天太忙,没得空精进技术,那咱还是接着闲聊吧😂😂 看到标题点进来的各位大A真爱粉,请先收下我的崇高敬意!!别误会,标题说的…...
js 颜色转换,RGB颜色转换为16进制,16进制颜色转为RGB格式
颜色转换,RGB颜色转换为16进制,16进制颜色转为RGB格式,可以自己设置透明度。 //十六进制颜色值的正则表达式 var reg /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*RGB颜色转换为16进制*/ String.prototype.colorHex function () {var that this;if (/^…...
uniapp中用户登录数据的存储方法探究
Hello大家好!我是咕噜铁蛋!作为一个博主,我们经常需要在应用程序中实现用户登录功能,并且需要将用户的登录数据进行存储,以便在多次使用应用程序时能够方便地获取用户信息。铁蛋通过科技手段帮大家收集整理了些知识&am…...
引导过程与服务控制
文章目录 一、Linux操作系统引导过程1、开机启动的完整过程1.1 开机自检(BIOS)1.2 MBR引导1.3 GRUB菜单1.4 加载内核(kernel)1.5 init进程初始化 2、系统初始化进程2.1 init进程2.2 systemdinit与systemd区别 3、Systemd单元类型4…...
《矩阵分析》笔记
来源:【《矩阵分析》期末速成 主讲人:苑长(5小时冲上90)】https://www.bilibili.com/video/BV1A24y1p76q?vd_sourcec4e1c57e5b6ca4824f87e74170ffa64d 这学期考矩阵论,使用教材是《矩阵论简明教程》,因为没…...
『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),想要尝试一下新版本的.netcore,之前系统是10.12时,.netcore 3.1刚出来时安装过3.1版本,很久没更新了,最近.net8出来了,想试一下,…...
python 写自动点击爬取数据
今天来点不一样的!哥们 提示: 这里只是用于自己学习的 ,请勿用违法地方 效果图 会进行点击下一页 进行抓取 需要其他操作也可以自己写 文章目录 今天来点不一样的!哥们前言一、上代码?总结 前言 爬虫是指通过编程自动…...
CSDN博客重新更新
说来惭愧,好久没更新博客文章,导致个人博客网站:https://lenky.info/ 所在的网络空间和域名都过期了都没发觉,直到有个同事在Dim上问我我的个人博客为啥打不开了。。。幸好之前有做整站备份,后续慢慢把内容都迁回CSDN上…...
《剑指 Offer》专项突破版 - 面试题 5 : 单词长度的最大乘积(C++ 实现)
目录 前言 方法一 方法二 前言 题目链接:318. 最大单词长度乘积 - 力扣(LeetCode) 题目: 输入一个字符串数组 words,请计算不包含相同字符的两个字符串 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是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例…...
【Linux Shell】12. 文件包含
和其他语言一样,Shell 也可以包含外部脚本,这样可以很方便的封装一些公用的代码作为一个独立的文件。可以理解为在第2个文件中包含第1个文件,执行第1个文件的代码。 被包含的文件 不需要可执行权限 。Shell 文件包含的语法格式如下࿱…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
