AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1757941
Accepted
porg
porg
Asked: 2022-12-16 09:29:42 +0800 CST2022-12-16 09:29:42 +0800 CST 2022-12-16 09:29:42 +0800 CST

测试带有 --ssl-mode=REQUIRED 给定 --host 的 mysql shell 在不首先提供用户名、密码、数据库名称的情况下真的可以工作吗?

  • 772

我正在mysql 客户端中寻找一种可能性,以仅测试--ssl-mode=REQUIRED给定指令是否--host 100% 得到保证,而不会潜在地破坏通过 Internet 以明文形式显示的用户名、密码和数据库名称。使用如下参数运行该模式--ssl--check-handshake-only-then-disconnect-and-report:

这是关于一个人的网络主机的场景:

  • 没有关于服务器上 SSL 可用性的适当/可用/可靠的文档,
  • 和/或不能或只能复杂地访问 mysql 服务器及其配置信息。

到目前为止,经过我的研究,我认为不可能进行 100% 无风险的 SSL/TLS 握手测试运行,这显然是无风险的,因为它无需提供用户名、密码和数据库名称即可运行。

--ssl-mode=REQUIRED的文档非常简单明了地解决了这个问题:

必需:如果服务器支持加密连接,则建立加密连接。如果无法建立加密连接,则连接尝试失败。

只需相信 mysql 客户端(又名“shell”)它确实按该顺序运行:

  1. 确保--ssl-mode=REQUIRED在给定情况下有效,否则会过早退出并显示明确的错误消息。
  2. 只有当握手和加密协商顺利进行时,客户端才会提交提供的用户名、密码和数据库名称。
  3. 并且没有新的开发人员会在该条件检查中引入错误......
  • 对于了解并信任他们的 mysql 客户端和设置的精通/日常用户来说,这可能就足够了。

  • 但对于真正需要 100% 无风险检查的新用户或需要怀疑的人来说,这不是最佳选择。

一个真正的“无风险连接/握手测试模式”显然是无风险的,因为它也可以在不提交任何具体凭据的情况下工作,这将是非常令人放心的。

  • 在我在https://bugs.mysql.com注册并在那里提交功能请求之前
  • 我在这里问一下,是否有我不知道的可能性。
security
  • 1 1 个回答
  • 21 Views

1 个回答

  • Voted
  1. Best Answer
    Cpt.Whale
    2022-12-16T10:56:10+08:002022-12-16T10:56:10+08:00

    如果您只是想测试客户端在无法建立 SSL 时抛出错误,那么一种快速而肮脏的方法是将这两者结合起来:

    • 只需使用虚假的用户名和密码连接
    • 强制客户端使用错误的密码使 ssl 握手失败--ssl-cipher SEED-SHA

    您应该始终看到“SSL 失败”而不是“密码错误”的错误。尝试--ssl-mode=REQUIRED打开和关闭以验证它是抛出错误还是回退到明文。


    如果你想检查服务器是否支持 SSL(以及支持到什么程度),那么像 nmap 这样的东西会更好。确保你有一个更新版本的 nmap,然后使用类似这样的东西来检查 SSL 状态,例如:

    nmap --script ssl-enum-ciphers MyServerName -p 3306
    

    如果不出意外,您始终可以使用数据包捕获/wireshark 验证连接是否在 SSL 之前发送凭据,尽管它有一个学习曲线。


    就像你提到的,如果你可以与控制服务器的人一起工作,这很简单,选项如下:

    • 使用基于证书的身份验证,因此不会传输任何秘密
    • 在服务器端需要 ssl,(如果它是面向互联网的,则应该要求)
    • 在连接到 MySql 之前控制与 VPN 或 SSH 的连接

    但这并不总是可能的


    结果nmap- 这感觉就像是完成这项工作的合适工具!

    nmap --script ssl-enum-ciphers  customerid-mysql.services.mywebhost.com -p 3306
    Starting Nmap 7.93 ( https://nmap.org ) at 2022-12-16 01:39 CET
    Nmap scan report for customerid-mysql.services.mywebhost.com (XXX.XX.X.XX)
    Host is up (0.016s latency).
    rDNS record for XXX.XX.X.XX: web20.mywebhost.com
    
    PORT     STATE SERVICE
    3306/tcp open  mysql
    | ssl-enum-ciphers: 
    |   TLSv1.2: 
    |     ciphers: 
    |       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 2048) - A
    |       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
    |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
    |       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
    |       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 4096) - A
    |       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 4096) - A
    |       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 4096) - A
    |       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 4096) - A
    |       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 4096) - A
    |       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 4096) - A
    |     compressors: 
    |       NULL
    |     cipher preference: client
    |     warnings: 
    |       Key exchange (dh 2048) of lower strength than certificate key
    |       Key exchange (secp256r1) of lower strength than certificate key
    |_  least strength: A
    
    Nmap done: 1 IP address (1 host up) scanned in 3.23 seconds
    

    与andmysql组合的结果--ssl-cipher--ssl-mode

    $ mysql --ssl-cipher SEED-SHA  -h customerID-mysql.services.mywebhost.com -u fakeUser -p --ssl-mode=DISABLED 
    Enter password: 
    ERROR 1045 (28000): Access denied for user 'fakeUser'@'XX.XXX.XX.XX' (using password: YES)
    
    • ❌ 服务器接受明文。
    • ✅ 但我们只破坏了虚假数据。
    • ✅ 没有伤害。最大风险确定。
    $ mysql --ssl-cipher SEED-SHA  -h customerID-mysql.services.mywebhost.com -u fakeUser -p --ssl-mode=REQUIRED 
    Enter password: 
    ERROR 2026 (HY000): SSL connection error: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
    
    • ✅ 服务器因密码错误而中止。
    • ℹ️ 从理论上我们知道这会在发送凭据之前开始。
    • ✅ 所以对于那些有知识的人来说,这是一个足够好的预测试。
    $ mysql --ssl-cipher SEED-SHA  -h customerID-mysql.services.mywebhost.com -u fakeUser -p --ssl-mode=PREFERRED
    Enter password: 
    ERROR 2026 (HY000): SSL connection error: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
    
    • ✅ 同样,当我们用 PREFERRED 试探服务器但提供了错误的密码时,服务器会选择安全的选择并终止。
    • ✅ 感觉不寒而栗。此外,我不明白为什么 --ssl-cipher SEED-SHA 是一个错误的密码,以及在哪些条件下进行了测试。
    $ mysql  -h customerID-mysql.services.mywebhost.com -u fakeUser -p --ssl-mode=REQUIRED 
    Enter password: 
    ERROR 1045 (28000): Access denied for user 'fakeUser'@'77.119.77.94' (using password: YES)
    
    • ❓ 不确定如何解释:
    • ❌虽然我要求协议继续(至少提交用户名,幸运的是它只是'fakeUser'。
    • ❓但是这个请求中是否也发送了密码?
    • 1

相关问题

  • VirtualBox 下载被阻止并显示安全警告

  • 查找通过网络上的“c$”访问我的文件夹的日志会话

  • Wifi IDS——监控模式与混杂模式——查看东西方流量

  • 删除子块

  • 校验和失败——Fedora 29 或旋转 KDE Plasma

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve