Vulnhub打靶记录:raven_2

相关信息

kali:10.0.0.7/24

靶机:10.0.0.10/24

靶机介绍:Raven: 2 ~ VulnHub

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

目标:4个 flag + root权限

难度:中

未提及的相关知识点,命令和代码等等可以查看我其他三个blog:

文字思路

全流程思路:

  • 主机发现 端口扫描
  • 信息搜集:通过源码发现域名是非常关键的步骤 路径爆破 远程代码注入
  • exp代码修改非常重要
  • 反弹shell 内核漏洞枚举(也是可以提取的,只是在本次打靶中没有使用)
  • 本地信息收集:查看root启用的程序
  • MYSQL_UDF提权:流程还是非常简单的

下意识的操作

  1. 在使用 exp一定一定要先看看 exp,因为大量的 exp是需要一定的修改后才能使用的
  2. exp使用不成功也可能是 exp写入的后门代码被过滤掉了,有时候通过简单更改变量名,文件名可能就能上传成功
  3. 如果进入靶机能够查看网页数据库的配置获取数据库的密码,那么进行数据库提权就是非常必要的了
  4. 密码复用,密码复用,密码复用。

主要的知识点

  1. WordPress,phpmailer两个框架的重点理解和掌握
  2. 如何利用 root的mysql来进行文件的移动,接收,写入和执行。
  3. 虚拟机,burpsuite如何设置代理
  4. mysql命令的熟悉

具体流程

信息搜集

  1. 主机发现,端口扫描,服务探测。其中 rpcbind: 111开放的这个日常生活不常见的服务,通过 nmap脚本扫描也是没有什么漏洞发现的。所以开放的 80端口依然是渗透测试的重点。 什么是rpcbind

    image-20230610190907669
  2. 虽然在浏览 80端口网页能够快速访问,但是浏览器还在一直尝试加载资源,这个时候进行抓包分析就很有必要了。(浏览网站大致内容,发现是提供网络安全服务的一家公司。

    Snipaste_2023-06-10_19-25-06

    明显网页是请求了一些外网的资源导致访问速度非常缓慢。那么就可以对 虚拟机内部的burpsuite进行 socks代理设置,让其能够使用宿主机上的 clash for windows的代理。

    Snipaste_2023-06-10_19-13-08
  3. burpsuite代理的设置:

    • 在宿主机上的 clash for windows上将下列功能打开,同时记住宿主机的 ip和下面的 Port: 7891

      image-20230611082017084
    • 再在 burpsuite:setting中找到下面的选项,更具上述的端口和 ip填写到下面对于的输入框内。

    • 像虚拟机整个机器的vpn代理也是可以通过这种方式实现的

      Snipaste_2023-06-10_19-24-14
  4. burpsuite设置完成后,再次访问页面也是没有什么搜获的(只是加载速度快了)。但是当对 blog这个功能进行访问的时,发现网址不仅重定向到 /wordpress还出现了加载问题。

    Snipaste_2023-06-10_19-37-02

    当查看源码不难发现,是由于网页请求了一个 //raven.local地址。再结合打的靶机名字为 Raven不难推测这个域名很有可能就是靶机的域名。

    Snipaste_2023-06-10_19-39-14

    当修改 /etc/hosts将该域名和靶机 ip绑定后可以发现网页成功的渲染。

    Snipaste_2023-06-10_19-40-03 Snipaste_2023-06-10_19-40-03
  5. 对于网页的手动测试并没有太大搜后,由于靶机是 wordprss搭建下面进行路径爬取和使用 wpscan工具就很有必要了:

    • 键入 wpscan --url http://10.0.0.10 -e vt,vp对靶机进行框架漏洞的测试,没有发现什么漏洞。

      wpscan工具的介绍

      Snipaste_2023-06-10_20-01-11
    • dirb http://10.0.0.10进行路径爬取,发现几个重要的路径: /vendor,/wordpress/wp-admin,/wordpress/wp-includes。其中有个非常重要的路径:/wp-content/uploads,记得对 wp-admin这个后台网站进行密码爆破,即使没有成功😭

      Snipaste_2023-06-10_19-50-18

  6. 挨个浏览爬取到的路径和其中包含的其他网页,是会发现下面 flag1, flag3。其中 flag1尤为关键,包含了当前网站发布的绝对路径:/var/www/html/vendor。还有一下的重要文件和相关信息:

    /vendor:

    Snipaste_2023-06-10_20-00-31

    PATH:

    Snipaste_2023-06-10_19-52-24

    upload:

    Snipaste_2023-06-10_19-51-19

    PHPMailerAutoload.php/README.md:

    SECURITY.md/VERSION:

    • 当前 PHPMailer版本为:5.2.16

    • 提示在 5.2.18前是具有一个漏洞的 CVE-2016-10033,这是作者给的明显提示。

      Snipaste_2023-06-10_19-59-32

漏洞利用

漏洞脚本的使用非常非常建议先阅读源码,判断是否需要进行相应的修改来让exp成功运行

  1. 根据上面的推导,我们对相关的漏洞脚本进行搜索。searchsploit phpmailer,我们可以选择 sh,py结尾的远程执行的脚本尝试执行。

    Snipaste_2023-06-10_20-19-51
  2. 40968.sh是没有成功的即使进行一定的修改后,但是当使用 40974.py(修改后)是可以成功的。

    Snipaste_2023-06-10_21-02-06

    • target:用来指定攻击对象,注意通过在网上的检索我们可以发现这个漏洞的产生具体地点如下功能的页面,对应到靶机发布的网页上就是 /contact.php对应功能。所以 target不能简单的就使用目标靶机的 ip

      image-20230612102350960
    • /s.php:源代码为 /backdoor.php但是多次使用该脚本都无法成功,尝试将其更改为 s.php的命名后发现可以成功的使用该脚本

    • 10.0.0.7:确认反弹 shellip和端口

    • /var/www/html/s.php:在更改后门文件名字的同时还要修改后门的保存路径

  3. 通过 python3调用该脚本成功的执行,易知后门文件 s.php写入到靶机的网站更目录下。如果我们成功的访问到 s.php就会自动的反弹 shell,结果显而易见成功突破边界。

    Snipaste_2023-06-10_21-07-40 Snipaste_2023-06-10_21-09-19

信息搜集

  1. 先看靶机的内核版本是比较老的,对应的版本也是具有内核漏洞的(该靶机具有多个提权漏洞)。

Snipaste_2023-06-10_21-24-31

  1. 键入 ps -aux | grep root查看靶机上有哪些程序,其中 mysqld_safe应该引起高度重视。表明 mysql数据库的权限也是 root进而想到通过数据库进行提权是非常非常重要的一个思路。

    Snipaste_2023-06-10_21-23-25

    是MySQL数据库服务器的启动脚本程序。它是一个用于在Unix和类Unix系统上启动和管理MySQL服务器进程的脚本。

  2. 升级shellpython -c 'import pty;pty.spawn("/bin/bash")',然后直接访问 www/html下网站的相关配置: cat wp-config.php,获取的到数据库的登陆密码和用户为:root: R@v3nSecurity。(使用这个密码进行ssh爆破是非常重要的一个步骤,不过很可惜没有成功。密码复用非常重要,非常重要,非常重要

    Snipaste_2023-06-10_21-28-55

  3. 成功登陆数据库

    Snipaste_2023-06-10_21-31-25

数据库提权

  1. 第一种提权自接使用 \! /bin/bash这个最简单的提权尝试,结果失败还是为www用户。

    Snipaste_2023-06-10_21-33-05

  2. 通过 udf提权,在kali上搜索相关mysql_udf提权的文件,键入下列命令查找我们需要的脚本。

    find / -iname "*mysqludf*" -type f 2>/dev/null

    udf数据库提权介绍 || .so和.dll的介绍

    Snipaste_2023-06-10_21-36-16

    通过刚刚的uname命令知靶机为x86 64为靶机,将对应链接库更改为udf.so然后通过python传到靶机的/tmp目录下。同时键入 mysql命令来得到靶机插件的位置:show variables like '%plugin%'

    Snipaste_2023-06-10_21-42-42

  3. 但是当我们使用 cp命令将 udf.os复制到 /usr/lib/mysql/plugin/发现 www用户是没有权限的,那么我们就需要使用 mysql命令来帮助我们实现文件的拷贝。

    Snipaste_2023-06-10_21-47-29
    • use mysql;:到数据库自带的数据库中

    • create table exp(line blob);:创建一个 exp表,其中有个为 line的列类型为 blob(是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。)

      MySQL的四种Blob类型(除了在存储的最大信息量上不同外,他们是等同的)。

      类型 大小(单位:字节)
      TinyBlod 最大255
      Blod 最大65K
      MediumBlob 最大16M
      LongBlob 最大4G
    • insert into exp values(load_file('/tmp/udf.so'));:将 udf.so。在MySQL中,LOAD_FILE()函数读取一个文件并将其内容作为字符串返回。 Mysql注入中的outfile、dumpfile函数详解 - gxy* - 博客园 (cnblogs.com)

  4. os文件成功的导入成功,接下来就是进行udf的构造,

    Snipaste_2023-06-10_21-51-09
    • create function sys_exc returns interger soname 'udf.so'
      • returns interger:表示sys_exc函数返回的是整形
      • soname 'udf.so':表示共享文件为 udf.so
    • select sys_exec('id > /tmp/out.txt'):之所以这样构造函数,调用函数都是比较固定的渗透流程。也时间建立在 udf.so这个分享文件基础上的。表示会在 shell中执行 id > /tmp/out.txt该命令。
  5. 翻阅 /tmp目录, 虽然 www用户无法查看生成的 out.txt文件,但是可以明确我们的 udf漏洞是可以利用的

    Snipaste_2023-06-10_21-52-04

  6. 反弹 shell就是非常容易,然后再通过 find命令查找剩下的两个 flag,到处打靶结束。

    Snipaste_2023-06-10_21-55-39 Snipaste_2023-06-10_21-57-07 Snipaste_2023-06-10_21-58-03

相关工具/命令

命令

less

  1. what?

    它提供了一种方便的方式来查看大型文本文件,而无需将整个文件加载到内存中。

  2. 相关使用

    1. 浏览文件:一旦文件打开,你可以使用 less 的各种导航键来浏览文件内容。例如,使用向下箭头键向下滚动一行,使用向上箭头键向上滚动一行。
    2. 搜索文本:按 / 键后输入要搜索的文本,然后按回车键,less 将会高亮显示匹配的文本,并定位到第一个匹配的位置。按 n 键可以跳到下一个匹配项。
    3. 跳转页面:使用 Ctrl + F 快捷键向前翻页,使用 Ctrl + B 快捷键向后翻页。
    4. 退出 less:按 q 键即可退出 less

工具

wpscan

  1. what? 返回

    ​ 用于探测 wordpress框架网站漏洞的工具,主要是对网站插件的扫描。就是 wordpress使用的实在太广泛了,专门对其产生了一种扫描工具。

  2. 具体实例

    1. wpscan --url http://10.0.0.10 -e vt,vp
      • -e:表示枚举各个漏洞是否有漏洞
      • vp:只枚举漏洞的插件
      • vt:只枚举漏洞的主题

反弹shell生成器

一个格式反弹shell命令的生成器网址:https://shell.nctry.com/

相关payload

mysqludf

  1. what?

    kali自带的用于 mysql——udf提权用的文件,可以通过下面的命令确定准确的位置:

    find / -iname "*mysqludf*" -type f 2>/dev/null

复盘/相关知识

重要

udf提权

  1. what? 返回

    User-Defined Function(用户自定义函数)

  2. 如何防范

    1. 限制UDF的使用权限:确保只有受信任的用户或角色可以创建和执行UDF。限制UDF的使用范围可以降低潜在攻击者利用UDF进行提权的风险。
    2. 审查UDF代码:对于由用户创建的UDF,管理员应该审查其代码以确保其安全性。检查UDF中是否存在任意代码执行、系统命令执行或其他危险操作的漏洞。
    3. 保持数据库软件更新:及时安装数据库供应商提供的补丁和安全更新,以修复已知的漏洞和提升数据库的安全性。
    4. 实施访问控制策略:使用数据库的访问控制机制,如角色、权限和访问控制列表(ACL),以确保只有授权用户能够执行敏感操作和访问关键数据。
    5. 监控和日志记录:定期监控数据库的活动,并记录和分析日志以检测潜在的异常行为和安全事件。

了解

rpcbind

  1. what? 返回

    在计算机上提供远程过程调用(RPC)的绑定和映射功能。RPC是一种通信机制,允许不同的进程在网络上相互通信和交换数据。rpcbind服务使用标准的RPC绑定协议,并且是与操作系统紧密关联的。它通常在启动过程中自动启动,并在计算机上运行作为后台进程。rpcbind服务的端口号通常是 111多用于企业级网络

.so和.dll的区别

  1. what? 返回

    .so文件是Linux下的动态链接库,类似于Windows下的.dll文件。动态链接库是一种可执行文件,它在运行时才被载入内存,并被映射到进程的地址空间中。动态链接库可以被多个进程共享,从而节省内存空间。其中,.so.y表示版本号。Linux下的库必须以lib开头,用于系统识别(如:libjpeg.a libsdl.so

posted @ 2023-06-29 19:33  C_CHL  阅读(37)  评论(0编辑  收藏  举报