Web渗透-文件上传漏洞知识总结及漏洞复现

文件上传漏洞知识总结及漏洞复现

  • 文件上传概要
  • 文件上传漏洞成因
  • 文件解析漏洞
    • 路径截断
    • IIS 5.x/6.0解析漏洞
  • 绕过上传漏洞
  • 漏洞修复/应对方法
  • 文件上传漏洞复现

文件上传概要

Web应用程序通常会有文件上传功能,例如论坛的附件上传,上传图片/头像/Zip压缩包等,只要被Web应用程序允许上传文件,就可能存在文件上传漏洞。在不对被上传的文件进行限制/过滤或者限制被绕过,从而上传恶意文件、可执行脚本到服务器上,进一步导致服务器沦陷

如何确认Web应用程序是否存在上传漏洞呢?例如论坛由PHP开发,用户可上传头像,也就是图片文件,但是没有对图片格式进行验证,比如能上传.php文件,这就是一个上传漏洞,上传的文件被当做脚本成功解析,就代表有上传漏洞。

文件上传漏洞成因

  1. 服务器配置不当
    在不需要上传文件的情况下可导致任意文件上传,参考HTTP请求方法PUT

  2. 本地文件上传被绕过
    只在客户端浏览器上做了文件限制而没有在远程的服务器上做限制,只需要修改上传时发送的数据包就可以轻松绕过上传限制

    a.抓包看,禁用JS插件(这个插件用作文件上传本地验证),现上传一个恶意文件,如果是本地限制,执行过滤的就是浏览器的js插件,禁用后就能上传恶意文件
    b.如果是服务器限制,先把恶意文件传给服务器,然后服务器再返回过滤结果,这个时候单单禁用本地的js插件没什么用

  3. 过滤不严或被绕过
    有些网站使用上传黑名单过滤掉一些可执行文件脚本的后缀,但是黑名单不全或者被绕过,也可导致恶意文件上传。如果使用白名单,仅允许名单内所包含的文件格式上传会更加安全。

  4. 文件解析漏洞导致文件执行

  5. 路径截断

文件解析漏洞

解析漏洞是指web服务器因对http请求处理不当导致将非可执行的脚本,文件等当做可执行的脚本,文件等执行。该漏洞一般配合服务器的文件上传功能使用,以获取服务器的权限。
例如xxx.php.jpg看似是图片文件,实际解析被当做php文件

路径截断

上传的文件中使用一些特殊的符号,文件被上传到服务器时路径被这些符号截断,从而控制文件上传的路径。常见截断字符 \0 ? %00
例如xxx.php%00xx.jpg

IIS 5.x/6.0解析漏洞

  1. 目录解析
    文件夹名称中带有.asp .asa等可执行脚本文件的后缀,其目录内(这个文件夹内)的任何扩展名的文件都会被IIS当做可执行文件解析并执行
    例如:www.xxx.com/xx.asp/123.jpg
  2. 文件解析
    IIS6.0下,分号;后面的不被解析
    例如:www.xx.com/123.asp;jpg,实际被当做asp文件解析。6.0默认可执行后缀asp、asa、cer、cdx
    IIS7.0/7.2/Nginx0.8.3以下版本畸形解析漏洞
    在默认开启Fast-CGI情况下,访问http://www.xxx.com/xx.jpg/.php,被当做php解析
    Apache解析漏洞
    Apache对文件解析从右往左,如果遇到不可识别的后缀,再从左向右判断
    例如xx.php.owf.rar,因无法解析rar和owf,就会从左开始,当做php文件

绕过上传漏洞

  1. 本地黑名单验证:可以找到不在黑名单之内的扩展名
  2. 文件扩展名大小写转换,Asp、pHp,这一类在Windows依然会被web容器解析
  3. Windows系统下,如果文件名以"."或者空格结尾,系统会自动去除.和空格。如上传asp.服务器端接收文件在读写文件时会自动去除
  4. %00截断。 vir%00us.asp
  5. 服务器端MIME验证:用来设定某种扩展名文件的打开方式,当具有该扩展名的文件被访问时,浏览器会自动使用指定的应用程序来打开。如GIF图片MIME为image/gif, CSS文件MIME类型为text/css。上传时,程序会对文件MIME类型做验证。那么我就可以通过修改HTTP请求中的Content-Type,比如修改为image/jpeg,告诉服务器我传的是图片文件,实际上我是传php脚本

漏洞修复/应对方法

  1. 开源编辑器上传漏洞
    选择已经修复漏洞的新版本进行更新
  2. 本地上传限制绕过
    在服务器后台对上传的文件进行过滤
  3. 过滤不严/被绕过
    建议使用白名单
  4. 文件解析漏洞导致文件执行
    升级web服务器版本或者安装相应补丁
  5. 路径截断
    使用随机数改写文件名和文件路径,不使用用户定义的文件夹和路径
    还可以将上传文件限制在某一路径下,并且在文件上传的目录禁止解析
    除此之外

文件上传漏洞复现

DWVA平台

Web渗透-文件上传漏洞知识总结及漏洞复现_第1张图片1. 新建TXT文档,写下 一句话木马 ,后缀改为.php
eval()函数可以将括号内语句当做php语言进行执行。结合$_POST,QQQ为木马口令

2.网站安全等级调至中等
Web渗透-文件上传漏洞知识总结及漏洞复现_第2张图片
3. 找到文件上传模块
Web渗透-文件上传漏洞知识总结及漏洞复现_第3张图片
4. 选择浏览-----选中刚才写的.php后门木马上传

Web渗透-文件上传漏洞知识总结及漏洞复现_第4张图片

可以看到php文件上传失败了,原因就是系统为了安全,把php文件过滤掉了,只允许上传图片,那我们就迎合它,把文件后缀加上.jpg
Web渗透-文件上传漏洞知识总结及漏洞复现_第5张图片
再次上传,提示上传成功,并且显示出了后门木马的路径,那么我们就通过这个路径,运行它
Web渗透-文件上传漏洞知识总结及漏洞复现_第6张图片

Web渗透-文件上传漏洞知识总结及漏洞复现_第7张图片
看到空白页面,说明在执行成功
5. 利用渗透软件–中国菜刀或者是其他工具,我这里用的是蚁剑
Web渗透-文件上传漏洞知识总结及漏洞复现_第8张图片

右键添加数据把后门木马执行的链接贴进去—连接密码就是脚本里面写的$_POST[‘QQQ’]-----添加

双击链接就可以进入网站后台,成功拿到服务器系统目录与文件
Web渗透-文件上传漏洞知识总结及漏洞复现_第9张图片

你可能感兴趣的:(Web安全,web,安全)