工具推荐-testssl

在任何端口上随时随地测试TLS/SSL加密

根据作者的说法testssl.sh是一个免费的命令行工具,它检查服务器在任何端口上的服务是否支持TLS/SSL密码、协议以及一些加密缺陷。在测试https上的一些内容工具是非常方便的

主要特点
•清晰的输出:你可以很容易地判断出任何东西是好是坏。
•机器可读输出(CSV,两种JSON格式)
•无需安装或配置某些东西。没有宝石、CPAN、pip等。
•开箱即用:Linux、OSX/Darwin、FreeBSD、NetBSD、MSYS2/Cygwin、WSL(Windows上的bash)。只有OpenBSD需要bash。
•提供了一个Dockerfile,还有一个官方的容器build@dockerhub。
•灵活性:您可以测试任何启用SSL/TLS和STARTTLS的服务,而不仅仅是端口443的Web服务器。
•工具箱:几个命令行选项可帮助您运行测试和配置输出。
•可靠性:功能经过彻底测试。
•隐私:只有你看到结果,而不是第三方。
•自由:它是100%开源的。您可以查看代码,看看发生了什么。

安装

因为脚本运行是bash,所以需先准备一个linux环境,然后用下列命令下载sh脚本

git clone --depth 1 https://github.com/drwetter/testssl.sh.git

下载完后就可以直接用./testssl.sh来运行

由于现在应为docker镜像被ban了,现在下载镜像在"没配置"的机器上下载很麻烦,如果有需求的师傅可以前往项目页面查找下载的方式GitHub - drwetter/testssl.sh: Testing TLS/SSL encryption anywhere on any port

运行

下载完成后就可以直接执行了

我常用的参数是 -p -U

./testssl.sh -p -U https://baidu.com

-p是测试TLS/SSL的协议

-U是测试所有漏洞

"testssl.sh [选项] <URI>"    或者    "testssl.sh <选项>"

"testssl.sh <选项>", 其中 <选项> 通常是独立的,且为以下之一:

     --help                        显示你现在看到的帮助信息
     -b, --banner                  显示 testssl.sh 的横幅和版本信息
     -v, --version                 与前一个选项相同
     -V, --local [pattern]         美化输出所有本地加密套件(仅限 openssl)。如果提供了搜索模式:它是一个忽略大小写的字模式、加密套件的十六进制代码或其他在名称、kx 或比特数中的字符串

"testssl.sh [选项] <URI>", 其中 <URI> 为:

     <URI>                         主机|主机:端口|URL|URL:端口   默认端口为 443,URL 只能使用 HTTPS 协议

  而 [选项] 为:

     -t, --starttls <协议>         针对启用 STARTTLS 的服务运行测试,支持的协议有:ftp、smtp、lmtp、pop3、imap、sieve、xmpp、xmpp-server、telnet、ldap、nntp、postgres、mysql
     --xmpphost <目标域名>         对于 STARTTLS xmpp 或 xmpp-server 检查,它提供域名(如同 SNI)
     --mx <域名/主机>             测试从高到低优先级的 MX 记录(STARTTLS,端口 25)
     --file/-iL <文件名>           批量测试选项:从 <文件名> 读取每行 testssl.sh 命令。可以与 --serial 或 --parallel 配合使用。默认启用 "--warnings batch"。
                                   文本格式 1:允许通过 # 注释,EOF 表示 <文件名> 结束
                                   文本格式 2:nmap 输出的 greppable 格式 (-oG),每行仅允许 1 个端口
     --mode <serial|parallel>      批量测试可以是串行(默认)或并行(--parallel 是后者的快捷方式)
     --warnings <batch|off>        "batch" 在遇到测试错误时不继续,off 则继续并跳过警告
     --connect-timeout <秒数>      用于避免挂起。最大等待时间 <秒数>,等待 TCP 套接字连接返回
     --openssl-timeout <秒数>      用于避免挂起。最大等待时间 <秒数>,等待 openssl 连接被终止

单一检查(<选项> 作为参数)("testssl.sh URI" 执行所有操作,除了 -E 和 -g):
     -e, --each-cipher             检查每个本地加密套件的远程可用性
     -E, --cipher-per-proto        按协议检查加密套件
     -s, --std, --categories       测试标准加密套件类别(按强度排序)
     -f, --fs, --nsa               检查前向保密设置
     -p, --protocols               检查 TLS/SSL 协议(包括 SPDY/HTTP2)
     -g, --grease                  测试多个服务器实现的漏洞,如 GREASE 和大小限制
     -S, --server-defaults         显示服务器的默认选择和证书信息
     -P, --server-preference       显示服务器选择的协议+加密套件
     -x, --single-cipher <模式>    测试匹配的 <模式> 加密套件
                                   (如果 <模式> 不是数字:按词匹配)
     -c, --client-simulation       测试客户端模拟,查看哪个客户端与加密套件和协议协商
     -h, --header, --headers       测试 HSTS、HPKP、服务器/应用横幅、安全头、Cookie、反向代理、IPv4 地址

     -U, --vulnerable              测试所有(以下)漏洞(如果适用)
     -H, --heartbleed              测试 Heartbleed 漏洞
     -I, --ccs, --ccs-injection    测试 CCS 注入漏洞
     -T, --ticketbleed             测试 BigIP 负载均衡器中的 Ticketbleed 漏洞
     --BB, --robot                 测试 Bleichenbacher's Oracle Threat (ROBOT) 漏洞
     --SI, --starttls-injection    测试 STARTTLS 注入问题
     -R, --renegotiation           测试重协商漏洞
     -C, --compression, --crime    测试 CRIME 漏洞(TLS 压缩问题)
     -B, --breach                  测试 BREACH 漏洞(HTTP 压缩问题)
     -O, --poodle                  测试 POODLE(SSL)漏洞
     -Z, --tls-fallback            检查 TLS_FALLBACK_SCSV 缓解措施
     -W, --sweet32                 测试 64 位块加密套件(3DES、RC2 和 IDEA):SWEET32 漏洞
     -A, --beast                   测试 BEAST 漏洞
     -L, --lucky13                 测试 LUCKY13
     -WS, --winshock               测试 winshock 漏洞
     -F, --freak                   测试 FREAK 漏洞
     -J, --logjam                  测试 LOGJAM 漏洞
     -D, --drown                   测试 DROWN 漏洞
     -4, --rc4, --appelbaum        测试提供的 RC4 加密套件

调优/连接选项(大多数也可以通过环境变量设置):
     -9, --full                    包括对实现漏洞和每协议加密套件的测试(可能会被移除)
     --bugs                        启用 s_client 的 "-bugs" 选项,例如一些有缺陷的 F5 设备
     --assume-http                 如果协议检查失败,则假设为 HTTP 协议并强制进行 HTTP 检查
     --ssl-native                  在通常使用套接字的地方使用 OpenSSL。速度更快,但不准确,尽量避免使用
     --openssl <路径>              使用此 openssl 二进制文件(默认:在 $PATH、$RUN_DIR 中查找 testssl.sh)
     --proxy <主机:端口|auto>      (实验性)通过 <主机:端口> 使用代理连接,auto: 使用 $env 中的值($http(s)_proxy)
     -6                            还使用 IPv6。仅当支持的 OpenSSL 版本和 IPv6 连接时有效
     --ip <ip>                     a) 测试提供的 <ip> v4 或 v6 地址,而不是解析 URI 中的主机
                                   b) "one" 表示:仅测试 DNS 返回的第一个地址(当有多个 IP 时很有用)
                                   c) "proxy" 表示通过代理解析 DNS。当主机没有 DNS 时需要使用。
     -n, --nodns <min|none>        如果 "none":不进行任何 DNS 查询,"min" 查询 A、AAAA 和 MX 记录
     --sneaky                      减少目标日志中的痕迹:如 User-Agent 和 Referer
     --user-agent <user agent>     设置自定义的 User-Agent,而不是默认的 User-Agent
     --ids-friendly                跳过可能导致 IDS 阻止扫描 IP 的漏洞检查
     --phone-out                   允许联系外部服务器进行 CRL 下载和查询 OCSP 响应者
     --add-ca <CA 文件|CA 目录>    包含信任检查的 CA 文件路径 <CAdir> 或以逗号分隔的 CA 文件列表
     --mtls <客户端证书文件>       指定 PEM 格式的 <客户端证书> 文件,包含未加密的证书密钥(测试版)
     --basicauth <用户:密码>       提供 HTTP 基本认证信息
     --reqheader <头信息>          添加自定义 HTTP 请求头

输出选项(也可以通过环境变量预设):
     --quiet                       不输出横幅。通过此操作,你确认已阅读并同意横幅中的使用条款
     --wide                        扩展输出,适用于像 RC4、BEAST 等测试。FS 也以十六进制显示,包含 kx、强度、RFC 名称
     --show-each                   在扩展输出中:显示所有测试的加密套件 ------ 而不仅仅是成功的
     --mapping <openssl|           openssl:使用 OpenSSL 加密套件名称作为主要名称
                iana|rfc             -> 使用 IANA/(RFC) 加密套件名称作为主要名称
                no-openssl|          -> 不显示
相关推荐
sky_feiyu5 小时前
wireshark初认识
网络·测试工具·wireshark
tan_135100751885 小时前
罗德与施瓦茨NRP33SN,一款独立、特性齐全的功率探头
网络·科技·测试工具·信息与通信
黑客Jack5 小时前
网络安全概论——入侵检测系统IDS
服务器·安全·web安全
网络安全-杰克5 小时前
以ATT&CK为例构建网络安全知识图
网络·安全·web安全
网络安全queen5 小时前
网络安全概论——网络安全基础
网络·web安全·php
黑客Jack5 小时前
网络安全概论——虚拟专网VPN技术
网络·安全·web安全
黑客K-ing5 小时前
网络安全系列 之 SQL注入学习总结
sql·学习·web安全
真上帝的左手6 小时前
七、网络安全-企业数据脱敏
安全·web安全