专栏名称: 安全龙
安全龙,老牌网络安全网站,原黑客契约,成立于2012年;站长自媒体号,专注网络安全培训、安全技术文章分享、漏洞防御、安全资讯、网站安全、服务器、Linux运维、kail、编程、生活、工作、创业、等等;网址www.anquanlong.com
目录
相关文章推荐
浔阳晚报  ·  九江短视频大赛投票开启→ ·  13 小时前  
51好读  ›  专栏  ›  安全龙

从代码讲常用文件上传漏洞原理分析

安全龙  · 公众号  ·  · 2018-02-26 13:55

正文

文本独家广告赞助商:安全龙

加入安全龙VIP学习最新的网络安全技术!客服微信cyj9961;安全龙,一家专注网络安全技术培训的网站!

xm17是安全龙官方src核心战队成员之一与安全龙出品的系列高质量原创技术文章,看文末集合链接!安全龙官方src核心战队开始招募了~


文件上传漏洞大多存在于和文件上传相关的功能上,比如个人的照片上传,一些后台的插件上传等,主要存在如下:

1) 对于上传文件的后缀没有进行检测,造成任意文件上传

2) 只进行对上传文件的MIMETYPE的检测,造成绕过MIMETYPE上传

3) 黑名单检测,造成其他格式绕过上传

4) 进行前端js检测,造成改包绕过

5) 对上传文件的文件头信息检测,造成伪造文件头信息上传

6) 其他解析、截断等就不说了

 

一个文件上传代码的例子


我们上传一个图片

可以看到输出了我们想要的信息,这里简单说一下

$_FILES['upfile']['name']

$_FILES['upfile']['type']

这两个,我们都可以控制

$_FILES['upfile']['tmp_name']

这一个,是随机生成的

$_FILES['upfile']['size']

$_FILES['upfile']['error']

这两个,第一个是上传文件的大小,可以通过修改php.ini相关的配置,但是对我们来说没用,第二个,是文件上传的错误提示。

 

Ok,我们来看第一个,对于上传文件的后缀没有进行检测,造成任意文件上传

比如上一步的例子就可以做到,我们直接上传php文件

第二个,只进行对上传文件的MIMETYPE的检测,造成绕过MIMETYPE上传

我们看看修改的代码,这里我允许了几个图片和txt文档类型的文件格式

我们上传

可以看到不能上传,所以说,mimetype对我们的文件进行了验证,刚才我说过,type我们可以控制,我们抓一个包看看

我们修改一下为允许的类型

成功上传

 

第三个 黑名单检测,造成其他格式绕过上传

可以看到,我们在这里对文件的后缀进行了验证,直接上传黑名单的格式会提示不能上传,但是我们可以上传其他的,比如ashx的之类的,但是这样的话,比如要服务器有相应的环境能够解析,还有就是phtml大家或许很少接触,但是他的确是php文件的一种,如果遇到了,不妨试试。


这里的话我就上传一个ashx进行演示

可以看到,我们在这里对文件的后缀进行了验证,直接上传黑名单的格式会提示不能上传,但是我们可以上传其他的,比如ashx的之类的,但是这样的话,比如要服务器有相应的环境能够解析,还有就是phtml大家或许很少接触,但是他的确是php文件的一种,如果遇到了,不妨试试。


这里的话我就上传一个ashx进行演示


第四个 进行前端js检测,造成改包绕过

 

这个的话想必大家都懂,抓下上传的包,直接修改就可以

正如这样的一个脚本,不是来源于服务端的验证,这里我们就不演示了

 

第五个 对上传文件的文件头信息检测,造成伪造文件头信息上传

 

这种就是一些对上传文件的文件内容进行了检测,我们可以通过cmd命令中的copy命令,进行合成

copy 1.jpg/a+2.php/b   诸如此类

或者

Win7系统里面可以对文件的属性进行修改,也可以绕过对文件内容的检测

 

如果是代码审计的,大多数,我说的是大多数都会用到move_uploaded_file这个函数,所以直接全局搜索这个函数,然后看一下,周围代码的调用操作。是否可绕过等等。

这是前几天在hack80看到的一个案例,很有意思的是他这里对文件的后缀取值,只是为了区分文件存在那个文件夹,然后直接拼接,上传。

 

可能会有人问 ,,为什么这里没有调用move_uploaded_file函数

我们看一下

这里是直接加载类过去了。所以。。

 

Src的话,放开手,多试试,只要遇到上传的地方,只管怼。我看别人再挖的时候,遇到一个上传的地方,竟然允许html上传,想想,这不就是一个储存xss吗?(不考虑其他因素)



 

作者历史稿件

从漏洞复现到代码审计,深入学习csrf漏洞原理 完整版

狗年狗粮,代码审计之某cms后台getshell

干货!从代码审计深度细讲xss漏洞攻击与防御

What?利用获取IP方式,进行SQL注入攻击

纯干货!一个白帽子挖漏洞经验细致分享

针对某开源cms一次严谨的渗透测试、代码审计、黑盒测试

文章版权说明:

1、本文由xm17编写的原创文章,授权给安全龙微信公众号发布,并授予安全龙原创标识。

2、通过本链接转载本文章,请联系安全龙客服进行授权,才可以转载。同时转载需要注明,来自安全龙(hackyue520)微信公众号。

3、文章如有侵权请与我们微信客服cyj9961联系,并携带版权证明。


联系客服

安全龙客服微信号cyj9961、QQ9582238、邮箱[email protected]



技术分享自媒体号

安全龙学堂服务号



安全龙,一家专注做网络安全技术教育培训的网站!网址www.anquanlong.com