安全-DVWA FileUpload文件上传漏洞分析
Posted 小狐狸FM
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全-DVWA FileUpload文件上传漏洞分析相关的知识,希望对你有一定的参考价值。
文章目录
前言
一、Low等级
在低等级下,对文件上传没有限制,上传之后会存储在
hackable/uploads
文件夹下,并以上传的文件名作为文件名称存储。
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// No
echo '<pre>Your image was not uploaded.</pre>';
}
else {
// Yes!
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
?>
写一个一句话木马并上传,连接的密码为
cmd
上传后回显了上传的路径
在
DVWA
查看一下上传的文件是否成功
使用路径访问一下
php
脚本,没有出现报错就表示脚本可用
使用蚁剑或菜刀连接
二、Medium等级
源码如下:
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// File information
$uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
$uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
// Is it an image?
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
( $uploaded_size < 100000 ) ) {
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// No
echo '<pre>Your image was not uploaded.</pre>';
}
else {
// Yes!
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
else {
// Invalid file
echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
}
}
?>
$_FILES
是预定义的数组,用来保存上传文件的信息
如果上传的文件为单个,则$_FILES
为二维数组
如果上传的文件为多个,则$_FILES
为三维数组
PHP $_FILES详解- 下方的
name
、type
、size
用于保存文件的名称、类型和大小(字节Byte
)
并将这三个参数的内容赋值到了$_uploaded_name
、$_uploaded_type
和$_uploaded_name
变量中
$uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
$uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
当上传文件的类型为
image/jpeg
或者是image/png
,同时文件的大小小于100000
才能进入if
语句中
if(
( $uploaded_type == "image/jpeg"|| $uploaded_type == "image/png")
&&( $uploaded_size < 100000 )
)
用
burp
抓包
修改文件类型
Content-Type
为image/jpeg
或者是image/png
上传成功
连接木马
以上是关于安全-DVWA FileUpload文件上传漏洞分析的主要内容,如果未能解决你的问题,请参考以下文章
笔记网易微专业-Web安全工程师-04.WEB安全实战-6.文件上传
pikachu靶场-Unsafe Filedownload/Fileupload不安全文件的下载和上传漏洞