【问题标题】:Wireshark Password Capture of MySQL TrafficMySQL 流量的 Wireshark 密码捕获
【发布时间】:2018-07-06 17:22:05
【问题描述】:

我在一个测试环境中尝试使用 Wireshark 来捕获传递给 MySQL 的凭据。我做了一些挖掘,我读到 MySQL 客户端在发送之前对密码进行哈希处理,即使在未加密的情况下也是如此。因此,当我捕获包含凭据的数据包时,我希望看到明文的用户名和传递的散列密码,但这不是我看到的。用户名是明文的,但密码不等于数据库中的哈希密码。更奇怪的是每次登录时数据包中的密码都会更改。

WireShark 登录包#1:

MAX Packet: 16777216
Charset: utf8 COLLATE utf8_general_ci (33)
Username: root
Password: ada5be054b6a9b44eaa0d86e33fb9442e8af7169
Client Auth Plugin: mysql_native_password

WireShark 登录包#2:

MAX Packet: 16777216
Charset: utf8 COLLATE utf8_general_ci (33)
Username: root
Password: 78a85ed4ba56ae733057226fdc0a189b7672a0a7
Client Auth Plugin: mysql_native_password

WireShark 登录包#3:

MAX Packet: 16777216
Charset: utf8 COLLATE utf8_general_ci (33)
Username: root
Password: f097e87cbba8f39cbaa3403dd5f7c966e3ed3969
Client Auth Plugin: mysql_native_password

我查看了 MySQL 文档并搜索了 Internet,但似乎找不到任何关于此的内容。有没有人有任何想法/想法?

感谢您的帮助!

【问题讨论】:

    标签: mysql wireshark packet-capture password-hash


    【解决方案1】:

    不是 MySQL 专家,但通常密码授权受 replay attack 保护,因此嗅探网络不应允许攻击者通过发送完全相同的数据进行授权。这通常使用nonce 完成:服务器发送唯一数据,因此客户端必须提供hash(nonce + password_hash) 才能授权。下一次连接时提供不同的nonce,必须发送不同的授权数据,所以之前的授权数据不能重复使用。

    另请注意,hash 可能是 hash of hash of hash of hash 并在一个或多个步骤中包含 salt,因此将发送的数据与已知密码进行比较需要知道确切的算法。

    【讨论】:

    • 我似乎在 MySQL 的任何文档中都找不到 nonce 的用法?
    • 好吧,你让我在谷歌上搜索 MySQL 协议细节。 This article 阐明了身份验证。服务器在问候包中向客户端发送随机种子字符串,因此客户端通过使用种子加扰密码来构建身份验证数据。
    • @nnovich-OK,仅供参考,您分享的文章的链接没有达到 404 Not Found
    猜你喜欢
    • 2011-08-16
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2015-06-22
    • 2017-09-18
    • 1970-01-01
    相关资源
    最近更新 更多