为了祖国的未来,快来关注我们吧
在工作中意外碰到了一个电商的cms。(你猜是哪个电商?反正我双十一没剁手,考虑双旦入手xx防脱。)发现这个东西似乎存在着不少漏洞,花时间审计一翻。就发现了N个上传漏洞。
首先作为一个脚本小子,总喜欢黑盒来一遍。听闻猪猪侠说,在他的时代,渗透中只要识别一下指纹,然后判断是什么cms。下载一套,本地一搭建马上就能日。虽然赶不上那种时代了。庆幸的心理肯定要有的,指不定就直接getshell了呢?在着,搭建本地靶场测试,能辅助你摸清楚这套程序的逻辑,对白盒的审计也有帮助。
我们先在本地搭建完进入后台,找出所有可见的上传点。
1、头像上传处
2、商品图片
3、logo
4、二维码
我们在头像上传处,审核元素,看看其触发哪个js事件。
我使用phpstorm搜索,uploadImg,可以看到不少文件都调用了它。
跟进imgUpload这个事件,跳转到底部的imgUpload函数,该函数调用了uploadFile函数,继续跟进uploadFile函数,跳到了File_upload.js。
函数内调用validationFile函数验证文件类型。userDetail.html使用File_upload.js,这个也就是我们用户头像上传处html。
路径:
/template/adminblue/Auth/userDetail.html
灰盒的阶段到此结束,在这里我们给出的结论是:先是前端js验证文件是否合法,不合法就不让上传。但是我们如果直接抓包工具发送请求或者在chrome中修改就绕过了这一层验证了,所以这一层验证是鸡肋。
客户端是最不能信任的!(划重点!!)
接着我们来看看白盒测试,此时点上传会提示请上传图片文件。
unicode解码为:请检查您的上传参数配置或上传的文件是否有误
原因是在 /application/shop/controller/Member.php
这边也验证了MIME类型,我们同样在上传的文件内容伪造GIF89a文件头即可。
可以看到我们上传的文件躺在了服务器中,另外值得一提的是也未验证cookie或者token,也就是说不是管理员用户也能上传。结合网络空间搜索引擎,比如:shodan、fofa。You Know it,you can hack it!