靶机地址:Money Heist: 1.0.1 ~ VulnHub
渗透过程:
确定靶机ip,攻击机kali的ip
对靶机进行端口检测
存在22、53、80、3000、3001端口,访问80端口
发现了登录注册按钮,尝试进行注册
注册成功后进行登录,发现了提示,这里写着只有admin才能获取flag
抓个包看看,发现了cookie和jwt,结合之前它说只有admin,不由得想到了jwt欺骗
尝试着解码一下
注:
JWT 主要用于用户登录鉴权,用于作为 JSON 对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。JWT 一般是这样一个字符串,分为三个部分,以 “.” 隔开:xxxxx.yyyyy.zzzzz 头.有效载荷。签名
简单的流程是这样的:
- 用户使用账号、密码登录应用,登录的请求发送到 Authentication Server。
- Authentication Server 进行用户验证,然后创建 JWT 字符串返回给客户端。
- 客户端请求接口时,在请求头带上 JWT。
- Application Server 验证 JWT 合法性,如果合法则继续调用应用接口返回结果。
利用john去爆破一下,爆破出它的签名值是professor
JSON Web Tokens - jwt.io
可以利用插件,对网站进行查看,发现了被解析出来的name,将其改为admins,下面输入签名值,这样签名验证成功。
点击Save back to cookies后
刷新
成功骗过服务器,获取了相关的证书,这里是berlin的证书,尝试用这个用户ssh远程连接,密码是冒号后的全部,发现登录成功
同时也获取到了第一个flag
flag1{Technology_is_fought_with_technology}
进入/home目录发现了4个用户,经过我的尝试,和别的博主的对比,可能是靶机出了些问题,该靶机没有将professor目录的权限给出,这边我就借助别的博主给出的密码,先切换用户,然后将该目录赋权755,运行访问,然后重新再进行进一步的操作
该密码是professor中的professor用户的密码:st@y_tuned_for_@nother_one
假设刚才这个目录权限是对berlin开放的,我们进来后发现了密码文件,切换为professor用户,对其进行提权,提权的方法很多,随便选一种即可,不会的,去看之前的文章。
提权后依次进入每个用户,发现了flag2
flag2{L0v3_can’t_be_tim3d_it_ha5_t0_b3_liv3d}
flag3在tokyo处
flag3{L3t_th3_matri@rchy_b3g!n}
最后才是professor的finalflag.txt
flag4{W3@kn3ss_!s_not_!n_us_!t_!s_!n_wh@t_w3_h@ve_outs!de}
这个靶机主要考察的点还是在于jwt的欺骗,其他的到没什么,该靶机可能存在着些许问题,其实在之前,我有尝试看是否存在内核提权等,发现并不行。所以,想要尝试的同学可以当作练手了。
也许是我自己太菜了,没办法通过别的方式去提权,还请各位路过的大佬指教!
总结:
总结一下该靶机的思路,其实很简单,对于jwt欺骗,可以去了解jwt的原理,还有它的运行流程是怎样的,懂得原理才能更好的理解和操作!
请继续关注!还有很多其他有趣的靶机在等着大家