DVWA---文件上传

版权声明:孤 https://blog.csdn.net/Wu000999/article/details/84308739

File Upload,即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的。

网页能够上传文件的条件

表单提交方式:post (get方式提交有大小限制,post没有)

在这里插入图片描述

表单的enctype属性:必须设置为multipart/form-data

在这里插入图片描述

表单必须有文件上传项:file
在这里插入图片描述

DVWA文件上传

服务端代码 LOW
在这里插入图片描述

代码分析:

$target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; 

设置上传文件的路径,DVWA_WEB_PAGE_TO_ROOT早已定义为某个路径(网站根目录),用.连接后面的字符串。

$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

获取上传的文件名。basename(path,suffix)函数返回路径中的文件名部分,如果可选参数suffix为空,则返回的文件名包含后缀名,反之不包含后缀名。

move_uploaded_file(file,newloc)函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。

可以看到,服务器对上传文件的类型、内容没有做任何的检查、过滤,存在明显的文件上传漏洞,生成上传路径后,服务器会检查是否上传成功并返回相应提示信息。

漏洞利用
文件上传漏洞的利用是有限制条件的,首先当然是要能够成功上传木马文件,其次上传文件必须能够被执行,最后就是上传文件的路径必须可知。不幸的是,这里三个条件全都满足。

上传一句话木马
在这里插入图片描述
在这里插入图片描述

打开菜刀
在这里插入图片描述
然后菜刀就会通过向服务器发送包含apple参数的post请求,在服务器上执行任意命令,获取webshell权限。可以下载、修改服务器的所有文件。
在这里插入图片描述

服务端代码 Medium
在这里插入图片描述

 if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) && ( $uploaded_size < 100000 ) )

对上传文件的类型和大小做出了限制,只能上传图片的JPEG和PNG格式,问价大小为100000B 大约为97.65KB。

漏洞利用
在这里插入图片描述

打开burpsuite 抓包
在这里插入图片描述

将Content-Type: application/octet-stream改掉。
在这里插入图片描述
在这里插入图片描述

服务器代码 High
在这里插入图片描述

strrpos(string,find,start)

函数返回字符串find在另一字符串string中最后一次出现的位置,如果没有找到字符串则返回false,可选参数start规定在何处开始搜索。

getimagesize(string filename)

函数会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。

可以看到,High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是”.jpg”、”.jpeg” 、”*.png”之一。同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型。

漏洞利用
采用%00截断的方法可以轻松绕过文件名的检查,但是需要将上传文件的文件头伪装成图片,由于实验环境的php版本原因,这里只演示如何借助High级别的文件包含漏洞来完成攻击。

首先利用copy将一句话木马文件hack2.php与图片文件1.jpg合并

在这里插入图片描述
或者使用C32直接加在后面
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Wu000999/article/details/84308739
今日推荐