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

Linux下快速确定目标服务器支持哪些协议和密码套件

实现原理是利用TLS协议的特点和握手过程来进行测试和解析响应来确定目标服务器支持哪些TLS协议和密码套件。

在TLS握手过程中,客户端和服务器会协商并使用相同的TLS协议版本和密码套件来进行通信。通过发送特定的握手请求并分析响应,可以确定目标服务器所支持的TLS协议和密码套件等信息。

使用namp工具快速确定目标服务器支持哪些协议和密码套件

在Linux下,可以使用nmap工具来快速确定目标服务器支持哪些TLS协议和密码套件。具体实现如下:

  1. 安装nmap工具:首先需要在Linux系统上安装nmap工具。可以通过包管理器(如apt、yum等)进行安装,或者从官方网站下载并编译安装。

  2. 运行nmap扫描:使用以下命令运行nmap扫描,以获取目标服务器支持的TLS协议和密码套件信息:

nmap --script ssl-enum-ciphers -p 443 <目标IP地址>

其中,--script ssl-enum-ciphers表示使用ssl-enum-ciphers脚本,该脚本可以列出目标服务器支持的TLS协议和密码套件;-p 443表示只扫描目标服务器的443端口(HTTPS默认端口);<目标IP地址>是目标服务器的IP地址。

nmap扫描完成后,会输出目标服务器支持的TLS协议和密码套件信息。可以根据需要对结果进行分析和处理。

sslcan工具快速定位目标服务器支持哪些协议和密码套件

sslscan工具的主要工作原理是:通过创建多个HTTPS连接来试探服务器支持的加密方式。当使用HTTPS连接到服务器时,会交换双方所支持的加密方式,之后选择双方都能够支持的方式进行通信。

在这个过程中,如果https服务器配置不当,就会存在MITM(中间人)攻击的风险,攻击者可能利用客户端支持的较弱加密算法来欺骗服务器。例如,如果使用的是SSLV2的56位DES加密方式,那么一旦攻击者成功拦截并使用了这种加密流量,他们可能在很短的时间内就能够破解加密密钥。

此外,值得注意的是,sslscan还具有检测heartbleed漏洞的功能。Heartbleed是一个出现在OpenSSL TSL中的安全漏洞,它源于一个缓冲区的错误处理,这个错误处理允许从内存中读取数据。所以,除了探测服务器支持的协议和密码套件外,sslscan还能帮助发现并防备一些潜在的安全风险。

运行sslcan扫描:使用以下命令运行sslcan扫描,以获取目标服务器支持的协议和密码套件信息:

sslscan -h <目标IP地址>

其中,-h表示使用HTTP方式进行扫描;<目标IP地址>是目标服务器的IP地址。sslcan扫描完成后,会输出目标服务器支持的协议和密码套件信息。可以根据需要对结果进行分析和处理。

openssl ciphers密码套件

可以使用OpenSSL工具来查看Linux系统支持的TLS密码套件列表:

openssl ciphers -V | column -t

将显示您的Linux系统支持的所有TLS密码套件的列表

运行openssl扫描:使用以下命令运行openssl扫描,以获取目标服务器支持的协议和密码套件信息:

openssl s_client -connect <目标IP地址>:443 -cipher <密码套件>

其中,-connect <目标IP地址>:443表示连接到目标服务器的443端口;-cipher <密码套件>表示指定要测试的密码套件。

客户端和服务器不支持SSL协议或密码套件,会怎么样?

如果客户端和服务器不支持SSL协议或密码套件,可能会导致通信过程中数据的安全性受到威胁。在这种情况下,应该考虑以下解决方案:

  1. 升级客户端和服务器端的软件版本,以确保它们支持最新的SSL协议和密码套件。

  2. 如果无法立即升级软件版本,可以考虑使用其他加密协议,如TLS(传输层安全性)来替代SSL协议。

  3. 对于服务器端,可以考虑配置SSL证书和相应的密码套件,以确保通信过程中的数据安全。

  4. 对于客户端,可以考虑配置相应的安全选项,确保能够与服务器端建立安全的连接。

  5. 如果以上方法都无法解决问题,建议寻求专业的网络安全团队或厂商的帮助,以确保客户端和服务器的通信安全。

Linux下快速确定目标服务器支持哪些协议和密码套件(shell脚本实现)

#!/bin/bash...
TLS_VERSIONS_WITH_CIPHER=(ssl2 ssl3 tls1 tls1_1 tls1_2)
TLS_VERSIONS_WITH_CIPHERSUITES=(tls1_3)# 删除`openssl的本地副本不支持的旧TLS版本`
for (( i=${#TLS_VERSIONS_WITH_CIPHER[@]}-1; i>=0; i-- )); doif ! grep -qxF -- "-${TLS_VERSIONS_WITH_CIPHER[$i]}" <(openssl s_client -help 2>&1 | awk '{print $1}'); thenunset "TLS_VERSIONS_WITH_CIPHER[$i]"fi
done# TLS_VERSIONS_WITH_CIPHERSUITES创建反向查找数组
...# 查找任何密码{,suite}名称的最大长度
MAX_NAME_LEN=$(openssl ciphers ALL:COMPLEMENTOFALL | tr ':' '\n' | wc -L)printf "%*s" $((MAX_NAME_LEN - 2)) ""
for tlsv in "${TLS_VERSIONS_WITH_CIPHER[@]}" "${TLS_VERSIONS_WITH_CIPHERSUITES[@]}"; doprintf "%10s" "$tlsv"
done
echo
for cipher in $(openssl ciphers 'ALL:COMPLEMENTOFALL' | sed 's/:/ /g'); do
#for cipher in $(openssl ciphers 'RSA-PSK-AES256-GCM-SHA384' | sed 's/:/ /g'); dotput scfound=0printf "%*s" "$MAX_NAME_LEN" "$cipher"if ! openssl ciphers "$cipher" >/dev/null 2>/dev/null; then
...elsecipherarg=("-cipher" "$cipher")APPLICABLE_TLS_VERSIONS=("${TLS_VERSIONS_WITH_CIPHER[@]}")fifor tlsv in "${APPLICABLE_TLS_VERSIONS[@]}"; doif [ "${TLS_VERSIONS_WITHOUT_CIPHERS+0}" = 1 ]; thenrv=-1else...rv=$?fiprintf "%5s%1s%4s" "" "$([ $rv -eq 0 ] && echo "√" || :)" ""[ $rv -eq 0 ] && found=1doneif [ $found -eq 0 ]then tput rcelse echofi
done
printf "%78s" " "
tput rc

编译运行:

If you need the complete source code, please add the WeChat number (c17865354792)

总结

对目标服务器开放的端口进行详细扫描,以确定使用的协议。例如,通过连接到80端口可以确定使用HTTP协议,通过连接到443端口可以确定使用HTTPS协议。对HTTPS协议的端口进行进一步扫描,以确定服务器支持的密码套件。可以使用工具如sslscan或openssl s_client,通过连接到目标服务器的443端口,并通过协商SSL/TLS握手过程来获取支持的密码套件列表。

主要通过发送网络请求并解析服务器响应来获取目标服务器开放的端口和服务信息,再通过SSL/TLS握手获取服务器支持的密码套件列表。

Welcome to follow WeChat official account【程序猿编码

相关文章:

Linux下快速确定目标服务器支持哪些协议和密码套件

实现原理是利用TLS协议的特点和握手过程来进行测试和解析响应来确定目标服务器支持哪些TLS协议和密码套件。 在TLS握手过程中&#xff0c;客户端和服务器会协商并使用相同的TLS协议版本和密码套件来进行通信。通过发送特定的握手请求并分析响应&#xff0c;可以确定目标服务器…...

LeetCode100122. Separate Black and White Balls

文章目录 一、题目二、题解 一、题目 There are n balls on a table, each ball has a color black or white. You are given a 0-indexed binary string s of length n, where 1 and 0 represent black and white balls, respectively. In each step, you can choose two a…...

系列二十六、idea安装javap -c

一、概述 javap -c是一个能够将.java文件反编译为.class文件的指令&#xff0c;例如我在idea中编写了一个Car.java文件&#xff0c;我想看看这个类被编译后长什么样的&#xff0c;就可以使用该指令进行查看。 二、配置 2.1、 Java Bytecode Decompiler File>Settings>Pl…...

nginx 如何根据IP做限流,以及 nginx 直接返回 json 格式数据

Nginx 限流配置 Nginx是如何限流的。随着业务的扩散&#xff0c;系统并发越来越高时&#xff0c;有三样利器用来保护系统&#xff0c;分别是缓存、降级和限流。 随着业务的扩散&#xff0c;系统并发越来越高时&#xff0c;有三样利器用来保护系统&#xff0c;分别是缓存、降…...

C语言链式栈

stack.h typedef struct Node_s {int data;struct Node_s *pNext; } Node_t, *pNode_t;typedef struct Stack_s {pNode_t pHead;//栈顶指针&#xff0c;指向了链表的第一个结点int size;//栈的元素个数 } Stack_t, *pStack_t;void init(pStack_t pStack); void push(pStack_t …...

【Go入门】 Go的http包详解

【Go入门】 Go的http包详解 前面小节介绍了Go怎么样实现了Web工作模式的一个流程&#xff0c;这一小节&#xff0c;我们将详细地解剖一下http包&#xff0c;看它到底是怎样实现整个过程的。 Go的http有两个核心功能&#xff1a;Conn、ServeMux Conn的goroutine 与我们一般编…...

解决k8s node节点报错: Failed to watch *v1.Secret: unknown

现象&#xff1a; 这个现象是发生在k8s集群证书过期&#xff0c;重新续签证书以后。 记得master节点的/etc/kubernetes/kubelet.conf文件已经复制到node节点了。 但是为什么还是报这个错&#xff0c;然后运行证书检查命令看一下&#xff1a; 看样子是差/etc/kubernetes/pki/…...

日志维护库:loguru

在复杂的项目中&#xff0c;了解程序的运行状态变得至关重要。在这个过程中&#xff0c;日志记录&#xff08;logging&#xff09;成为我们追踪、调试和了解代码执行的不可或缺的工具。在python语言中常用logging日志库&#xff0c;但是logging日志库使用相对繁琐&#xff0c;在…...

【Go入门】 Go如何使得Web工作

【Go入门】 Go如何使得Web工作 前面小节介绍了如何通过Go搭建一个Web服务&#xff0c;我们可以看到简单应用一个net/http包就方便的搭建起来了。那么Go在底层到底是怎么做的呢&#xff1f;万变不离其宗&#xff0c;Go的Web服务工作也离不开我们第一小节介绍的Web工作方式。 w…...

汽车虚拟仿真视频数据理解--CLIP模型原理

CLIP模型原理 CLIP的全称是Contrastive Language-Image Pre-Training&#xff0c;中文是对比语言-图像预训练&#xff0c;是一个预训练模型&#xff0c;简称为CLIP。该模型是 OpenAI 在 2021 年发布的&#xff0c;最初用于匹配图像和文本的预训练神经网络模型&#xff0c;这个任…...

【Web】Ctfshow SSTI刷题记录1

目录 ①web361 362-无过滤 ②web363-过滤单双引号 ③web364-过滤单双引号和args ④web365-过滤中括号[]、单双引号、args ⑤web366-过滤单双引号、args、中括号[]、下划线 ⑦web367-过滤单双引号、args、中括号[]、下划线、os ⑧web368-过滤单双引号、args、中括号[]、下…...

【广州华锐互动】VR可视化政务服务为公众提供更直观、形象的政策解读

虚拟现实&#xff08;VR&#xff09;技术正在逐渐应用于政务服务领域&#xff0c;为公众提供更加便捷、高效和个性化的服务体验。通过VR眼镜、手机等设备&#xff0c;公众可以在虚拟环境中参观政务服务中心&#xff0c;并根据自己的需求选择不同的办事窗口或事项进行咨询和办理…...

音视频项目—基于FFmpeg和SDL的音视频播放器解析(七)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…...

Sql Server 2017主从配置之:发布订阅

使用发布订阅模式搭建Sql Server 2017主从同步&#xff0c;类似事件通知机制&#xff0c;基本可以做到准实时同步&#xff0c;可以同时做到一对多的数据同步。 不过发布订阅模式&#xff0c;只能同时数据&#xff0c;不能同步表结构。在创建发布的时候&#xff0c;需要选择需要…...

聊聊logback的EvaluatorFilter

序 本文主要研究一下logback的EvaluatorFilter EvaluatorFilter ch/qos/logback/core/filter/EvaluatorFilter.java public class EvaluatorFilter<E> extends AbstractMatcherFilter<E> {EventEvaluator<E> evaluator;Overridepublic void start() {if …...

解决vue 部分页面缓存,部分页面不缓存的问题

前端时间项目迭代&#xff0c;其中有个需求 在vue里面&#xff0c;有a.b.c三个页面&#xff0c;要达到的效果是从a页面进去b页面&#xff0c;b页面需要刷新&#xff0c;但若从b页面进入c页面了以后再回到b页面&#xff0c;b页面需要保留之前的值&#xff0c;不做刷新&#xff1…...

修完这个 Bug 后,MySQL 性能提升了 300%

最近 MySQL 官方在 8.0.35 上修复了一个 bug&#xff1a; 这个 bug 是由 Mark Callaghan 发现的。Mark 早年在 Google MySQL 团队&#xff0c;后来去了 Meta MySQL&#xff0c;也主导了 RocksDB 的开发。 Mark 在 #109595 的 bug report 给出了非常详细的复现步骤 在官方修复后…...

【C/PTA】数组进阶练习(二)

本文结合PTA专项练习带领读者掌握数组&#xff0c;刷题为主注释为辅&#xff0c;在代码中理解思路&#xff0c;其它不做过多叙述。 目录 7-1 字符串逆序7-2 字符串替换7-3 统计字符出现次数7-4 IP地址转换7-1 删除重复字符7-2 说反话-加强版7-3 数组-回文串7-4 数组-无聊的菇菇…...

Mysql MMM

MMM概述 MMM(Master-Master replication manager for MvSQL&#xff0c;MySQL主主复制管理器&#xff09; 是一套支持双主故障切换和双主日常管理的脚本程序。 MMM 使用 Perl 语言开发&#xff0c;主要用来监控和管理MySQL Master-Master&#xff08;双主&#xff09;复制&…...

GDPU 数据结构 天码行空10

目录 数据结构实验十 树遍历应用一、【实验目的】二、【实验内容】三、【实验源代码】⭐ CPP版⭐ c语言版 四、实验结果 数据结构实验十 树遍历应用 一、【实验目的】 1、了解树的建立方法 2、掌握树与二叉树的转化及其遍历的基本方法 3、掌握递归二叉树遍历算法的应用 二、…...

CD36 ; + Lectin;

CD2 LIMP-2&#xff0c; LGP85 SR-BI&#xff0c; CD36&#xff1b; 清道夫受体蛋白CD36超家族的成员是 脂质代谢 和 先天免疫 的重要调节因子。它们识别正常和修饰的脂蛋白&#xff0c;以及与病原体相关的分子模式。 该家族由三个成员组成&#xff1a; SR-BI &am…...

Git 分支管理

目录 列出分支 删除分支 分支合并 合并冲突 几乎每一种版本控制系统都以某种形式支持分支&#xff0c;一个分支代表一条独立的开发线。 使用分支意味着你可以从开发主线上分离开来&#xff0c;然后在不影响主线的同时继续工作。 Git 分支实际上是指向更改快照的指针。 有…...

Vue23全局事件总线

Vue2&3全局事件总线 Vue2全局事件总线 功能&#xff1a;可以解决所有组件之间通信传数据的问题原理&#xff1a;通过一个共享对象&#xff0c;将所有组件全部绑定到对象上&#xff0c;即可通过这个对象实现组件与组件之间的传递数据&#xff0c;而这个共享对象叫做全局事件…...

GEM5 Garnet DVFS / NoC DVFS教程:ruby.clk_domain ruby.voltage_domain

简介 gem5中的 NoC部分是Garnet实现的&#xff0c;但是Garnet并没有单独的时钟域&#xff0c;而是保持ruby一致&#xff0c;要做noc的DVFS&#xff0c;便是要改ruby的 改电压 #这里只是生成一个随便变量名&#xff0c;存一下值。改是和频率一起的 userssaved_voltage_domain…...

java命令 jmap 堆参数分析

jmap -heap pid 展示pid的整体堆信息 bash-4.4# jmap -heap 10 Attaching to process ID 10, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.172-b11using thread-local object allocation. Garbage-First (G1) GC with 8 th…...

OpenCV C++ 图像处理实战 ——《OCR字符识别》

OpenCV C++ 图像处理实战 ——《OCR字符识别》 一、结果演示二、tesseract库配置2.1下载编译三、OCR字符识别3.1 文本检测方式3.1.1 RIL_BLOCK3.1.2 RIL_PARA3.1.3 RIL_TEXTLINE3.1.4 RIL_WORD3.1.5 RIL_SYMBOL3.2 英文文本检测3.3 中英文本检测四、源码测试图像下载总结一、结…...

在MySQL中创建新的数据库,可以使用命令,也可以通过MySQL工作台

摘要:在本教程中,你将学习如何使用MySQL CREATE DATABASE语句在MySQL数据库服务器上创建新数据库。 MySQL CREATE DATABASE语句简介 要在MySQL中创建新数据库,可以使用CREATE DATABASE语句。以下说明了CREATE DATABASE语句的基本语法: CREATE DATABASE [IF NOT EXISTS] …...

2311rust到31版本更新

1.27.1稳定版 在此修补程序前,下例在编译器内部恐慌. fn main() {let a vec!["".to_string()];a.iter().enumerate().take_while(|(_, &t)| false).collect::<Vec<_>>(); }1.27.1拒绝上述代码,并显示以下错误消息: error[E0507]: cannot move ou…...

【Python百宝箱】视觉算法秀:Python图像处理舞台上的巅峰对决

前言 在数字化时代&#xff0c;图像处理技术已经成为科技和计算机领域中不可或缺的一部分。从医学影像到计算机视觉&#xff0c;图像处理为我们提供了无限的可能性。Python作为一种灵活而强大的编程语言&#xff0c;在图像处理领域表现出色&#xff0c;拥有丰富的库和工具。本…...

Flutter 中在单个屏幕上实现多个列表

今天&#xff0c;我将提供一个实际的示例&#xff0c;演示如何在单个页面上实现多个列表&#xff0c;这些列表可以水平排列、网格格式、垂直排列&#xff0c;甚至是这些常用布局的组合。 下面是要做的&#xff1a; 实现 让我们从创建一个包含产品所有属性的产品模型开始。 …...