MySQL蜜罐在护网中提取攻击者微信ID

本文探讨了MySQL数据库的风险识别,重点介绍了如何通过强化配置、权限管理、防止文件读取攻击、弱口令检测及安全加固措施来提升数据库的安全性。讲解了关键的权限表结构,以及如何限制使用管理员权限和创建安全用户,确保最小权限原则。
摘要由CSDN通过智能技术生成

Mysql数据库安全配置、或者叫加固属于风险模型中的一环,它需要安全人员在理论和实践的学习中不断发现新的问题,并针对这些问题对数据的各个方面的配置进行强化。本文试图围绕着数据库风险识别、数据库安全加固这个问题,探讨可以采取的措施来最大程度的保证我们的数据库的安全控制处在一个较好的水平。
mysql中存在4个控制权限的表,分别为

  1. mysql.USER表
  2. mysql.DB表
  3. mysql.TABLES_PRIV表
  4. mysql.COLUMNS_PRIV表
    要注意的是,Mysql中有一个数据库"information_schema",似乎里面保存的也是一些权限信息,但是要明白的是,这个数据库"information_schema"是为系统管理员提供元数据的一个简便方式,它实际上是一个视图,可以理解为对Mysql中的一个信息的封装,对于Mysql主程序来说,身份认证和授权的信息的来源只有一个,就是"mysql"。

原理

MySQL中 load data local infile ‘/etc/passwd’ into table test fields terminated by ‘\n’;语句可以读取客户端本地文件并插进表中,那么我们可以伪造一个恶意的服务器,向连接服务器的客户端发送读取文件的payload。这个技术并不新鲜,但是合理利用就能起到一些不错的成果。

利用
抓个包看看连MySQL时客户端和服务端通信的两个关键点:

服务端先返回了版本、salt等信息:

图片

注意:现在mysql连接方式有三种:

Unix套接字;

内存共享/命名管道;

TCP/IP套接字;

Linux或Unix环境下,输入 mysql -uroot -p123456 登录Mysql服务器的时候用的就是 Unix套接字 的方式登录

Windows系统客户端和Mysql在同一台电脑上,可以使用命令管道和共享内存的方式

TCP/IP套接字是任何系统下都可以使用的方式,使用方式为:

mysql -h127.0.0.1 -uroot -p123456
在这里插入图片描述
至此,我们只需等待客户端再发一个包,我们就能发送读取文件的payload了,再看看读取文件这个包:

图片
这里000001是指数据包的序号,fb是指包的类型,最后一个框是指要读取的文件名,而最前面的14是指文件名的长度(从fb开始,16进制),所以payload则是chr(len(filename) + 1) + “\x00\x00\x01\xFB” + filename

在能够实现任意文件读取的情况下,我们最希望的就是能读到与攻击者相关的信息。日常生活中,大家几乎都会使用微信,而如果攻击者没有做到办公—渗透环境分离的话,我们就有希望获取到攻击者的微信ID
图片

Windows下,微信默认的配置文件放在C:\Users\username\Documents\WeChat Files\中,在里面翻翻能够发现 C:\Users\username\Documents\WeChat Files\All Users\config\config.data中含有微信ID:

而获取这个文件还需要一个条件,那就是要知道攻击者的电脑用户名,用户名一般有可能出现在一些日志文件里,我们需要寻找一些比较通用、文件名固定的文件。经过测试,发现一般用过一段时间的电脑在C:\Windows\PFRO.log中较大几率能找到用户名。

图片

伪装
攻击者进入内网后常常会进行主机发现和端口扫描,如果扫到MySQL了,是有可能进行爆破的,如果蜜罐不能让扫描器识别出是弱口令,那就没啥用了,所以还需要抓下扫描器的包。
这里以超级弱口令检查工具为例,首先在本地起一个正常的MySQL服务,wireshark抓包看看扫描器有哪些请求:
在这里插入图片描述

可以看到,这款工具在验证完密码后还发了5个查询包,如果结果不对的话,是无法识别出弱口令的,那么我们将服务器的响应数据提取出来,放进程序里,当收到这些请求后,就返回对应的包:
在这里插入图片描述
在这里插入图片描述

效果
当攻击者发现存在弱口令的时候,大概率会连上去看看,如果使用navicat的话,就能读取到文件:
在这里插入图片描述
写了个简单的web来显示攻击者的微信ID,扫一扫就能加上TA
在这里插入图片描述

安全加固
帐号安全

禁止 Mysql 以管理员帐号权限运行

以普通帐户安全运行 mysqld,禁止以管理员帐号权限运行 MySQL 服务。在 /etc/my.cnf 配置文件中进行以下设置。

避免不同用户间共享帐号

参考以下步骤。

删除无关帐号

DROP USER 语句可用于删除一个或多个 MySQL 账户。使用 DROP USER 命令时,必须确保当前账号拥有 MySQL 数据库的全局 CREATE USER 权限或 DELETE 权限。账户名称的用户和主机部分分别与用户表记录的 User 和 Host 列值相对应。

执行DROP USER user;语句,您可以取消一个账户和其权限,并删除来自所有授权表的帐户权限记录。

创建用户。

执行以上命令可以创建一个 phplamp 用户。

使用该用户登录 MySQL 服务。

mysql> mysql> insert into

mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub

);

mysql>exit;

@>mysql -u phplamp -p

@>输入密码

mysql>登录成功

[mysql.server]

user=mysql

口令

检查账户默认密码和弱密码。口令长度需要至少八位,并包括数字、小写字母、大写字母和特殊符号四类中的至少两种类型,且五次以内不得设置相同的口令。密码应至少每 90 天进行一次更换。

您可以通过执行以下命令修改密码。

mysql> update user set password=password(‘test!p3’) where user=‘root’;

mysql> flush privileges;

授权

在数据库权限配置能力范围内,根据用户的业务需要,配置其所需的最小权限。

mysql> use mysql;

mysql> select * from user;

mysql>select * from db;

mysql>select * from host;

mysql>select * from tables_priv;

mysql>select * from columns_priv;

查看数据库授权情况。

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值