欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql提权前奏

程序员文章站 2022-06-01 08:43:43
...

Mysql的提权原理就是让Mysql能够执行系统的命令

一、Mysql提权的必备条件

  1. 服务器安装Mysql数据库

利用Mysql提权的前提就是服务器安装了Mysql服务器,且Mysql的服务没有降权,Mysql安装默认是以系统的权限继承来的,并且需要获取Mysql root帐号 密码

  1. 判断Mysql服务运行权限

Mysql服务的权限决定着是否能够顺利的进行提权操作,所以这步也是至关重要的,对于Mysql数据库服务运行权限的查看有很多方法,这里主要说两种:

  • 通过查看当前系统帐号,即使用‘net user’命令查看系统当前帐号,如果出现了mysql这类用户,那么可能系统对Mysql数据库进行了降权
    Mysql提权前奏
  • 查看端口可否外联,一般情况下是不允许root等账号外联,外部直接连接意味着账号可能被截取和嗅探,通过本地客户端直接连接对方服务器,直接查看和操作Mysql数据库,可以通过扫描3306端口来判断是否提供对外连接。

二、Mysql密码获取
1.获取网站数据库帐号和密码

对于CMS系统,一定会有一个文件定义了数据库连接的用户和密码。例如以下代码:

Mysql提权前奏

  • dedecms数据库安装的信息就是写在data/common.inc.php,Discuz的数据库信息就在config/config_global_default.phpconfig /config_ucenter.phpconfig.inc.php。一般数据库配置文件都会位于configapplicationconndb等目录,配置文件名称一般会是conn.asp/php/aspx/jsp等。总之通过查看源代码,进行层层分析,终究会发现数据库配置文件。

对于Linux操作系统,除了上述方法获取root账号密码外,还可以通过查看./root/.mysql_history、./root/.bash_history文件查看mysql操作涉及的密码。当然对于Mysql5.6以下版本,由于设计Mysql程序时对于安全性的重视度非常低,用户密码是明文传输。MySQL对于binary log中和用户密码相关的操作是不加密的。如果你向MySQL发送了例如create user,grant user … identified by这样的携带初始明文密码的指令,那么会在binary log中原原本本的被还原出来,执行“mysqlbinlog binlog.000001”命令即可获取。

三、Mysql获取webshell
Mysql root帐号网站获取webshell具备的条件:

  1. 知道站点物理路径,网站物理途径可以通过phpinfo函数、登录后台查看系统属性、文件出错信息、查看网站源代码以及路径猜测等方法获取。
  2. 有足够大的权限,最好是root帐号权限或者具备root权限的其他帐号,可以用select user,password from mysql.user进行测试。
  3. 直接导出webshell,执行下面的语句

Mysql提权前奏
也可以通过创建表来直接完成,其中d:/www/exehack.php为webshell的名称和路径:
Mysql提权前奏

四、Mysql渗透有用的技巧总结

  1. 常见的有助于渗透到mysql函数

在对MySQL数据库架构的渗透中,MySQL内置的函数DATABASE()USER()SYSTEM_USER()SESSION_USER()CURRENT_USER() 可以用来获取一些系统的信息,而==load_file()==作用是读入文件,并将文件内容作为一个字符串返回,这在渗透中尤其有用,例如发现一个php的SQL注入点,则可以通过构造 “ -1 union select 1,1,1,1,load_file(‘c:/boot.ini’)” 来获取boot.ini文件的内容。

一些常见的系统配置文件

Mysql提权前奏
linux/unix下

Mysql提权前奏
2. 直接读取配置文件

Mysql提权前奏
3. Linux下通过load_file函数读出来的数据库有可能是hex编码,要正常查看需要使用NotePad将将以上代码全部选中,然后选择插件“Converter”-“HEX-ASCII”进行转换。

4.有用的一些小技巧

  • 3389端口命令行下获取总结
    Mysql提权前奏

  • Windows 2008Server命令行开启3389
    Mysql提权前奏

  • 在phpinfo中查找SCRIPT_FILENAME关键字获取真实路径

  • Linux终端提示符下查看mysql有关信息,ps -ef|grep mysql

  • Linux下启动mysql服务: service mysqld start

  • Linux下查看mysqld是否启动:ps -el | grep mysqld

  • 查看mysql在哪里:whereis mysql

  • 查询运行文件所在路径 which mysql

5.一些常见的Mysql命令

  • 连接到mysql 服务器
mysql -h 192.168.0.1 -u root -proot
  • 查看所有数据库
show databases; 
  • 使用某个数据库
use testdatabase; 
  • 查看数据库中的所有表
show tables; 
  • 在test数据库下创建一个新的表
create table a (cmd text); 
  • 导出数据到系统某个目录下
select * from a into outfile "c:\\docume~1\\alluse~1\\「开始」菜单\\程序\\启动\\a.vbs"; 
  • 查询数据库数据路径
select @@datadir; 
  • 查看所有dir路径
show variables where variable_name like "%dir" 
  • 查看插件路径
show variables like '%plugins%' ; 
  • 查询MYSQL安装路径
select @@basedir 
  • 常用内置函数
select system_user() 查看系统用户 
select current_user() 查询当前用户 
select user(); 查询用户 
SELECT version() 查询数据库版本 
SELECT database() 查询当前连接的数据库 
select @@version_compile_os 查询当前操作系统 
select now(); 显示当前时间 
  • 获取表结构
desc 表名 或者show columns from 表名 
  • 删除表
drop table <表名>
相关标签: IE安全