前言:文件上传漏洞是很常见的漏洞,也非常有趣,接下来就在DVWA靶场中边学边练。
文件上传漏洞:
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
具体的原理可以看大师傅的讲解
Smi1e_——文件上传漏洞 学习笔记
文件上传漏洞
low级别
观察源码
<?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' ] );
# $_FILES["file"]["name"] - 被上传文件的名称
# $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
# basename() 函数返回路径中的文件名部分
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
# move_uploaded_file() 函数将上传的文件移动到新位置
// No
echo '<pre>Your image was not uploaded.</pre>';
}
else {
// Yes!
echo "<pre>{
$target_path} succesfully uploaded!</pre>";
}
}
?>
通过对源码的分析,我们发现没有任何防护和限制,那就构造一句话木马
进行上传
根据相应的路径进行菜刀连接即可
Medium级别
上传刚才一句话木马试一下,发现
只能上传JPG或者是PNG,那就来查看一下源码
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT