靶场 · 2023年11月2日 1

HTB-CozyHosting[easy]靶机

一、打点

nmap扫描开放端口,目标靶机开放80,22端口。

老规矩,访问80端口,跳转地址写到hosts文件中

访问靶机网址,浏览系统功能点,存在一些展示页和登录功能。

看了看login功能,是一个前端框架搭建的登录界面,那就不找框架漏洞了,上dirsearch扫描目录。

从搜索结果看,很明显是springboot框架。访问/actuator接口,看到开放了env接口,但是env接口中敏感信息均显示******,而且没有开放能够配合解密的接口。那就关注一下sessions和mappings接口,mappings接口泄露一些路径信息,如/admin、/addhosts、/webjars等。sessions接口中泄露的kanserson用户的session信息,替换原有session后访问/admin,成功进入后台。

寻找后台功能点,存在一个ssh远程连接功能

测试一下,尝试连接127.0.0.1提示key无效,尝试连接kali提示host未添加。因为在mappings接口中看到了addhost接口,这里把大部分时间拿去寻找这个接口,测来测去总是提示500错误,随机另找出路。后续注意到ssh远程连接功能是向executessh接口发送post请求,既然是执行ssh,是否可以进行rce,随即展开测试。在username参数进行命令拼接,通过${IFS}绕过空格限制,成功执行命令。(要注意cookie时效性,过期后重新替换cookie)

尝试反弹shell,直接只用命令没法成功反弹,多次尝试最终通过base64编码执行反弹。

切换交互式shell

python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
ctrl + z
stty raw -echo; fg

信息收集,发现/app目录下有一个jar包,通常jar包中会有很多敏感信息,python起一个http服务,下载到kali。

下载速度太慢,直接在靶机中分析。

获取到数据库用户+口令,尝试连接。

\d命令查看有那些表,select * from users; 拿到用户名和哈希。

先关注admin用户,尝试破解hash,cmd5查询无果,然后用字典慢慢跑。

john识别一下hash类型,之后用hashcat跑。

看到hash类型Blowfish,搜索hashcat中对应的编号,为3200

拿kali中rockyou字典跑

马上有了结果。

拿到密码后尝试ssh登录。看一下passwd文件,发现存在root、app、postgres、josh能用shell,成功ssh登录josh账户。

拿到第一个flag

二、提权

未拿到ssh用户之前想过提升权限,尝试内核提权发现没有make命令,大多数exp没法编译。

到这拿到ssh用户后尝试suid提权,find / -perm -u=s -type f 2>/dev/null

能以root执行sudo,sudo又能执行ssh,GTFOBins中查一下ssh怎么提权

命令一把索,拿到root用户flag。