文件上传
文件上传漏洞是由于对上传文件的内、类型没有做严格的过滤、检查,使得攻击者可以通过上传木马文件获取服务器的webshell文件
本人公众号泷羽Sec-track,感兴趣的师傅可以看看
low
上传一个php文件,上传成功,并且可以在WWW\DVWA\hackable\uploads目录下找到该文件
此难度没有做任何过滤,所有文件都可以上传
源码审计
没有做任何过滤,很危险的行为
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// 检查表单是否提交了"Upload"按钮
// 定义目标上传路径
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; // 设置目标路径为一个固定目录
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] ); // 将上传文件的基础名称附加到目标路径
// 尝试将文件移动到上传文件夹
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// 如果移动失败
// 上传失败,显示错误信息
$html .= '<pre>Your image was not uploaded.</pre>'; // 提示用户图像未上传
}
else {
// 如果成功
// 上传成功
$html .= "<pre>{
$target_path} successfully uploaded!</pre>"; // 提示用户图像成功上传,并显示路径
}
}
?>
medium
先上传一个php文件
只允许上传jpg/png图片,那么就上传这两种图片
上传成功
源码审计
只允许上传文件类型jpg/png内容,以及文件大小小于10000字节,过滤并不严谨
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// 检查表单是否提交了"Upload"按钮
// 定义目标上传路径
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; // 设置目标路径为一个固定目录
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] ); // 将上传文件的基础名称附加到目标路径
// 文件信息
$uploaded_name = $_FILES[ 'uploaded' ][ 'name' ]; // 获取上传文件的名称
$uploaded_type = $_FILES[ 'uploaded' ][ 'type' ]; // 获取上传文件的类型
$uploaded_size = $_F