在Web应用程序中,
文件上传是
一个基本的
功能。它允许
用户将
文件从本地计算机
上传到Web服务器上。然而,这种方便很容易导致
文件上传漏洞。DVWA是
一个具有漏洞的Web应用程序,
文件上传漏洞是其中之一。在本文中,我们将探讨DVWA
文件上传漏洞之一
PHP失败的情况。
当我们
上传文件到Web应用程序时,它将通过HTTP POST
方法将
文件上传到服务器。然而,如果服务器没有正确配置,攻击者就可以
上传恶意
文件。例如,攻击者可以
上传包含恶意
代码的
PHP文件,以便在服务器上执行该
代码。
在DVWA中,有
一个名为“Upload”的
文件上传漏洞,我们可以在DVWA中使用此漏洞进行测试。当我们尝试
上传一个包含
PHP代码的
文件时,DVWA会拒绝
上传并
显示错误“
文件类型不允许”。这是由于DVWA使用在其“
PHP.ini”
文件中
默认
禁止上传的
PHP文件的
文件类型列表。在DVWA中,我们可以在“
PHP.ini”
文件中找到此列表。
以下是“
PHP.ini”
文件中
默认的
PHP文件类型列表:
; List of file extensions which are allowed to be uploaded
; If empty,any file can be uploaded.
; Note that the Apache NEEDS to be configured to allow
; the appropriate HTTP methods (POST and PUT) when using this
; directive.
; http://httpd.apache.org/docs/2.2/mod/core.html#limitexcept
; Example usage:
; file_uploads = On
; upload_max_filesize = 20M
; upload_tmp_dir = /tmp
; allow_url_fopen = On
; allow_url_include = Off
; display_errors = Off
; error_reporting = E_ALL | E_STRICT
; post_max_size = 20M
; max_input_time = 60
; max_execution_time = 30
; [upload]
; ;only allow zip files
; ;.zip
; ; deny all
; ;allow all
可以看出,DVWA的“
PHP.ini”
文件默认
禁止PHP文件类型
上传。然而,如果攻击者
上传一个以“.phtml”或“.
PHPs”结尾的
文件,服务器可能会忽略
文件扩展名并执行其中的
PHP代码。
因此,我们必须接受
上传文件的MIME类型而不是扩展名,并根据这些MIME类型验证和筛选
上传的
文件。许多
文件上传漏洞的
解决方案都是基于MIME类型过滤的。
总之,在Web应用程序中,
文件上传可能会导致
文件上传漏洞。在DVWA中,我们可以使用
上传漏洞测试这种漏洞。然而,我们必须对
上传的
文件进行筛选和验证,以确保我们不会
上传恶意
文件或执行其中的恶意
代码。