Redian新闻
>
任意文件下载

任意文件下载

科技



0x01 等保测评项

GBT 22239-2019《信息安全技术 网络安全等级保护基本要求》中,8.1.4.4安全计算环境—入侵防范项中要求包括:a)应遵循最小安装的原则,仅安装需要的组件和应用程序;b)应关闭不需要的系统服务、默认共享和高危端口;c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制;d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求;e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞;f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警。任意文件下载对应访问控制项中要求d),所以安全控制点为入侵防范d

GBT 28448-2019《信息安全技术 网络安全等级保护测评要求》中,测评单元(L3-CES1-20),该项测评单元包括以下要求:a)测评指标:应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求。b)测评对象:业务应用系统、中间件和系统管理软件及系统设计文档等。c)测评实施包括以下内容:1)应核查系统设计文档的内容是否包括数据有效性检验功能的内容或者模块;2)应测试验证是否对人机接口或通信接口输入的内容进行有效性检验。d)单元判定:如果1)和2)均为肯定,则符合本测评单元指标要求,否则不符合或部分符合本测评单元指标要求。任意文件下载属于测评单元(L3-CES1-20)中测评实施第2项,故测评单元为L3-CES1-20.2

0x02 测试内容

测试用户能否查看或下载任意的文件,可以对源代码文件、敏感文件、备份文件等进行下载。

0x03 漏洞原理

一些网站由于业务需求,往往需要提供文件查看或文件下载功能。一般来说在文件下载或查看功能处,当文件名参数可控,且系统未对参数进行过滤或者过滤不严格时,就能够实现下载服务器上的任何文件,产生任意文件下载漏洞,恶意用户就可利用路径回溯符号(**../**)跳出程序本身的限制目录实现下载任意文件。此漏洞的最终目的还是为了进一步获取更多系统信息。

产生原因

● 提供下载、查看的功能,并接收相关参数变量;● 使用读取文件的函数;● 未对相关参数做校验或者控制不严格;● 能输出请求文件的内容,提供给客户端;

利用条件

● 存在读文件的函数;● 读取文件的路径是用户可控的且未经校验或校验不严格;● 输出或下载了文件内容;

漏洞发现

  1. 1. 存在下载功能的功能点;

  2. 2. 可以使用Google hacking语法或者Web漏洞扫描器。Google search
    inurl:readfile.php?file=
    inurl:download.php?file=

  3. 3. 链接存在以下关键字:download.php?path=
    download.php?file=
    download.php?filename=
    down.php?file=
    data.php?file=
    readfile.php?file=
    read.php?filename=

  4. 4. 包含以下参数&RealPath= 
    &FilePath= 
    &filepath= 
    &Filepath= 
    &Path= 
    &path= 
    &inputFile= 
    &InputFile= 
    &url= 
    &urls=
    &Lang= 
    &dis= 
    &data=
    &Date=
    &readfile= 
    &filep= 
    &src= 
    &menu= 
    META-INF 
    WEB-INF

常用敏感文件路径

Windows系统

C:\boot.ini                                   //查看系统版本 
C:\Windows\System32\inetsrv\MetaBase.xml      //IIS配置⽂件
C:\Windows\repair\sam                         //存储系统初次安装的密码
C:\Program Files\mysql\my.ini                 //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD    //Mysql root
C:\Windows\php.ini                            //php配置信息
C:\Windows\my.ini                             //Mysql配置信息
C:\Windows\win.ini                            //Windows系统配置文件

Linux系统

/root/.ssh/authorized_keys    //公钥文件
/root/.ssh/id_rsa                 //私钥文件
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts            //记录每个访问计算机用户的公钥
/etc/passwd            //保存了系统中所有的用户信息
/etc/shadow            //保存了系统中所有用户的密码信息
/etc/my.cnf                       //mysql配置文件
/etc/httpd/conf/httpd.conf        //Apache配置文件
/root/.bash_history               //用户终端历史命令记录文件
/root/.mysql_history              //mysql历史命令记录文件
/proc/mounts                      //记录系统挂载设备
/porc/config.gz                   //内核配置文件
/var/lib/mlocate/mlocate.db       //全文件路径
/porc/self/cmdline                //当前进程的cmdline参数
/usr/local/app/apache2/conf/httpd.conf    //apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf   //虚拟网站设置
/usr/local/app/php5/lib/php.ini   //php相关设置
/etc/httpd/conf/httpd.conf        //apache配置文件
/etc/php5/apache2/php.ini         //ubuntu系统的默认路径

Tomcat

apache-tomcat-8.5.51/conf/tomcat-users.xml    //tomcat的角色(授权用户)配置文件

apache-tomcat-8.5.51/conf/server.xml          //tomcat的主配置文件

apache-tomcat-8.5.51/conf/web.xml       //tomcat应用程序的部署描述符文件

apache-tomcat-8.5.51/logs/catalina.out        //即tomcat的标准输出和标准出错,所有输出到这两个位置的都会进入catalina.out,这里包含tomcat运行自己输出的日志以及应用里向console输出的日志。

Web应用

PHP
获取inc/config.php文件,获得数据库连接字符串中的口令信息;

ASP
获取inc/conn.asp文件,获得数据库连接字符串口令,得到数据库口令。若是ACCESS数据库,可以得到数据库路径,再下载数据库内容;

ASPX
获取网站根目录web.config文件,获得数据库连接字符串中的口令信息;
获取bin/*.dll文件,获取网站源码(不完整代码),使用.NET reflector工具打开编译后的dll文件;

JSP
获取conf/tomcat-user.xml文件,获得tongcat管理界面的口令信息,上传war包GetShell;
获取WEB-INF/Web.xml文件,获得数据库连接字符串中的口令信息。

漏洞利用方法

任意文件下载漏洞,正常的利用手段是下载服务器文件,比如脚本代码、服务器配置文件或者是系统配置文件等。但有时并不知道网站所处环境以及网站路径,就可以使用../../../进行逐层猜测路径,案例如下:

index.php?f=../../../../../../../../../etc/passwd 
index.php?f=../../../index.php 
index.php?f=file:///etc/passwd
readfile.php?file=/etc/passwd
readfile.php?file=../../../../../etc/passwd
readfile.php?file=../../../../../../../etc/passwd%00     // 00截断


注:
当参数f的参数值为php⽂件时,若是⽂件被解析则是⽂件包含漏洞,
若显⽰源码或提⽰下载则是⽂件查看与下载漏洞。

0x04 代码示例

如下图所示,一个有文件下载功能的正常网站,同时还会从浏览器接收文件名,file_get_contents函数把整个文件读入一个字符串中并输出,代码未对接收的文件名进行过滤,用户可控制变量,将存在任意文件下载漏洞。

0x05 限制绕过

● 注意.../的数量,它代表查询目录父目录的数量;● 遇见任意文件下载漏洞时,需要先注意下载权限的问题,这个权限能决定下载文件的范围;● 某些网站并不会在浏览器URL中显示路径,这时需要抓包,从数据包中修改路径达到任意文件下载/读取;

1. 过滤字符或字母尝试编码绕过

2. 对../过滤或者置空.../使用...//代替.../、利用.../代替/

0x06 测试过程

测试方法

  1. 1. 通过web漏洞扫描工具对网站实施扫描,可能会发现目录遍历或者任意文件下载漏洞,发送一系列”../”字符来遍历高层目录,并且尝试找到系统的配置文件或者系统中存在的敏感文件,比如,ssh、weblogic、ftp、mysql等相关配置文件。

  2. 2. 也可通过判断网站语言,并根据其url中部分提供的参数,进行构造相关的路径信息,如收集到网站中间件版本为apache,则想办法构造../../../ WEB-INF/web.xml等,然后查看其是否可被下载出来。随后可构造下载系统文件,或者下载各种**.log文件,从中寻找一些后台地址、文件上传点等地方,运气好的话可能会获得之前攻击者留下的后门。

  3. 3. 下载web业务文件,进行白盒审计,利用漏洞进一步攻击服务器。

测试案例1

随便点击一个人名下载图片,提示下载成功。观察下载链接,链接中存在download.php?filename=,猜测文件名可控,测试是否可以通过../下载系统敏感文件。


复制下载链接,在浏览器中打开。可以通过扫描工具猜测文件路径、敏感文件,再通过此处的任意文件下载漏洞直接将敏感文件下载下来。有时不知道当前目录在第几层,所以需要多返回几层以保证能回到根目录所以需要写多个../,下载/etc/passwd等文件。

测试案例2

上传文件后点击下载,截取下载文件的数据包。


在数据包中测试发现ftpfolder、filename参数可控,ftpfolder控制路径、filename控制文件名,所以可通过控制这两处参数值下载任意文件。


修改ftpfolder参数值为../../data/,可跳转至data目录,同时修改filename参数值为adminuser.cfg,将其进行base64编码后为:ftpfolder=Ly4uLy4uL2RhdGEv&filename=YWRtaW51c2VyLmNmZw==,返回包就可显示出admin用户的md5加密密码。


解密后成功登录。

0x07 风险分析

危害大致可分为两类1. 下载网站源码攻击者可⽤得到的代码进⼀步代码审计,得到更多可利⽤漏洞;

2. 查看或下载网站任意文件如数据库配置文件、服务及系统配置⽂件、日志文件,以及对内网的信息探测等等;

0x08 加固建议

1. 净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。

2. 限定文件访问范围:在php.ini等配置文件中配置open__basedir限定文件访问范围。web应用程序可以使用chroot环境包含被访问的web目录,或者使用绝对路径+参数来访问文件目录,使其即使越权也在访问目录之内。

3. 更新版本:任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。

4. 将要下载的文件地址保存至数据库中。

5. 文件路径保存至数据库,让用户提交文件对应ID下载文件。

6. 用户下载文件之前需要进行权限判断。

7. 文件放在web无法直接访问的目录下。

8. 不允许提供目录遍历服务。

9. 公开文件可放置在web应用程序下载目录中通过链接进行下载。

参考https://wenku.baidu.com/view/3b727822753231126edb6f1aff00bed5b9f373b7.html https://blog.csdn.net/qq_41901122/article/details/116524142 https://www.yuque.com/tidesec/vul/ab9s2u



E

N

D



Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。

团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
GNOME “文件”引入最受欢迎的功能:“新建文件”菜单 | Linux 中国重磅文件发布!原研药迎来春天Python批量将Photoshop文件保存为图片今日闪促!AirCanada和WestJet全国任意飞75折“那个年代”微信群友的父亲节周末野餐风云再起,任意赋码“他患有勃起功能障碍只能用酒瓶对我性侵…”德普的老婆在上诉文件中继续对这位“船长”进行指控……如何在 Linux 中使用 Pandoc 转换文件格式 | Linux 中国刘少奇在7000人大会前后, 估计并无篡位意图, 但把老毛拱成”佛“供起来的愿望是有的WPS会删除本地文件?我亲自帮你们试了试。国内出境游将开放!英国旅游签证办起来!找工作/续签/转长期签证样样行,在任意国家竟都能递交?如何在 Ubuntu/Linux 和 Windows 之间共享文件夹 | Linux 中国GNOME 43 中 Nautilus 文件管理器的 6 个新变化 | Linux 中国在美国143.两外孙有教养,看花房秋招上新!麦肯锡等3家头部咨询公司网测题,一份文件全剧透冷知识!为美籍宝宝申请CRBA,请注意文件的时效性!那些突然被“锁”的文件 将WPS推向用户信任崩溃的边缘川普手上的文件已是解密的 | 如文件涉及严重的国家安全,为什么FBI要等上几天才执行抄家?泄密文件:优步曾违法游说马克龙外面吃它人均至少300+!在家做,30块就任意吃这个省有福了!马斯克暗示:全球第5家特斯拉超级工厂,将落户加拿大?!文件曝光王羲之“热”帖用 ranger 在 Linux 终端管理你的文件 | Linux 中国任意用户密码重置刷屏外网!Uber内部文件刷屏:史诗级黑料爆出,美国科技圈大变天个人养老金试点加速落地,这四大配套文件将密集出台!在 Linux 上使用 Bash 创建一个临时文件 | Linux 中国硬核观察 #696 微软仍计划默认屏蔽下载的 Office 文件中的宏来Keep城市漫游跑,一秒跑进任意门丨限时送城市限定钥匙扣德普案反转?德普粉丝集资公开法庭文件,想搞臭艾梅柏,没想到把德普锤惨了....用这些开源工具在 Linux 上编辑 PDF 文件 | Linux 中国在 Linux 中隐藏文件和文件夹的那些事 | Linux 中国I-485 绿卡申请,在移民局面谈时需要携带的文件这份通知的上款人署名有点怪欺诈、煽动暴力、非法交易…优步12万份秘密文件泄露,连马克龙都收买了?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。