文件解析漏洞是一种安全漏洞,攻击者可以利用它让服务器将恶意文件(如木马)以可执行脚本的形式解析和运行,从而控制服务器。这种漏洞通常出现在Web服务器(如Apache、IIS、Nginx)与解析引擎(如PHP)的交互过程中。
1
2
漏洞原理
文件解析漏洞的核心在于服务器对文件扩展名的处理规则。服务器在解析文件时,会从右到左检查扩展名。如果遇到未知或不可识别的扩展名,服务器可能会回退并尝试将文件作为其他类型的脚本(如PHP)解析。
1
例如,在Apache服务器中,一个文件如 test.php.qwe.asd 可能会被解析为PHP文件,因为 .qwe 和 .asd 不是Apache默认的可执行扩展。
1
解析漏洞详解
CSDN软件开发网
文件解析漏洞
CSDN软件开发网
常见类型和示例
Apache解析漏洞:
原理:Apache从右到左解析扩展名。如果配置了 AddHandler php5-script .php 或 AddType application/x-httpd-php .jpg,即使文件扩展名是 .jpg 或其他图片格式,也会被当作PHP执行。
1
触发形式:例如,上传一个名为 test.php.jpg 的文件,如果服务器配置不当,访问 test.php.jpg 可能会执行其中的PHP代码。
1
2
CVE-2017-15715:通过在PHP文件后添加空格或换行符(如 evil.php%0a),利用服务器解析规则绕过安全检查。
2
IIS解析漏洞:
IIS 5.x-6.x:主要针对ASP脚本。例如,文件 xx.asp;.jpg 会被解析为ASP文件,因为IIS忽略分号后的内容。目录解析也存在,如 www.xxx.com/xx.asp/xx.jpg 会将目录下的文件当作ASP执行。
1
IIS 7.5:漏洞与Nginx类似,通常由于PHP配置中 cgi.fix_pathinfo 被开启,导致文件如 logo.jpg/x.php 被解析为PHP。
1
Nginx解析漏洞:
原理:Nginx通过CGI方式解析PHP,如果 cgi.fix_pathinfo 开启,访问 1.jpg/1.php 可能将 1.jpg 作为PHP文件解析。
1
CVE-2013-4547:通过在图片文件后添加空格或特殊字符(如 %00),绕过解析限制。
2
漏洞利用场景
攻击者通常通过上传恶意文件(如图片马)来利用此漏洞。例如:
在文件上传功能中,上传一个名为 shell.asp;.jpg 的文件,如果服务器解析漏洞存在,访问该URL可能执行ASP代码。
1
对于Apache,上传 test.php.jpg 并配置服务器允许 .jpg 作为PHP执行,即可触发漏洞。
2
防御措施
服务器配置:避免在Apache配置中使用 AddHandler 或 AddType 指令关联可执行脚本到非安全扩展名。确保PHP配置中 cgi.fix_pathinfo 设置为0。
1
文件上传限制:在应用层验证文件扩展名和内容类型,禁止上传可执行脚本。使用随机化文件名避免命名冲突。
1
2
安全更新:及时升级服务器软件(如Apache、IIS、Nginx)到最新版本,以修复已知漏洞。
如果您有具体的服务器环境或场景,可以提供更多细节以便更针对性的建议。
文件解析漏洞