【霄享·安全】任意文件读取漏洞简介(第49期月刊)

【霄享·安全】任意文件读取漏洞简介(第49期月刊)

原创 刘宇凡 上汽集团网络安全应急响应中心 2025-02-10 04:09

漏洞描述

任意文件读取(Arbitrary File Read Vulnerability)漏洞,允许攻击者通过应用程序访问并读取系统上的任何文件。这个漏洞常见于Web应用程序中,当输入数据未经过适当的过滤或验证时,攻击者便有机会构造恶意请求,从而读取本不该访问的文件。

1

漏洞危害

用户数据泄露

任意文件读取漏洞可能导致用户数据泄露、敏感信息暴露等严重后果。

查看敏感操作记录

攻击者可以读取服务器上存储的操作记录,从而获取关于服务器操作的详细信息。这些信息可能包括服务器上曾经执行的命令和操作,有助于攻击者了解系统的运行状态和潜在的安全弱点。

获取敏感配置信息

如果服务器配置文件中包含了敏感信息,如数据库凭证、API密钥、密码等,攻击者可以直接获取这些敏感信息。这些敏感信息一旦被攻击者掌握,可能导致系统被进一步入侵,或者关键数据被篡改或窃取。

窃取应用程序代码

攻击者有可能读取应用程序代码,特别是对于使用解释型语言(如PHP、Python)编写的应用程序,攻击者可以轻松获取源代码。

常见的敏感文件路径如下:

Windows系统:

C:\Windows\System32\inetsrv\MetaBase.xml (IIS配置文件)

C:\Windows\System32\config\sam (sam文件)

C:\Program Files\mysql\my.ini (Mysql配置)

Linux系统:

/etc/passwd (Linux账号文件)

/etc/shadow (Linux密码文件)

/etc/my.cnf (Mysql配置信息)

/etc/httpd/conf/httpd.conf (Apache服务器配置文件)

/root/.bash_history (root执行命令记录)

/root/.mysql_history (Mysql历史命令记录)

2

常见漏洞函数:PHP中的AFR

用户通过GET请求传递的’page’参数,被用作要读取的文件名。代码未对用户输入的$file变量进行任何验证或过滤,直接将其作为file_get_contents函数的参数。攻击者可以通过修改URL中的page参数来读取服务器上的任意文件。

<?php

// The page we wish to display
$file = $_GET[ 'page' ];
echo file_get_contents($file);
?>

3

漏洞案例

任意文件读取漏洞通常存在于应用读取/下载图片、文件内容、下载附件、预览文档、导出文档、保存文档等功能处。

如下站点存在一个图片展示功功能,获取对应图片时,由于没有对用户输入限制进行限制,攻击者可以控制传递至服务端的filename路径参数,导致任意文件读取漏洞的产生,利用该漏洞可以对服务器内部文件进行读取。

4

漏洞修复建议

1、输入校验:对用户输入的文件名或文件路径参数进行严格的验证和过滤,例如“.”、“/”、“\”等特殊字符,仅允许输入业务需要的内容格式。

2、白名单:实施白名单控制,仅允许访问特定的、预期内的文件或目录。

3、最小化权限原则:定期审查和更新Web服务器的权限设置,以确保其始终符合最小化权限原则。

4、漏洞扫描及代码审计:定期使用专业工具进行漏洞检测,防患于未然。

5、Web应用防火墙:对网站或APP的业务流量进行恶意特征识别及防护,避免服务器被恶意攻击及入侵。

参考文献:

[1] 任意文件读取漏洞详解:https://blog.csdn.net/weixin_58954236/article/details/132642938

[2] java任意文件读取漏洞修复:https://blog.51cto.com/u_16213306/10081124

[3] CMS漏洞:任意文件读取解析:https://baijiahao.baidu.com/s?id=1765608149484014109

[4] 任意文件读取漏洞java任意文件读取漏洞危害:https://blog.51cto.com/u_16099204/6993953

本期专家介绍

刘宇凡

上海帆一尚行科技有限公司网络安全攻防专家

多次参加省市级安全攻防活动,擅长安全防护和渗透测试等网络安全工作

部分内容、图片源自网络,如有侵权请与我们联系删除。

点击下方名片,关注我们 ⬇️