总体思路
CVE-2023-4220->敏感信息收集->符号链接攻击
信息收集&端口利用
nmap -sSVC permx.htb
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-07 21:16 EDT
Nmap scan report for permx.htb
Host is up (0.24s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 e2:5c:5d:8c:47:3e:d8:72:f7:b4:80:03:49:86:6d:ef (ECDSA)
|_ 256 1f:41:02:8e:6b:17:18:9c:a0:ac:54:23:e9:71:30:17 (ED25519)
80/tcp open http Apache httpd 2.4.52
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: eLEARNING
Service Info: Host: 127.0.1.1; 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 19.17 seconds
目标只开放了80端口,那么在访问的同时先上一波目录扫描和子域名扫描
ffuf -c -u 'http://permx.htb' -H 'host: FUZZ.permx.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -fc 301,302 -mc all
dirsearch -u http://permx.htb
经过大致查看后,该网站是一个学习网站,用于报名一些网上课程等等,这里先查看刚刚扫描的结果
有一个lms子域名,加入进hosts文件后访问之
很明显是一个Chamilo框架的界面
Chamilo是一款免费的开源LMS,支持设计和进行远程课程在线培训项目。此外,许多教育工作者选择Chamilo来进行现场培训课程。Chamilo安全可靠,可提供50多种语言版本
在exploit-db中搜索相关漏洞情况
CVE-2023-4220
发现最新的漏洞需要通过验证才行,在浏览器中搜索漏洞后,发现存在CVE-2023-4220
阅读文章后,发现其存在的是未经身份认证的文件上传漏洞,存在于/main/inc/lib/javascript/bigupload/inc/bigUpload.php文件
访问界面后,确实存在一个bigUpload.php文件,但是浏览器上不能查看代码内容
利用文章里边的poc上传PHP shell
在files路径下访问该文件
将shell反弹到本地进行下一步
经过测试后发现www-data用户不存在能够执行其他提权命令的权限,考虑是否存在信息泄露方面的点
在lms子域的源码中,能够看到有其他几个界面可以访问
发现下方有一个app/upload
但是查看后里面并没有内容
返回上一级后,发现有一个config文件夹,进入查看
敏感信息收集
发现其中有一个configuration.php,虽然在浏览器不能访问,但是可以在shell中查看
有一段数据库的用户名和密码:chamilo/03F6lY3*******
查看本地端口开放情况
数据库的端口确实开着,尝试连接
查看user表中的内容
发现就两个用户admin和anon,但是查看passwd文件后,发现anon用户并不在可以登录的列表中,只有一个mtz用户可以登录
那么尝试使用之前拿到的密码登录mtz用户
啊哈,果然是这样
查看当前用户的权限
可以以任意身份执行/opt/acl.sh文件,那么先查看文件作用
分析代码,发现其主要功能是更改文件所有权限,但是要求必须在/home/mtz目录下,并且目标路径中不能带有…(防止逃逸)
查看mtz目录下有什么文件
符号链接攻击
这里想到可以使用符号链接攻击
根据该脚本,其可以修改位于/home/mtz文件夹下的所有文件权限,那么可以符号链接将根目录映射到mtz下来执行攻击
这里将根目录的所有文件通过符号链接(类似于快捷方式?)映射到mtz文件夹内
因此我们可以修改任意一个文件的权限,那么想到修改shadow文件,通过重写密码的方式获得root权限
不过每隔一段时间符号链接脚本以及文件权限会被重置,需要重新运行命令
现在具有对shadow文件的更改权限,那么重新生成一段密码为B3rry的密码,然后将其覆盖
openssl passwd -6 B3rry
在openssl命令中,-6选项与passwd子命令一起使用时,用于生成使用SHA-512算法的密码散列。这个命令通常用于生成或验证与Linux系统上的/etc/shadow文件或其他密码存储系统兼容的密码散列
echo 'root:$6$4mXMUzMb9F48k1B6$XxnsvpWE3Q46pPYzesxlJ92LuxDzcfbv0terDnwzaZogCPBLbnwBRYgNVjXIuK4OccfPqi9Wv1vfsQbVfgF9w1:19742:0:99999:7:::' > /etc/shadow
此时root密码已经被更改为B3rry,直接登录即可
发现其目录下有重置权限的脚本