1. 文件解析漏洞
文件解析漏洞,是指Web容器(Apache、Nginx、llS等)在解析文件时,将非脚本文件解析成脚本文件格式并得以执行而产生的漏洞。黑客可以利用该漏洞实现非法文件的解析。文件解析漏洞主要由于网站管理员操作不当或者Web服务器自身的漏洞,导致一些特殊文件被IIS、apache、nginx或其他Web服务器在某种情况下解释成脚本文件执行。
Apache HTTPD多后缀解析漏洞:
Apache HTTPD支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别(不在mime.types内),则继续向左识别,当我们请求这样一个文件1.php.aaa, aaa后缀无法识别向左,发现后缀是php,交给php处理这个文件最后一步虽然交给了php来处理这个文件,但是php也不认识.aaa的后缀,不解析。运维人员在配置服务器时为了使apache服务器能解析php,而自己添加一个handler:
AddHandler application/x-httpd-php .php
AddHandler将文件扩展名映射到指定的处理程序那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
漏洞复现:
上传一个1.php.jpg文件
访问该文件可以被成功解析
2.目录遍历漏洞
目录遍历是一种允许攻击者在未授权的状态下读取应用服务上任意文件的安全漏洞。这包括应用代码数据、凭证以及操作系统的敏感文件。在有些情况下,攻击者还可能对服务器里的文件进行任意写入更改应用数据甚至完全控制服务器。程序在实现上没有充分过滤用户输入的目录跳转符(如../),导致用户可以恶意提交目录跳转,实现服务器上的任意文件遍历
(1)apache目录遍历漏洞
在phpstuyd的Apache配置文件目录中的vhosts.conf,Options +Indexes +FollowSymLinks+ExecCG中的Indexes前为+号则表示允许列出目录
漏洞复现:
启动靶场后访问127.0.0.1/aaa/
漏洞修复:
将options +Indexes +FollowSymLinks +ExecCGI 并修改成 Options -Indexes
+FollowSymLinks +ExecCGI 并保存,然后重启服务
(2)Nginx目录穿越漏洞
Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):
location /files {
alias /home/;
}
那么当我们访问/files../时,nginx实际处理的路径是/home/../,从而实现了穿越目录
漏洞复现:
启动靶场后访问http://your-ip:8081/files../,成功穿越到根目录
漏洞修复:
在别名后使用/闭合/files,形成/files/
然后重启服务
(3)pikachu目录遍历漏洞
A. 访问靶场,目录遍历,发现其通过title来控制文件内容
B.访问title=../dir.php,可以访问到上级目录的内容
C.访问title=../../../README.md,可以访问到根目录的README.md文件