网站 建设 深圳,ui设计 接单网站,建设网站中期要做什么,深圳 高端 建站公司#x1f31d;博客主页#xff1a;泥菩萨 #x1f496;专栏#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 先来了解两个概念#xff1a;
身份认证#xff1a;验证用户或者系统身份的过程#xff0c;确保他们所声明的身份是真实的… 博客主页泥菩萨 专栏Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 先来了解两个概念
身份认证验证用户或者系统身份的过程确保他们所声明的身份是真实的访问控制判断该用户是否被允许执行或访问所请求的资源常见的访问控制漏洞有 ”水平越权、垂直越权、未授权访问、目录遍历“ 四种
水平越权同级别用户之间的越权垂直越权普通用户能拥有管理员用户的权限未授权访问原本应该登陆后才能访问到的资源 在不登陆的情况下也可以直接访问目录遍历…没做好过滤
一、概述
1.1 漏洞介绍
目录遍历Directory traversal也称文件路径遍历、目录穿越、路径穿越等。是由于网站本身存在配置缺陷导致网站目录可以被任意浏览从而使得攻击者可以访问到原本不具备权限访问的内容造成信息泄露为攻击者实施进一步的网络入侵提供帮
1.2 漏洞原理
一般来说网站会有对服务器文件进行读取查看的功能大多会用到提交的参数来指明文件名比如
# test.jpg是本身存在于服务器上的http://www.magedu.com/getfiletest.jpg当服务器处理传送过来的test.jpg文件名时会自动添加完整路径比如
c://site/hack/test.jpg随后将读取到的内容返回给用户
初看这只是文件交互的一种简单的过程但是由于用户输入的文件名可以任意更改且服务器支持“~/”、“…/”等目录跳转符而网站在实现上又没有过滤用户输入的目录跳转符从而导致攻击者可以拼接路径来遍历服务器上的目录或者文件造成目录遍历漏洞
在文件名中添加 ..\
http://www.magedu.com/getfile..\..\..\windows\win.ini服务器再次处理传送过来的 ..\..\..\windows\win.ini 文件名自动添加完整路径
c://site/hack/..\..\..\windows\win.ini读取到windows操作系统的配置文件
1.3 文件包含和目录遍历的区别
从技术层面上看文件包含漏洞是通过include、require、read等函数把文件读取到当前路径内并进行加载和解析而且目录遍历漏洞则是中间件配置不完善引发的问题可以读取查看一般不具备解析功能从URL表现来看文件包含中url 后面的内容通常是文件名而目录遍历中url 后面的内容不一定是文件名也有可能是路径从内容表现来看文件包含造成的信息泄露泄露的信息是展示在HTML中而目录遍历引发的泄露可能是泄露文件自身从攻击效果来看文件包含可以实现Getshell目录遍历则是造成信息泄露
二、如何发现目录遍历漏洞
关于目录遍历漏洞主要有两种测试方式手工测试和使用自动化扫描器
2.1 手工测试 可能存在目录遍历漏洞的业务场景尝试寻找对服务器的文件有读取查看的功能点比如文件上传和导入、文件下载和导出、文件删除、文件解压、加载图片等 #存在关键字和文件包含关键字一样?page/file直接访问网站的各种目录不加文件名和参数如果以非HTML文件的形式显示了该目录下的文件或者目录信息证明存在该漏洞
2.2 自动化扫描
主流web漏洞扫描工具都支持目录遍历漏洞的自动化测试比如AWVS、DirBuster等
三、常见的绕过
3.1 绝对路径绕过
应用程序禁用了目录跳转符如 ../ 直接换成绝对路径即可实现绕过
../../../etc/passwd /etc/passwd3.2 双写绕过
应用程序通过正则匹配目录跳转符然后清除但是仅清楚一次所以利用双写即可实现绕过
../../../etc/passwd ..././..././..././etc/passwd3.3 编码绕过
应用程序通过正则匹配 / 然后清除可以对斜杠 / 进行URL编码变成 %2f 避免被匹配到即可实现绕过。但是这种绕过方法有使用前提编码后的 %2f 到了后端会再进行一次解码还原成斜杠 / 本身
../../../etc/passwd ..%2f..%2f..%2fetc%2fpasswd3.4 加密参数绕过
应用程序对文件名加密后再提交比如downfile.php?filenamebWFnZWR1LmpwZw在参数filename使用base64加密而攻击者想要绕过只需要将构造好的路径文件进行base64加密后再附加提交即可
所以说应用程序采用一些有规律或者轻易识别的加密方式也是存在风险的
../../../etc/passwd Li4vLi4vLi4vZXRjL3Bhc3N3ZA3.5 预期路径绕过
应用程序仅检测路径的开头部分是否预期路径如果是则允许通过
起始预期路径相对路径的方法进行绕过
../../../etc/passwd /var/www/html/../../../etc/passwd3.6 00截断绕过
应用程序在读取前会对提交的文件后缀名进行检测可以通过在文件名后放一个空字节编码%00来绕过文件类型检测
../../../etc/passwd ../../../etc/passwd%00.jpg四、pikachu演示
4.1 源码分析 如上图代码的逻辑是从Get请求中提取title参数作为$filename的值然后使用require语句加载 $filename并执行这一过程没有进行任何过滤从而导致目录遍历漏洞的产生
因为用到了require()所以既可以做文件包含也可以目录遍历
4.2 漏洞演示
http://pikachu/vul/dir/dir_list.php?title..\..\..\windows\win.ini五、防御方法 输入验证与过滤检查输入中是否包含特殊字符或路径分隔符并拒绝包含不可信内容的输入 白名单限制允许访问的文件或目录预先定义路径 安全文件路径处理在构造文件路径时避免直接拼接用户提供的输入。建议使用安全的文件路径处理函数或库 权限控制确保文件的访问权限设置正则 安全编程实践开发人员应遵循安全编程实践并对用户输入进行充分的验证、过滤和转义。不可信的用户输入应该被视为潜在的目录遍历攻击 目前常见的存在目录遍历漏洞的中间件及其修复方式如下 IIS
关闭目录浏览功能在IIS的网站属性中勾去“目录浏览”选项重启IISApache
关闭目录浏览功能打开Apache配置文件http.conf查找“Options IndexesFollSymLinks,修改为”Options -IndexesFollSymLinks(减号表示取消)保存并退出重启ApacheNginx
默认不开启目录浏览功能若发现开启了该功能可以编辑nginx.conf文件删除如下两行
autoindex on;
autoindex exact size on;
重启Nginx