文件上传解析漏洞
文件上传漏洞
文件上传漏洞是指网络攻击者将可执行文件上传到服务器并执行。这里上传的文件可能是木马、病毒、恶意脚本等。
由于程序员对用户文件上传的控制不够或处理缺陷,用户可以将可执行的动态脚本文件超出自身权限上传到服务器。
例如,如果您使用服务器,并使用ASP作为服务器端动态网站环境,那么在您网站的上传功能中,您一定不能允许用户上传ASP类型的文件,否则他们会在您的服务器上上传ASP文件。该文件可以由他随意修改。因此,文件上传漏洞造成的危害往往是毁灭性的。 、 、 、 Nginx等已暴露文件上传漏洞
文件上传漏洞危害
上传漏洞比 SQL 注入或 XSS 风险更大。如果Web应用存在上传漏洞,攻击者上传的文件是Web脚本语言,服务器的Web容器解释执行用户上传的脚本,从而导致代码执行。如果上传的文件是Flash的策略文件.xml,黑客就可以利用它来控制Flash在此域中的行为。
如果上传的文件是病毒或木马文件,黑客可以诱骗用户或管理员下载并执行它。如果上传的文件是钓鱼图片或包含脚本,则会在某些版本的浏览器中作为脚本执行,用于钓鱼和诈骗。攻击者甚至可以直接上传一个到服务器来完全控制系统或导致系统崩溃。
文件上传漏洞原理
大多数网站和应用系统都有上传功能,但是程序员在开发任意文件上传功能时,并没有考虑文件格式后缀的合法性验证,或者是否只在前端通过js进行后缀验证。
此时,攻击者可以将网站脚本语言对应的恶意代码动态脚本,如(jsp、asp、php、aspx文件后缀)上传到服务器,从而访问这些恶意脚本中包含的恶意代码,执行动态分析并最终达到执行恶意代码的效果,进一步影响服务器安全。
文件上传漏洞满足条件
1.文件上传功能可以正常使用
2.可以知道上传文件路径
3.上传的文件可以访问
4.上传的文件可以执行或包含
文件上传包分析
-:上传内容的大小
:上传内容的最大长度
: 上传文件的名称
-Type:上传文件类型
请求包中的乱码字段就是上传文件的内容。
文件上传漏洞绕过技术
1、客户端验证(js检测):
一般在网页上编写JS脚本,通过JS来检测并验证上传文件后缀名的合法性。
检查扩展程序是否合法时,有两种策略:白名单策略和黑名单策略。
判断方法:浏览加载文件时,点击上传按钮之前,弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,不允许上传数据此时已经发送数据包了,所以可以通过抓包来判断,如果弹出不允许上传,但没有抓到数据包,那么就是前端验证。其实你也可以直接查看网页的源代码。如果源码中没有js前端验证,那么一定是后端验证。
绕过方法:这个限制是在客户端实现的,这个限制是形同虚设。你可以通过传输普通文件改变数据包来绕过它,甚至可以尝试通过关闭JS来绕过它。
黑白名单机制:
黑名单:哪些内容不允许上传?黑名单中的文件扩展名是非法的。
白名单:仅允许上传的内容。不在白名单中的文件扩展名是非法的。
白名单比黑名单更安全
2、服务端检测:
检查类型(内容类型)
校验后缀(校验后缀为主流)
检查文件头
绕过方法:如果将代码文件的后缀更改为服务器认为安全的另一个后缀,然后利用解析漏洞让其根据脚本文件进行解析,最终的目的就达到了。
服务器端MIME检测绕过(-Type检测)
HTTP协议规定,上传资源时,添加一个文件来标识文件类型。这个动作是由浏览器完成的。服务器可以检查此类型,但这仍然不安全,因为可以发送 HTTP。作者或者中间人可以随意修改,但是加一层保护也能起到一定的效果。
绕过方法:使用burp代理并修改-Type参数。
文本/纯文本(纯文本)
text/html(HTML 文档)
文本/(js代码)
/xhtml+xml(XHTML 文档)
图像/gif(GIF 图像)
图像/jpeg(JPEG 图像)
图像/png(PNG图像)
视频/mpeg(MPEG 动画)
/八位组-(二进制数据)
/pdf(PDF 文档)
/(编程语言)该语言的代码
/(Word文件)
/(RFC 822 表格)
/(HTML电子邮件的HTML形式和纯文本形式,相同的内容用不同的形式表达)
/x-www-form-(POST方式提交的表单)
/form-data(提交POST时文件上传附带的表单)
服务器端扩展检测绕过:
当文件上传到服务器时,会检查文件名的扩展名。如果不合法,则拒绝上传。检查扩展程序是否合法时,有两种策略:黑名单策略和白名单策略。
白名单策略更加安全。通过将上传类型限制为我们接受的类型,可以更好地保证安全性,因为有了黑名单我们就可以使用各种方法进行注入和突破。
绕过方法:
文件名大小写绕过,例如 Php、AsP 等类似文件名
例如双写嵌套后缀名等。
可以利用系统默认修改一些特殊文件名的功能来绕过
可以利用asp程序中的漏洞,利用截断字符来绕过
可以通过使用不再在黑名单中但可以成功执行的同义后缀来绕过黑名单限制。
可以通过上传代码注入的白名单文件来绕过解析/包含漏洞。
1.旧版本IIS的目录解析漏洞。如果网站目录中有/.asp/目录,那么该目录下的所有内容都会被解析为asp脚本。
2、老版本IIS分号漏洞:IIS在解析文件名时可能会丢弃分号后面的内容,所以我们在上传时可以在分号后面添加分号内容来避免黑名单过滤,例如a. ASP;jpg
3.旧版本存在空格和点漏洞。文件名类似于 a.php。而a.php[space]存储后会去掉点和空格,这样添加这两个东西就可以突破过滤上传成功。并作为 php 代码执行
4.nginx空字节漏洞 xxx.jpg.php 此类文件名会被解析并作为PHP代码运行
5、解析漏洞,上传a.php.rar、a.php.gif等文件名可以避开PHP文件的过滤机制。不过,由于解析文件名时是从右向左读取文件名的,所以如果遇到无法识别的扩展名就会被跳过。 rar等扩展名无法识别,因此类型直接识别为php,从而达到注入php代码的目的。
服务器端文件头内容检测绕过:
此方法利用了以下事实:每种特定类型的文件都有不同的开头或标志。例如可以通过php的()函数来检测。
通过检查前几个字节,您可以判断它是否是图像文件。
不同类型的文件都有相应的文件类型签名(也称为类型幻数,简称文件头)。例如PNG的文件头为十六进制89 50 4E 47 0D 0A 1A 0A; GIF 为 47 49 46 38 37 61。JPG 为 FF D8 FF E0。
通过向文件添加普通文件标识符或其他关键字符来绕过。
只需将相应的幻数头字节添加到上传脚本中,php引擎就会
文件,然后访问xx.jpg/.php或xxx.jpg/1.php,该目录下会生成一句话木马shell.php文件。
nginx
Nginx 版本如下:
0.5.*,0.6.*,0.7
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。