这次开始使用upload-labs开始进行文件上传的初步练习。
首先什么是文件上传以及文件上传的漏洞。通俗点来讲,就是在一些网站中需要上传照片,文档等一些文件的操作就是文件上传。而这里也同样有着大量漏洞可以利用,总的来说就是利用服务器对上传文件的过滤不严格,上传一些可以执行恶意语句的脚本并成功在服务器运行。
pass1:
查看提示,题目要求只能上传图片格式。而我们写的脚本是PHP。
那么为了能够上传文件,我们在文件后缀名后再加上.jpg。在网页上上传并用burp suite抓包。
在这里,将.jpg删除并发送,接着访问upload文件夹,成功上传并执行脚本。
pass2:
先随便上传一个PHP文件
这样的提示说明该文件上传是后端服务器验证,做法和第一题可以一样,用burp suite抓包后修改后缀名同样也可以。不过也有其他方法也不用改动脚本的后缀名。
pass2也是mime文件类型校验
是浏览器常用的文件校验方式, 文件被上传后由后端脚本对其类型进行判断,使用在网站前端进行文件上传时,可以不修改脚本的后缀名。上传时使用burp suite进行在抓包。
关键在content-type这里,常用字段有:image/jpeg :jpg 图片格式、image/png :png 图片格式、image/gif :gif 图片格式、text/plain :纯文本格式、text/xml : XML 格式、text/html : HTML 格式。我们在这里将其改成image/jpeg后发送,这样就绕过了后端的校验。
pass3:
故技重施没有用了,我们查看js源代码
大致可以看出来asp,aspx,php,jsp为后缀的文件被禁止上传, 而还禁止了::%DATA的使用,目的是让人无法使用文件流进行上传。方法也有,方法1.使用其他的文件后缀比如php3,phps等
结果就是,文件确实是上传了,也能正常访问,但无法执行。这里是因为我的Apache的配置文件有问题.
在该文件中添加php3,php5等。
方法2.::$DATA双写,校验脚本中的只是删除了::$DATA这样的字符串,如果在::$DATA中的两个字符之间再加上一个::$DATA那么在删除::$DATA后,两边的字符串合并后又可以组成::$DATA。
所以抓包后在.php后加上::$D::$DATAATA即可。
版权归原作者 glass_york 所有, 如有侵权,请联系我们删除。