php 禁止访问根目录某个文件_墨云 I 漏洞分析第七期—ProFTPD服务器任意文件拷贝漏洞分析(CVE201912815)...

本文详细分析了ProFTPD服务器的越权访问漏洞(CVE-2019-12815),该漏洞允许匿名用户通过site cpfr和site cpto命令绕过权限限制,可能导致敏感信息泄露或磁盘空间被恶意填充。补丁已发布,建议及时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背   景

cb2fd816cf2dd558bf38dedcc4815fcb.gif

ProFTPD是一个开源的,跨平台的FTP服务软件,支持大多数类Unix系统和Windows,是Unix平台下最流行的FTP服务软件之一。很多Unix和Linux发行版本系统都预装了这个软件,除此之外,很多流行的商业软件和网站也都使用了ProFTP服务器。

ProFTPD近日爆出了一个越权访问漏洞,这个漏洞在某些条件下可以导致敏感信息泄露或者代码执行。这个漏洞的CVE编号是CVE-2019-12815。这个漏洞存在于proFTPD的mod_copy.c文件中。Mod_copy.c文件是个第三方模块,但是大部分的ProFTPD发行版本都默认启用了这个模块。这个模块提供了2个命令——site cpfr和site cpto ,用户使用这2个命令可以把ftp服务器上的文件从一个目录拷贝到另外一个目录。

漏洞重现cb2fd816cf2dd558bf38dedcc4815fcb.gif

根据http://bugs.proftpd.org/show_bug.cgi?id=4372 漏洞报告,我们需要配置proftpd.conf文件内容,让proftp服务器开启anonymous访问。

如下图所示,我给anonymous用户开启了读权限,禁用了写权限。并且对/test/目录禁用了读写权限。

c4968084de43dbca277981443ab5648a.png

如下图所示,是对proftp服务器进行上传和下载文件的截图。

19db8bff57fbf971c76e072d477d3c1a.png

我们是以anonymous用户登录的,从截图可以看到,从ftp服务器下载文件是允许的,但是向ftp服务器上传文件是禁止的。这和proftpd.conf配置文件设置的权限控制策略是吻合的。

但是,site cpfr和site cpto命令在拷贝文件时却没有遵守 proftpd.conf配置文件的权限控制策略,虽然我们只是anonymous用户,并没有写入文件的权限,但是依然可以利用site cpto命令向ftp服务器写入文件。

0ce8f08c037c23fc2bfe6ac30e8cd661.png

d28e0859a188134cd766bc1443740906.png

从上图可以看到,我们成功复制了一个crash2文件。如果一个anonymous用户恶意的写入很多crash文件,那么可以造成ftp服务器磁盘空间被占满,正常有写权限的用户就不能向ftp服务器写入文件。

除了恶意塞满磁盘文件之外,我们还可以利用site cpfr命令越权访问一些目录文件。如下图所示,anonymous用户是没有权限下载/test/目录下的文件的,但是通过site cpfr和site cpto把/test/test.php文件拷贝到ftp的根目录(我们有根目录的下载权限),那么我们就能成功获取test.php文件内容了。利用这,我们可以访问很多敏感文件。

103f620f397a5330b3ed364e640ea04e.png

cb92dc0b6b645166cafcdc9f2b9107c5.png

这个漏洞在某些条件下也可能造成远程代码执行,如果proftp服务器的某个目录可以被web服务器访问 ,我们通过漏洞向该目录写个php文件,那么通过web服务器访问时就可以执行php代码了。

补丁分析cb2fd816cf2dd558bf38dedcc4815fcb.gif

补丁链接如下:

https://github.com/proftpd/proftpd/pull/816/commits/71cd49ea82313f78d52a52d0c628a3770dc96608

从补丁代码可以看到,对copy_cpfr和cpy_cpto函数进行了修补,当执行copy_cpfr函数时,要确保用户有目录的读权限,当执行copy_cpto 函数时,要确保用户有对应目录的写权限。

 MODRET copy_cpfr(cmd_rec *cmd) {…cmd_name = cmd->argv[0];  pr_cmd_set_name(cmd, "SITE_CPFR");  if (!dir_check(cmd->tmp_pool, cmd, G_READ, path, NULL)) {int xerrno = EPERM;…}…}MODRET copy_cpto(cmd_rec *cmd) {…  cmd_name = cmd->argv[0];  pr_cmd_set_name(cmd, "SITE_CPTO");  if (!dir_check(cmd->tmp_pool, cmd, G_WRITE, to, NULL)) {    int xerrno = EPERM;…}…}

参考链接

cb2fd816cf2dd558bf38dedcc4815fcb.gif

https://github.com/proftpd/proftpd/pull/816/commits/71cd49ea82313f78d52a52d0c628a3770dc96608

https://www.secpod.com/blog/alert-proftpd-server-improper-access-control-vulnerability-cve-2019-12815/

https://www.bleepingcomputer.com/news/security/proftpd-vulnerability-lets-users-copy-files-without-permission/

http://bugs.proftpd.org/show_bug.cgi?id=4372

868854434a2e01d0a4695dd559227150.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值