hu1y40's blog

hu1y40'blog
天堂的穹空遍布地狱之火的颜色,但也是天堂。
  1. 首页
  2. 漏洞分析
  3. WEB
  4. 正文

CVE-2022-22885 Hutool证书验证漏洞

2023年10月7日 1361点热度 0人点赞 0条评论

0x01 概述

Hutool 是一个Java工具库,提供了丰富的工具类和方法,方便开发者在Java应用程序中进行各种常见任务的处理。它具有简单易用、功能丰富、性能优越等特点,被广泛用于Java开发中。

笔者通过对数百个真实项目引入组件的分析选出了该组件的常见漏洞进行分析。本次分析的是CVE-2022-22885,Hutool-http执行HttpRequest操作时的证书验证漏洞。

0x02 组件使用场景

Hutool-http组件是基于HttpUrlConnection的Http客户端封装 。其中的HttpRequest类有发送Http请求的功能。

0x03 漏洞信息

3.1 CVE-2022-22885

  • 漏洞名称:证书验证漏洞
  • 漏洞编号:CVE-2022-22885
  • 漏洞类型:CWE-295 证书验证不正确
  • CVSS评分:CVSS v3.1:9.8
  • 漏洞危害等级:超危

3.1.2 漏洞概述

该库的HttpRequest类默认的HostnameVerifier信任所有的hostname,并不对服务器证书进行校验。

3.1.3 漏洞利用条件

使用Hutool默认的HostnameVerifier。

3.1.4 影响版本

Hutool < 5.7.19

3.1.5 漏洞分析

该漏洞在是证书验证漏洞,该漏洞会导致服务器遭受中间人攻击从而造成信息泄露等问题。若泄露的信息涉及密钥等可供验证的内容,会导致密钥对应设备被入侵。

该漏洞产生的原因在于Hutool HttpUtil的setInfo函数传入的hostNameVerfier默认的为TRUST_ANY_HOSTNAME_VERIFIER。

fig:

其恒返回true。

fig:

HostnameVerifier是一种fallback机制,当要连接的host与服务端证书server name不匹配进行调用。Hutool默认放行所有这类请求。故而服务器易遭受不安全站点的攻击。

3.1.6 漏洞复现

1.使用未封装的Java函数请求不安全页面

Java自带HttpsURLConnection访问hostname与证书不匹配时报错。

fig:

2.使用Hutool的HttpRequest类访问不安全页面

成功返回页面内容。

fig:

3.1.7 漏洞修复

1.使用自定义的HostnameVerifier

使用自定义的HostnameVerifier对证书主体名称和hostname进行校验。

private static class TestHostnameVerifier
implements HostnameVerifier {
@Override
public boolean verify(String hostname, SSLSession session) {
try {
String principalName = session.getPeerPrincipal().getName();
if (hostname.equals("1.1.1.1") && principalName.equals("1.1.1.1"))
return true;
} catch (SSLPeerUnverifiedException e) {
}
return HttpsURLConnection.getDefaultHostnameVerifier().verify(hostname, session);
}
};

修复后,如下图所示,在执行Https请求时,程序会自动校验hostname和从证书获取的主体名称。具体需要根据请求URL改变传入hostname.equals(),principalName.equals()。如此就不会遭受证书域名不匹配的不安全站点的攻击。

fig:

该修复方案需要根据请求URL的hostname和证书信息配置verify代码。

标签: 漏洞
最后更新:2023年10月7日

hu1y40

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 0x01 概述
  • 0x02 组件使用场景
  • 0x03 漏洞信息
    • 3.1 CVE-2022-22885
      • 3.1.2 漏洞概述
      • 3.1.3 漏洞利用条件
      • 3.1.4 影响版本
      • 3.1.5 漏洞分析
      • 3.1.6 漏洞复现
      • 3.1.7 漏洞修复

分类目录

  • 0day安全
  • Bypass
  • C++Prime
  • CTF
  • DoS
  • DoS
  • FUZZ
  • iot
  • JSONP
  • MISC
  • MISC
  • PHP伪协议
  • Python
  • REVERSE
  • sqli-labs
  • SQL注入
  • Trick
  • UAF
  • WEB
  • WEB
  • XXE
  • 书籍阅读
  • 二进制
  • 代码阅读
  • 信息搜集
  • 信息泄露
  • 加密与解密
  • 双重释放漏洞
  • 反序列化
  • 命令执行
  • 命令执行
  • 堆溢出
  • 密码学
  • 弱加密
  • 提权漏洞
  • 整数溢出
  • 文件上传
  • 未分类
  • 栈溢出
  • 格式化字符串漏洞
  • 模型
  • 汇编语言
  • 渗透测试
  • 漏洞分析
  • 漏洞利用
  • 漏洞战争
  • 漏洞挖掘
  • 病毒分析
  • 越界读取
  • 路径遍历
  • 逻辑漏洞
  • 配置不当
  • 钓鱼
  • 靶场
最新 热点 随机
最新 热点 随机
加密算法 2023年度总结 RTSPServer StackOverflow Vulnerability FUZZ 总览篇 MP4Box 无限循环漏洞 CVE-2023-40477 Winrar RCE漏洞分析
加密与解密 第14章 DIR503A 命令执行1 0day安全 第10章实验 CVE-2016-9297 & CVE-2016-9448 Libtiff 越界读取漏洞挖掘,分析与调试 加密与解密 第11章实验 CVE-2012-0158 Microsoft Office MSCOMCTL.ocx栈溢出漏洞

COPYRIGHT © 2023 hu1y40's blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2021009673号-1