关于文件上传方面的相关漏洞,一共有三个方面,分别是源码本身,中间件问题,编辑器问题。上节课我们通过ctf的题对第一部分进行了讲解,这节课对后两部分进行讲解。
1、中间件配置不当导致文件被恶意解析
2、CMS源码引用外部编辑器实现文件上传
第一部分:中间件文件解析-IIS&Apache&Nginx
IIS 6 7 文件名 目录名
1、文件名:x.asp;.x.jpg
2、目录名:x.asp/x.jpg
3、IIS7.X与Nginx解析漏洞一致
这个主要是6版本和7版本,因为我没有cms,案例没法做。简要说一下把
首先要想触发这个漏洞,第一个中间件是IIS,第二个上传的文件名或目录名能够修改。
比如它只让上传jpg格式的图片,那么我们把文件名改成1.asp;.1.jpg。他的格式还是jpg,但是写在图片里面的后门代码是可以正常执行的。或则目录名是可以带后缀的。比如本来叫1,我们给他改成1.asp那么我们上传到这个目录的jpg文件中的后门代码也是可以正常执行的。
然后就涉及到了这个命名的问题,它是下面三种不同的命名方式,基于本地名命名就挺好,直接就可以利用。如果是第二个和第三个看它能不能加上我们需要的,可以就表示有机会,没有就g
Apache
Apache和nginx的这四个案例都可以在vulhub中找到,建议看vulhub的,更加的清晰,直接搜名字即可,名字截图放在文章末尾
Apache 换行解析-vulhub (%0a截断,黑名单绕过)
利用条件:
1.是这个中间件
2.黑名单验证(在黑名单的后缀不让上传 php jsp等)
php%0a绕过黑名单
白名单可能不行(在白名单里面才可以上传 比如jpg png gif等)
1.jpg.php%0a(没考虑最后一个点为后缀,这个白名单就可以)
上传一个名为1.php的文件,被拦截:
在1.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截:
访问刚才上传的/1.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:
下图是小迪的总结
Apache 解析漏洞(未知后缀解析漏洞)、
利用条件
文件名需要基于本地上传为准
原理:
在低版本的apache中,若文件后缀x.php.xxx.yyy,在服务器中若此文件.yyy后缀不被解析,则依次向前解析,成功为止。
这个相当于是配置不当了,如果运维人员给后缀增加了处理器,那么就会造成这个漏洞
但想要利用这个漏洞首先中间件是apache,并且文件命名要以本地名上传为准,如果是以时间或则随机字符,那么你是无法控制的。
-Nginx 文件名逻辑 解析漏洞
1、文件名逻辑-CVE-2013-4547
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
2、解析漏洞-nginx.conf配置不当
由此可知,该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
这两个漏洞直接看vulhub上面的讲解把
第二部分:#Web应用编辑器-Ueditor文件上传安全
这个主要是看编辑器有没有存在漏洞,跟源码和中间件无关,首先在前端页面的会员中心一般会有填写简历的地方,其他地方有上传到地方也可以,然后观察利用的是不是编辑器进行上传操作的,看是什么编辑器,然后看以前爆过的漏洞。下面这个链接跟小迪讲的一下,直接看链接里面的内容把
UEditor编辑器漏洞复现_catchimage_瓜皮辰.的博客-CSDN博客
分析文件上传漏洞的步骤一般是先看中间件,然后去网上看爆过的历史漏洞能不能加以利用,接着看是否使用编辑器,也是看历史爆过的漏洞加以利用。最后看源码里面的漏洞。
补充:四个漏洞的截图,可直接去vulhub里面搜
最后就是本节课思维导图: