* 在实现文件上传时,如果后端没有对用户上传的文件做好处理,会导致非常严重的安全问题:
* 如服务器被上传恶意代码,或者垃圾文件。
$target_path = DVWA_WEB_PAGE_TO_ROOT.“hackable/uploads/”;
//含义:
**DVWA_WEB_PAGE_TO_ROOT=D:\phpstudy\WWW\DVWA
**$target_path=D:\phpstudy\WWW\DVWA/hackable/uploads/
target_path = target_path . basename($_FILES[‘uploaded’][‘name’]);
含义:
basename()函数:
显示文件上传的扩展名;
因此最终你上传的文件的最终路径为:
$target_path=D:\phpstudy\WWW\DVWA/hackable/uploads/123.jpg
之后我们看到它对上传的文件没有任何的要求,文件类型或是文件大小都没有做规定,
于是我们可以轻松的传我们的木马上去。
这里简单的传了一个文本文件;
1.查看源代码:
* 这次相比上次规范许多;
* 而这个问题我们抓包就可以解决。
* 打开burpsuit, 我们拦一下上传包,改一下他的上传格式,绕过拦截。
* 扔到reapter,点go:
strrpos(string,find,start)函数:
返回字符串find在另一字符串string中最后一次出现的位置,如果没有找到字符串则返回false,可选参数start规定在何处开始搜索。
getimagesize(string filename)函数:
会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。可以看到,
High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,
因此要求上传文件名形式必须是”*.jpg”、”*.jpeg” 、”*.png”之一。
同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型。
2.通过构造一句话图片木马,然后上传来绕过防御,然后结合php文件解析漏洞或者web中间件解析漏洞或者文件包含漏洞来达到解析含有php代码的png文件
2.1构造图片马 #本实验由于DVWA版本自身原因,无法利用文件包含结合文件上传
方法一:找个图片,用记事本打开,添加一句话
然后成功上传:
原文:https://www.cnblogs.com/my-boke/p/14329387.html