2023年7月14日发(作者:)
⽂件上传漏洞分析和防御⽬录简介⽂件上传漏洞是指⽤户上传了⼀个可执⾏的脚本⽂件,并通过此脚本⽂件获得了执⾏服务端命令的能⼒。形成原因:服务器对⽤户上传的⽂件处理逻辑做的不够安全,导致脚本⽂件被执⾏。常见利⽤⽅式⽂件上传后常见安全问题:上传⽂件是Web脚本语⾔,服务器的Web容器解释并执⾏了⽤户上传的脚本,导致代码执⾏;上传⽂件是Flash的策略⽂件,⿊客⽤以控制Flash在该域下的⾏为;上传⽂件是并病毒、⽊马⽂件,⿊客⽤以诱骗⽤户或管理员下载执⾏;上传⽂件是钓鱼图⽚或包含了脚本的⽂件,在某些版本的浏览器中会被作为脚本执⾏,被⽤于钓鱼和欺诈;配合本地⽂件包含漏洞执⾏上传⽂件等。前端绕过JS绕过1、js代码检验⽂件后缀,⼀般是通过⽩名单、⿊名单进⾏限制绕过⽅法:直接删除或禁⽤js代码,重新上传即可绕过。MIME检测后端通过检测Content-Type来对上传⽂件进⾏处理常见Content-Type类型:常见的媒体格式类型如下:text/html : HTML格式text/plain :纯⽂本格式text/xml : XML格式image/gif :gif图⽚格式image/jpeg :jpg图⽚格式image/png:png图⽚格式以application开头的媒体格式类型:application/xhtml+xml :XHTML格式application/xml: XML数据格式application/atom+xml :Atom XML聚合格式application/json: JSON数据格式application/pdf:pdf格式application/msword : Word⽂档格式application/octet-stream : ⼆进制流数据(如常见的⽂件下载)application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)另外⼀种常见的媒体格式是上传⽂件之时使⽤的:multipart/form-data : 需要在表单中进⾏⽂件上传时,就需要使⽤该格式绕过⽅法:通过bp抓包拦截改包即可绕过。后端绕过⽂件头绕过后端通过对上传⽂件的⽂件头进⾏检测是否合法(例如要求上传PNG图⽚,则检查⽂件的头格式是否是PNG)绕过⽅法:在正常的图⽚后⾯添加脚本⽂件,copy /b + 即可绕过。绕过后缀限制⿊名单限制绕过:采⽤别名后缀进⾏绕过,上传.htaccess⽂件绕过(apache配置⽂件,低于2.3.8版本可⽤,上配置⽂件)、上传.⽂件(局限性很⼤)php⽂件后缀有:.等windows下可尝试 php::$DATA、php.、⼤⼩写等asp⽂件后缀:. 等jsp⽂件后缀有:. 等⽩名单限制绕过:1、0截断,在很多语⾔中,%00被认为是终⽌符例如上传:[0].png2、转换字符集造成的截断适合场景:PHP版本低于5.4;后端获取上传的⽂件后缀后对⽂件名进⾏字符集转换。原因:PHP在实现字符转换时通常使⽤iconv()函数,UTF-8在单字节时允许的字符范围是0x00~0x7F,如果转换的字符不在该范围内,则会造成PHP_ICONV_ERR_ILLEGAL_SEQY异常,低版本PHP在发⽣异常后不在处理后⾯字符,造成截断问题;5.4以上版本会返回false。3、web服务器解析漏洞1、IIS解析漏洞IIS 6存在两个解析漏洞:/*.asp/⽬录下的所有⽂件都作为ASP⽂件解析当⽂件名为; 会被解析为,”;“为截断符IIS7.0和IIS7.5php配置问题:⼀个⽂件路径后⾯加上/会将原来的⽂件解析为php⽂件。/2、Apache⽂件解析漏洞Apache对于⽂件名的解析是从后往前解析的,直到遇见⼀个Apache认识的⽂件类型为⽌。(apache1.x /2.x)例如: 被解析成3、Nginx fastcgiNginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7fastcgi在处理’.php’⽂件时发现⽂件并不存在,这时配置⽂件中_pathinfo=1发挥作⽤,这项配置⽤于修复路径,如果当前路径不存在则采⽤上层路径。为此这⾥交由fastcgi处理的⽂件就变成了’/’。最重要的⼀点是中的_extensions配置项限制了fastcgi解析⽂件的类型(即指定什么类型的⽂件当做代码解析),此项设置为空的时候才允许fastcgi将’.jpg’等⽂件当做代码解析。防御1、⽂件上传⽬录设置为不可执⾏2、判断⽂件类型3、使⽤随机数改写⽂件名和⽂件路径4、单独设置⽂件的服务器域名
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689308394a228429.html
评论列表(0条)