zl程序教程

您现在的位置是:首页 >  其他

当前栏目

web渗透测试----6、目录遍历漏洞

漏洞遍历测试Web 目录 ---- 渗透
2023-09-11 14:17:06 时间


一、目录遍历漏洞原理

目录遍历漏洞通过操纵引用带有“点-点-斜杠(…/)”序列及其变体的变量或使用绝对路径,攻击者可以读取运行在服务器上的任意文件,包括应用程序代码和数据、后端系统的凭据以及敏感的操作系统文件。在某些情况下,攻击者能够向服务器写入任意文件,从而允许他们修改应用程序数据或行为,并最终完全控制服务器。


二、漏洞示例

<?php 
$ template  =  'red.php' ; 
if  (isset ($ _COOKIE [ 'TEMPLATE' ])) { 
    $ template  =  $ _COOKIE [ 'TEMPLATE' ]; 
}
?>

我们只要使用…/构造相对路径对文件进行遍历就可以达到攻击效果
… / … / … / … / … / … / … / … / … / etc / passwd


三、常见绕过

编码和双重编码:
%2e%2e%2f   ../
%2e%2e/  ../
..%2f  ../ 
%2e%2e%5c  ..\
%2e%2e\ ..\ 
..%5c  ..\ 
%252e%252e%255c  ..\ 
..%255c  ..\ 
百分比编码(又名URL编码)
Web容器对来自表单和URL的百分比编码值执行一级解码。
..%c0%af  ../ 
..%c1%9c  ..\ 

特定于操作系统

UNIX系统
常见的类Unix目录遍历使用该../模式。
Sudo是Unix中普遍存在的特权管理程序,
当用户使用glob通配符来指定允许用户运行哪些命令时
(例如chown /opt/myapp/myconfig/*可以被该命令利用),
它容易受到此攻击sudo chown baduser /opt/myapp/myconfig/../../../etc/passwd。
windows和DOS目录遍历使用../或者..\
每个分区都有一个单独的根目录(标记为C:\C可以是任何分区),
在该目录之上没有公共的根目录。
这意味着对于Windows上的大多数目录漏洞,攻击仅限于单个分区。

四、绕过防御示例

1、未进行任何防御

在这里插入图片描述
在这里插入图片描述

2、双写进行绕过

在这里插入图片描述

3、利用编码进行绕过

在这里插入图片描述

4、利用%00截断后缀绕过

在这里插入图片描述

5、利用文件路径绕过

在这里插入图片描述


五、漏洞防御

1、对用户的输入进行验证,特别是路径替代字符如“…/”和“~/”。

2、采用白名单的形式,验证所有的输入。

3、合理配置Web服务器的目录权限。

4、控制返回数据,保证返回数据不会泄露任何和服务器相关的隐私数据。

5、对用户传过来的文件名参数进行编码