文件上传漏洞

  • 上传漏洞
    • 解析漏洞
      • 常见的Web容器有IIS、Nginx、Apache、Tomcat等,下面将以IIS、Apache 容器为例讲解。
      • IIS解析漏洞
        • 当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当作 asp文件来解析

        • 当文件为*.asp;1.jpg 时,IIS 6.0同样会以ASP脚本来执行

      • Apache解析漏洞

        • PHP CGI解析漏洞
          • Nginx是一款高性能的Web服务器,通常用来作为PHP的解析容器,Nginx也曾经被曝过两个“解析漏洞”,比如,访问 htp://www.xxser.com/1.jpg/1.php,此时的1.jpg 会被当作PHP脚本来解析,如图6-6所示。

          • 此时的1.php是不存在的,却可以看到1.jpg已经按照PHP脚本来解析了,问题就出现在这个“1.php”上( 1.php并不是特定的,可以随意命名).这就意味着攻击者可以上传合法的“图片”(图片木马),然后在URL后面加上“/xxx.php”,就可以获得网站的 WebShell.
    • 绕过上传漏洞
      • 程序员在防止上传漏洞时可以分为以下两种。
        • 客户端检测:客户端使用JavaScript检测,在文件未上传时,就对文件进行验证;
        • 服务器端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,甚至有些程序员检测文件中是否嵌入恶意代码。
      • 一句话木马

      • 中间人攻击
        • 首先把木马文件扩展名改为一张正常图片的扩展名,比如JPG扩展名,在上传时使用BurpSuite拦截上传数据,再将其中的扩展名JPG修改为PHP,就可以绕过客户端验证。

      • 服务器端检测
        • 白名单与黑名单
          • 黑名单过滤
            • 攻击者可以使用很多的方法绕过黑名单检测

          • 白名单过滤

        • MIME验证
          • MIME类型用来设定某种扩展名文件的打开方式,当具有该扩展名的文件被访问时,浏览器会自动使用指定的应用程序来打开。如 GIF图片MIME为image/gif,CSS文件 MIME类型为text/css。
        • 目录验证

          • 这段代码是引发漏洞的关键点,因为在HTML代码中有一个隐藏标签<input type="hidden"name = "Extension"value="up"/>,这是文件上传时默认的文件夹,而我们对此参数是可控的,比如:使用FireBug 将 Value值改为 pentest.asp,并提交上传一句话图片木马文件。

          • 程序在接收到文件后,对目录判断,如果服务器不存在 pentest.asp目录,将会建立此目录,然后再将图片一句话密码文件写入pentest.asp目录,如果Web容器为IIS 6.0,那么网页木马会被解析。
        • 截断上传攻击

    • 修复上传漏洞
      • 上传漏洞最终的形成原因主要有以下两点
        • 目录过滤不严,攻击者可能建立畸形目录;
        • 文件未重命名,攻击者可能利用Web容器解析漏洞。
      • 防御手段
        • 接收文件及其文件临时路径。
        • 获取扩展名与白名单做对比,如果没有命令,程序退出。
        • 对文件进行重命名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值