Testssl.sh是一个免费开源且功能丰富的命令行工具,用于检查服务器任意端口所支持的TLS/SSL密码和协议,同时也支持一些漏洞检测。
Testssl.sh安装
通过Git命令安装Testssl.sh的稳定版:
1
git clone --depth 1 --branch 2.9.5 https://github.com/drwetter/testssl.sh.git
Testssl.sh的2.9.5与2.8版均是可以用于日常工作的稳定版本,而2.9版本不建议日常使用。
与2.8版相比。2.9.5支持更多的新特性,所以OpenSSL的版本最好不低于1.0.2。
在2.9.5版本中实现的功能有:
- 支持更多的密码,因为大多数检查都是通过套接字完成的,所以尽可能地使用bash套接字
- 经由TLS接口的进一步测试和改进(握手解析,完整性,健壮性)
- 使用套接字和OpenSSL混合测试359种密码(
testssl.sh -e/-E
)。支持进度与OpenSSL相同,但额外支持一些密码,如post-quantum密码,新CHAHA20/POLY1305、CamelliaGCM等。 - 正式支持通过套接字检查TLS1.2
- 通过套接字查找更多的TLS扩展
- TLS支持组注册表(RFC 7919),密钥共享扩展
- 非分组JSON输出支持
- 文件输出(CSV、JSON分组,JSON非分组)支持最小级别输出(仅在支持的级别上提供)
- 原生支持HTML而不是通过
aha
- LUCKY13和SWEET32检查
- Ticketbleed检查
- LOGJAM:现在已经支持检测已知DH参数
openssl connect
支持连接超时参数,用于批量/集中扫描- 并行集中测试
- 检查CAA记录
- OSCP staple检查
- Certificate Transparency检查
- 会话恢复检查(Ticket、ID)
- 更好的输出格式(缩进)
- 仅显示RFC命名方案
- 批量测试文件导入,支持namp grepable(-oG)输出格式
- STARTTLS支持Postgres、und、MySQL
- 更多请阅读操作手册
Testssl.sh使用
一般使用如下命令对网站进行完整测试:
1
./testssl.sh https://github.com/
如果网站采用的不是默认端口,可以使用URL:port
的方法对端口进行指定。
启用协议检查:
1
./testssl.sh -t smtp https://github.com/
支持ftp,smtp,pop3,imap,xmpp,telnet,ldap,postgres,mysql,而最后四项需要OpenSSL支持。
启用并行测试:
1
./testssl.sh --parallel https://github.com/
输出测试日志文件:
1
./testssl.sh --html https://github.com/
建议使用html格式输出,使用--log
输出的txt文件显示效果不佳。使用--htmlfile
可以指定输出的文件名和文件夹,而默认以<NODE>-p<port#><YYYYMMDD-HHMM>.html
的形式输出在当前文件夹。
指定OpenSSL版本:
1
./testssl.sh --openssl=/usr/bin/openssl https://github.com/
--fast
:可以加快检查速度,因为只显示一个最先使用的最优密码。
--sneaky
:在扫描目标日志中留下较少的记录(UA和Referer)。
--wide
:RC4,BEAST之类的测试将输出更多的测试内容。PFS也会输出十六进制码、kx(KeyExch.)、强度和RFC名称。
--nodns
或-n
:不使用任何DNS查询。
小结
在测试完成之后,报告中会使用黄色和红色来标识不同程度的安全漏洞或者可能存在的漏洞,并会在其后提供简单的解决漏洞的提示。如果你的网站已经启用了TLS1.3,那么你需要使用Testssl.sh 2.9来进行测试。同时2.9和2.9.5版均支持DNS CAA检测,但是有一定概率无法正常检测出DNS CAA配置。
不过需要注意,在WSL上,--parallel
参数效果不佳,同时2.9版本大概率无法正常运行。
本文采用CC BY-NC-ND 4.0许可协议进行许可,转载请注明出处。
本文最后更新时间为:2019-03-03-Sunday-11:14:03 AM