• DVWA-全等级文件包含


    DVWA简介

    DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

    DVWA共有十个模块,分别是Brute Force(暴力(破解))、Command Injection(命令行注入)、CSRF(跨站请求伪造)、File Inclusion(文件包含)、File Upload(文件上传)、Insecure CAPTCHA(不安全的验证码)、SQL Injection(SQL注入)、SQL Injection(Blind)(SQL盲注)、XSS(Reflected)(反射型跨站脚本)、XSS(Stored)(存储型跨站脚本)。

    需要注意的是,DVWA 1.9的代码分为四种安全级别:Low,Medium,High,Impossible。初学者可以通过比较四种级别的代码,接触到一些PHP代码审计的内容。

    File Inclusion

    File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。

     LOW级别:
    源码:

    vulnerabilities/fi/source/low.php
    <?php
    
    // The page we wish to display
    $file = $_GET[ 'page' ];
    
    ?> 

    可以发现,服务器对page参数没有任何的过滤和检查。服务器希望用户点击图中的三个链接,服务器会包含相应文件,并将结果返回。需要说明的是。不管文件后缀是否是php,都会当做php文件执行,如果文件内容确认为php,则正常执行并返回结果,如果不是,则返回打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行。

    漏洞利用一:

    构造url(绝对路径):http://192.168.5.100/dvwa2/vulnerabilities/fi/?page=C:PhpStudyPHPTutorialWWWdvwa2php.ini

     这样,就成功读取了服务器的文件。同时也可以再page后加相对路径,道理相同。

    Medium:

    代码:

    //Thepagewewishtodisplay
    $file=$_GET['page'];
    
    //Inputvalidation
    $file=str_replace(array("http://","https://"),"",$file);
    $file=str_replace(array("../","..""),"",$file);

    可以看到,Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,将”http:// ”、”https://”、 ” ../”、”..”替换为空字符,即删除。

    漏洞利用:可以通过双写绕过WAF。同时过滤的比较少,采用绝对路径的办法不受影响。

    HIGH

    代码:

    //Thepagewewishtodisplay
    $file=$_GET['page'];
    
    //Inputvalidation
    if(!fnmatch("file*",$file)&&$file!="include.php"){
       //Thisisn'tthepagewewant!
    echo"ERROR:Filenotfound!";
    exit;
    }

    可以看到,High级别的代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件。

    看似安全,其实可以利用file协议绕过防护策略。file协议其实我们并不陌生,当我们用浏览器打开一个本地文件时,用的就是file协议。

    构造url:http://192.168.5.100/dvwa2/vulnerabilities/fi/?page=file:///C:/PhpStudy/PHPTutorial/WWW/dvwa2/php.ini

  • 相关阅读:
    多库查询 sp_addlinkedserver使用方法(添加链接服务器)(转)片段整理
    利用asp.net路由实现url解析
    C#事务 访问数据库(转)
    男人30而立,30岁的男人喊起来!你们立了吗?
    c# 调用SQL Server存储过程返回值(转)
    转摘 JQUERY操作JSON例子
    jstree 从简单说起Jquery 插件应用说明
    利用反射对对象属性赋值取值操作
    asp.net 造成seesion 丢失的问题之一
    jquery 实现从左边listbox选择至右边listbox
  • 原文地址:https://www.cnblogs.com/hzk001/p/12255098.html
Copyright © 2020-2023  润新知