DVWA File Inclusion 通关解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: DVWA File Inclusion 通关解析

前言

DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序的开源应用程序。它被设计成一个易于安装和配置的应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序。


DVWA提供了一系列的场景和练习环境,用户可以通过这些场景来学习和实践利用技术。这些包括常见的安全问题,如SQL注入、跨站脚本(XSS)、文件包含等。通过这些,用户可以了解的原理、影响和防御方法。


DVWA提供了不同的安全级别,从低到高,以满足不同技能水平的用户需求。用户可以根据自己的能力选择适当的安全级别,并进行相应的练习和挑战。


DVWA还提供了一些额外的功能和工具,如Web代理、密码破解、弱密码检测等,以帮助用户更好地理解和处理问题。


总之,DVWA是一个用于学习和练习Web应用程序漏洞的开源应用程序。它提供了一系列的场景和练习环境,帮助安全专业人员和爱好者提高对Web应用程序安全的理解和实践能力。通过使用DVWA,用户可以加深对Web应用程序的认识,并学习如何有效地保护Web应用程序免受。

介绍

文件包含(File Inclusion)是一种通过将文件内容包含到应用程序中执行,从而实现恶意行为的方式。文件包含常见于动态构建页面或加载配置文件的 Web 应用程序中,如果用户输入未经适当验证就被用来构建文件路径,可能利用这些执行任意代码或读取系统上的敏感文件。


文件包含分为两种主要类型:

  1. 本地文件包含(Local File Inclusion,LFI): 通过包含服务器上的本地文件,执行或读取文件内容。

远程文件包含(Remote File Inclusion,RFI): 通过包含远程服务器上的文件,实现远程代码执行。

一、文件包含的原理

文件包含漏洞通常出现在使用动态输入构建文件路径的情况下。例如,PHP 中的 includerequire 函数会根据给定的文件路径包含并执行文件。如果文件路径包含用户输入且未进行适当验证, 可以通过构造恶意输入,操控应用程序包含任意文件。

二、防御措施

  1. 严格输入验证
  • 对用户输入进行严格验证和过滤,确保仅允许合法的文件路径。
  • 使用白名单机制,确保包含的文件是预定义的合法文件。
  1. 禁止外部 URL 包含
  • 禁用远程文件包含功能,配置 php.ini 文件中 allow_url_include 设置为 Off
  1. 使用安全的文件包含方式
  • 使用安全的文件路径和名称,不直接使用用户输入构建文件路径。
  • 将包含的文件存储在特定目录中,并限制目录访问权限。
  1. 错误处理和日志记录
  • 实现适当的错误处理和日志记录机制,防止通过错误信息获取服务器文件结构。
  1. 最小特权原则
  • 限制 Web 服务器用户的权限,确保其只能访问必要的文件和目录。

一、Low

第一关很明显

直接利用尝试访问其他文件

二、Medium

源码如下

<?php
 
// The page we wish to display
$file = $_GET[ 'page' ];
 
// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\\" ), "", $file );
 
?> 

采用双写的方式绕过访问文件

三、High

源码如下

<?php
 
// The page we wish to display
$file = $_GET[ 'page' ];
 
// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
    // This isn't the page we want!
    echo "ERROR: File not found!";
    exit;
}
 
?> 

fnmatch() 函数根据指定的模式来匹配文件名或字符串

要求 page 参数的开头必须是 file,构造 payload

?page=file:///C:/phpstudy_pro/WWW/dvwa/phpinfo.php

四、结论

文件包含是一种常见且严重的 Web 安全,可以利用这些读取敏感文件或执行任意代码。为了防止文件包含,开发者应采取多层次的防御措施,包括严格的输入验证、使用白名单机制、禁用远程文件包含、使用安全的文件包含方式、实现错误处理和日志记录以及遵循最小特权原则。通过这些措施,可以有效提升 Web 应用程序的安全性,防止文件包含带来的风险。

目录
打赏
0
7
7
0
81
分享
相关文章
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
123 1
MaxCompute产品使用合集之如何在代码中解析File类型的文件内容
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
100 11
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
125 29
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
160 2
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等