通过命令或者工具查看当前数据库是否创建了可疑用户。
SELECT user, host FROM mysql.user;
类似以下结果
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | localhost |
| user1 | % |
| admin | 192.168.1.100 |
| test | localhost |
| readonly_user | 10.0.0.50 |
+------------------+-----------+
SHOW VARIABLES LIKE 'log_error';
SHOW VARIABLES LIKE 'general_log_file';
SHOW VARIABLES LIKE 'slow_query_log_file';
找到错误日志位置,定位日志(大量登录失败、异常查询)(并且不在正常运维期间所触发)
错误登录日志例子
2024-07-08T12:34:56.789123Z 8 [Note] Access denied for user 'user1'@'192.168.1.100' (using password: YES)
2024-07-08T12:34:57.123456Z 8 [Note] Access denied for user 'user2'@'10.0.0.50' (using password: YES)
2024-07-08T12:34:57.987654Z 8 [Note] Access denied for user 'admin'@'localhost' (using password: YES)
2024-07-08T12:34:58.345678Z 8 [Note] Access denied for user 'root'@'172.16.0.10' (using password: YES)
2024-07-08T12:34:59.234567Z 8 [Note] Access denied for user 'test'@'%' (using password: YES)
异常慢查询日志例子
# Time: 2024-07-08T12:34:56.789123Z
# User@Host: user1[user1] @ [192.168.1.100]
# Query_time: 5.123456 Lock_time: 0.000789 Rows_sent: 10 Rows_examined: 1000
SET timestamp=1653760496;
SELECT * FROM large_table WHERE column1 = 'value' AND column2 LIKE '%pattern%';
Query_time:查询执行时间。
Lock_time:查询中涉及的锁定时间。
Rows_sent:查询返回的行数。
Rows_examined:实际扫描的行数。
SET timestamp:查询开始执行的时间戳。
SELECT * FROM large_table WHERE column1 = 'value' AND column2 LIKE '%pattern%':具体的查询语句。
一般查询日志例子
2024-07-08T12:34:57.987654Z 8 [Note] User: user2, Query: SELECT * FROM sensitive_table WHERE co
查看当前数据库活动情况,看有什么出网连接或者到跳板机
SHOW PROCESSLIST; -- 查看当前正在执行的MySQL进程
直接把MySQL进程干了
windows找到mysql进程结束就行
linux:
sudo service mysql stop # 停止MySQL服务,暂时断开网络连接
查看有没有开event_scheduler(事件调度器)
方法一
SELECT @@event_scheduler;
方法二
SHOW VARIABLES LIKE 'event%';
SHOW TRIGGERS; //查看所有计划任务(触发器)
DROP EVENT [IF EXISTS] event_name //删除计划任务(触发器)
还是老熟悉的四件套:日志,进程,用户,计划任务。不过二次注入最主要看的还是新建用户的日志,新建的用户有没有带闭合语句的特殊符号以及修改密码的语句
以上大部分命令可增删改查的东西都可以通过可视化工具实现,如:Navicat