首页
论坛
专栏
课程

分享:
### 01、漏洞原理与危害 文件上传漏洞原理: 网站web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个web可访问的目录上,并将恶意文件传递给PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。 根据网站使用及可解析的程序脚本不同,此处可以上传的恶意脚本可以是PHP、ASP、JSP文件,也可以是篡改后缀后的这几类脚本。 WebShell 就是以 asp、php、jsp 或者 cgi 等网页文件形式存在的一种命令执行环境,也可以将其称之为 一种网页后门。攻击者在入侵了一个网站后,通常会将这些 asp 或 php 后门文件与网站服务器 web 目录 下正常的网页文件混在一起,然后使用浏览器来访问这些后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载或者修改文件,操作数据库,执行任意命令等)。 ### 02、上传漏洞绕过 一个正常的上传流程通常会经过客户端与服务端的安全检查,而服务端检测又主要分为4类: (以下具体操作均可使用burpsuite进行,由于都是一些操作步骤,网上已经有很多使用教程,后文会给出一些参考资料,这里只对上传漏洞做一个总结。) 1、客户端JavaScript检查 客户端检测一般只是在JavaScript代码中加入了对扩展名的黑白名单检查,这种方式只能防止一些普通用户上传错误,只要用burpsuite在文件上传时进行截断改文件后缀名就可绕过。 [海洋石油HES.HOME APP后台弱口令任意文件上传导致getshell](http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0182087.html) [海洋石油工程股份有限公司官网任意文件上传导致任意代码执行Getshell](http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0181502.html) [国元投资某系统多处漏洞导致getshell内网多台机器(绕过上传限制)](http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0143782.html) 2、服务端检测: A、MIME类型的检查 (就是检查Content-Type的值,MIME类型决定了某种扩展名用什么应用程序打开,GIF的MIME值为image/gif.) [中国移动四川分公司某报表系统存在弱口令、上传文件绕过漏洞(已拿webshell,管理员权限)](http://wooyun.jozxing.cc/static/bugs/wooyun-2014-080842.html) B、文件扩展名检查 (与前端js后缀名检测类似,只不过是在后端进行检查,有时候还可以配合解析漏洞结合目录路径攻击,例如test.asp/test.jpg,解析漏洞后面会讲到) 后端后缀名检查也分两种,黑名单与白名单。 黑名单检查绕过: 1、文件名大小写绕过,比如代码中有php规则,那么可以使用PHP或者pHP绕过 2、黑名单列表绕过,对黑名单列表中没有的扩展名进行攻击,比如asa 3、利用windows和Linux系统的特性进行特殊文件名绕过,a.asp. a.asp_等 4、htaccess 文件攻击 5、配合解析漏洞(IIS、apache等,后面会单独提到) 白名单绕过: 1、截断攻击,比如a.asp%00.gif等 2、配合解析漏洞 具体可以参见 Syclover的文章 《Upload Attack Framework》,这篇文章对上传绕过做了非常详细的总结和演示 [中国联通沃音乐某站任意文件上传getshell](http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0195299.html) [中国南方航空公司某站存在任意文件上传漏洞(Windows技巧绕过限制)](http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0190447.html) [上海市通讯管理局某系统文件上传漏洞获得webshell并可以内网漫游](http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0175346.html) C、目录路径的检查 (对目录路径可进行0x00截断绕过;以及可以控制目录地址,上传文件夹的参数可控) [国元信托oa系统任意文件上传导致getshell](http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0205876.html) [万户OA多个漏洞打包(任意文件上传.XXE.SQL注射)](http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0173342.html) [开源证券主站存在任意文件上传目录遍历文件删除漏洞](http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0158259.html) [国海证券某系统存在任意文件上传漏洞已Shell](http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0146898.html) D、检测文件内容是否包含恶意代码 这种方式主要检查图片文件的幻数,比如GIF的值为GIF89a,后端代码会检测改值判断是否为GIF图片文件,想要绕过只要在幻数后面加上一句话木马就行。 其余还有文件相关信息的检查,文件加载检查 [五矿某系统弱口令导致任意文件上传可入内网](http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0163482.html) ### 03、上传文件的分类与总结 1、上传文件是PHP、JSP、ASP等脚本代码,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行; 2、上传文件是crossdomain.xml,导致可以控制Flash在该域下的行为(其他通过类似方式控制策略文件的情况类似); 3、上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行植入到pc中。 4、上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。 在大多数情况下,文件上传漏洞一般都是指“上传的Web脚本被服务器解析从而获取网站shell权限”,也就是webshell,要完成上传漏洞攻击需要满足以下几个条件: 1、上传的文件能够被Web容器解释执行,所以文件上传后所在的目录需要解析器可以执行目录下的文件,也就是说文件目录必须在web容器覆盖路径内才行。 2、用户可以直接通过浏览器进行访问这个shell文件,如果web容器不能解析这个文件,那么也不能算是漏洞。 3、最后,上传的shell文件如果被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致攻击不成功。 ### 04、修复与防御 如何杜绝此类漏洞,其实需要根据攻击手段来分部进行,以上总结了如何绕过文件上传,实际上可以根据每种绕过手段针对的进行防御。 1、设置文件上传的目录设置为不可执行 2、使用白名单方式检查文件类型。处理图片可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的恶意代码。 3、对文件进行随机性且不可猜解的重命名。 4、不能有本地文件包含漏洞及解析漏洞。(解析漏洞后面会讲到)

上一篇 :
下一篇 :
讨论 (1)
mb_sklejszv 2019-5-27
 举报
666666666
沪ICP备16048531号-1
沪公网安备 31011502006611号