0x00 搭建upload-labs靶场
工欲善其事,必先利其器。在学习文件上传漏洞之前,我们要先搭建好相关环境,个人推荐upload-labs靶场。这个靶场每一关都有着不同的绕过方式,相对来说比较全面,而且提供相应源码和提示以供分析。upload-labs的下载地址:https://github.com/c0ny1/upload-labs/releases。直接下载下来之后,解压在PHPStudy的./www/(或者相对应的集成环境的网站根目录下)目录下,并新建一个upload文件夹以作上传文件存放使用。而后便可以开始使用。
0X01 判断是什么限制
通过f12大法和查看源码我们可以看出,是一个简单的前端js验证,为什么这样判断呢,我们可以通过f12审计一下代码看看,选取元素为上传框,可以看出,有一个判断看书为checkFile,那么我们继续查看代码元素,利用审计功能自带的搜索,我们搜索一下“checkFile”这个函数,可以发现,一共有两处地方提及checkFile,第一处为上传框处做判断使用,第二处便是JS函数做限制处,由此我们判断这里有一个前端JS验证,当然,我们不清楚后续有没有其他的限制,阅读一下JS代码,做一个简单的假设就是他只有JS验证,当然,我们也可以抓一下包看一下是否有其他的验证特征(例如: contnet-type )。综上所述,可以判断,这里是一处简单的JS验证,那么便可以进行下一步,绕过。当然,还有第二种方法,上传文件后看网络加载,如果没有加载便判断无法上传就是前端JS验证。
0x02 简单的JS限制的绕过
JS验证原理:
在文件上传时,用户选择文件时,或者提交时,有些网站会对前端文件名进行验证,一般检测后缀名,是否为上传的格式。如果上传的格式不对,则弹出提示文字。此时数据包并没有提交到服务器,只是在客户端通过 js 文件进行校验,验证不通过则不会提交到服务器进行处理。
那么我们可以根据他的验证原理去进行绕过。
绕过 JS 检测方法:
绕过JS检测常规是两种方式,一种为:按 F12 使用网页审计元素,把校验的上传文件后缀名文件删除,即可上传。另外一种便是:把恶意文件改成 js 允许上传的文件后缀,如 jpg、gif、png 等,再通过抓包工具抓取 post 的数据包,把后缀名改成可执行的脚本后缀如 php 、asp、jsp、net 等。即可绕过上传。
删除JS元素:
抓包修改绕过验证:
从下图可以看出我们是上传成功了。
那么我们用蚁剑连接一下看一下,当然,不想那么麻烦的话一句话木马可以写成phpinfo的一句话木马,直接右键上图所框位置,选择复制链接,将其打开,如果为phpinfo的界面那么证明上传成功。
可以看出,在我们测试连接的时候他是连接成功的,而不是返回值为0,证明我们的shell上传成功,连接后可以进行后续操作。
0x03 总结
前端JS验证的绕过是属于比较简单的那一类型的文件上传漏洞绕过的操作,当然,每处漏洞的绕过方式,判断方式都要牢牢掌握才能更好的在以后运用在实战当中。
本文作者为J1angL1,转载请注明。