前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >应急响应篇——数据库排查

应急响应篇——数据库排查

作者头像
用户11055813
发布2024-07-12 17:04:52
1000
发布2024-07-12 17:04:52
举报
文章被收录于专栏:一己之见安全团队

可疑用户创建

通过命令或者工具查看当前数据库是否创建了可疑用户。

代码语言:javascript
复制
SELECT user, host FROM mysql.user;
类似以下结果
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | localhost |
| user1            | %         |
| admin            | 192.168.1.100 |
| test             | localhost |
| readonly_user    | 10.0.0.50 |
+------------------+-----------+

错误日志排查

  • MySQL日志文件存储路径实在MySQL配置文件中指定的(my.cnf或者my.ini)
  • 命令行中登录数据库使用以下命令查找关于日志路径的配置信息。
代码语言:javascript
复制
SHOW VARIABLES LIKE 'log_error';
SHOW VARIABLES LIKE 'general_log_file';
SHOW VARIABLES LIKE 'slow_query_log_file';

找到错误日志位置,定位日志(大量登录失败、异常查询)(并且不在正常运维期间所触发)

代码语言:javascript
复制
错误登录日志例子
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)
代码语言:javascript
复制
异常慢查询日志例子
# 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

违规外联排查

查看当前数据库活动情况,看有什么出网连接或者到跳板机

代码语言:javascript
复制
SHOW PROCESSLIST;  -- 查看当前正在执行的MySQL进程

隔离断网(如有需要)

代码语言:javascript
复制
直接把MySQL进程干了
windows找到mysql进程结束就行
linux:   
sudo service mysql stop  # 停止MySQL服务,暂时断开网络连接

计划任务

代码语言:javascript
复制
查看有没有开event_scheduler(事件调度器)
方法一
SELECT @@event_scheduler;
方法二
SHOW VARIABLES LIKE 'event%';
代码语言:javascript
复制
SHOW TRIGGERS; //查看所有计划任务(触发器)
代码语言:javascript
复制
DROP EVENT [IF EXISTS] event_name //删除计划任务(触发器)

二次注入排查思路

  • 我们先要知道二次注入是什么(简洁版)
    1. 输入会被函数过滤不能执行(新建一个admin'#用户 ‘#会被过滤掉)
    2. 但是输入的东西还是能直接存到数据库里(admin’#用户到数据库里会正常创建)
    3. 然后利用插入的语句取出来使用时进行注入(要求取出数据时不能转义)
    4. 过程就是新建一个admin‘#用户>输入时被过滤,存到数据库里还是admin'#>修改密码时取出的还是admin'#,以下例子修改密码时的语句:UPDATE users SET PASSWORD='

还是老熟悉的四件套:日志,进程,用户,计划任务。不过二次注入最主要看的还是新建用户的日志,新建的用户有没有带闭合语句的特殊符号以及修改密码的语句

一键注马工具入侵排查思路

  • 这种类型的工具永远离不开高并发,多线程去遍历目录。
  • 刚开始所触发的日志都会带有语句闭合的字符(例如:id=1')
  • 开始跑之后会根据内置方法字典去一系列增删改查操作(包括不限于联查、盲注、用户名猜解)
  • 综合上面来说,排查思路就已经有了
    1. 大量的同时间的404访问状态码(以及200)
    2. 同IP高并发请求
    3. 注入成功之后的大批量后渗透语句(一系列增删改查操作)
  • 以上都可以在前面所说的日志排查里能找到。
  • 另外,这里也能通过中间件控制日志看到请求的操作以及URL

以上大部分命令可增删改查的东西都可以通过可视化工具实现,如:Navicat

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一己之见安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 可疑用户创建
  • 错误日志排查
  • 违规外联排查
  • 隔离断网(如有需要)
  • 计划任务
  • 二次注入排查思路
  • 一键注马工具入侵排查思路
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档