什么是上传漏洞
很多cms为了丰富自己的功能都提供了上传头像、上传图片等功能。但如果上传的内容没有做好过滤,则等于说给了攻击者一个执行任意代码的途径。比如攻击者可以在上传一个含有恶意代码的文件,伪装成图片,来绕过后台的检测机制。
以前一般的上传漏洞主要有以下几个方式造成:
0.在客户端用javascript或flash验证用户上传的文件格式,但上传到服务器后没验证。
1.对用户上传的文件只检查了ContentType,但ContentType是可以被用户修改的,所以用户上传的脚本文件可以将ContentType改成image/gif来绕过检查。
2.黑名单机制。检查用户上传的文件的后缀,如果是处于黑名单中的后缀,就返回错误信息。但黑名单机制很不好,不够完善,当黑名单中有遗漏的时候,攻击者就能够生虚而入。
3. 没有对用户上传的文件改名。网站有时候检查了用户上传的文件后缀是.jpg或.gif,于是就上传成功了,不对上传的文件进行改名。但一旦服务器存在解析漏洞,攻击者就可以利用畸形文件名来上传恶意代码。比如IIS6.0的解析漏洞,攻击者即可上传文件名类似“muma.asp;.gif”的文件,虽然看起来是一个gif格式,但IIS6.0就会把它解析成asp脚本运行。
4.解压缩功能造成问题。有些网站有这样的功能,比如wordpress和emlog后台支持上传压缩包(上传后自动解压),这样我们把恶意代码写在压缩包中某文件里,就能在上传解压后被运行。
像一些大型的CMS,用户量很多,他们的安全也做的较好,前台直接上传绕过执行任意代码的漏洞很少。一旦前台存在这种漏洞,任何人都能上传webshell到网站中。
代码如下 | 复制代码 |
//存储flashpost图片 |
可以看到,它删除的时候没有递归删除,也没有删除文件夹。这样,只要我们的webshell放在压缩包的文件夹中,即可避免被删除了。
所以我就创建了一个包含phi文件夹的压缩包,phi里面放上小马xm.php,上传上去。
防范上传漏洞
首先必须在服务器验证用户上传,可以不用检查ContentType,直接检查后缀,如果在白名单中,就对该文件重命名后再复制到网站目录中,重命名时就用白名单里的后缀。重命名的方式可以是 "时间戳 + 随机数.jpg"等。
尽量不允许前台用户上传压缩包,如果上传压缩包,一定要递归检查压缩包中所有文件后缀,删除非法的文件。
最后,将上传目录设置成不可执行。这样就算webshell被上传了也不能被执行,比如我测试的某大型黑客网站,虽然xm.php上传成功了,但被禁止执行了:
附加篇:怎么找到使用phpcms的网站
我前两篇都有这个栏目,因为大家处在web安全初期,平时要多练手,所以可以找一些网站进行实战。
phpcms是一个大型的cms,用的人很多,基本上是以万计数,所以找起来很容易。
直接百度 powered by phpcms即可:
大家学习的时候请低调,不要惹出什么事端,被请去喝茶。 原文来自:lvtao.net
植物大战僵尸融合版迷雾2.1.3在哪下载-植物大战僵尸融合版迷雾v2.1.3正式版下载地址分享
村庄铁匠铺传奇在哪下载-村庄铁匠铺传奇下载地址分享
英雄联盟手游蛮王怎么连招2025-泰达米尔技能连招技巧
开放空间OverField日服在哪下载-开放空间OverField日服下载地址分享
黑神话悟空像素版0.2版本在哪下载-0.2版本下载地址分享
植物大战僵尸抽卡版在哪里下载-植物大战僵尸抽卡版下载地址分享