探讨:web上存漏洞及原理分析、防范方法

网站提供上存功能,是很多站点经常会有功能,商城,论坛还有常见一些网盘站点。常见互联网上面,我们也是经常听说,某某站点出现上存漏洞,某某开源项目有上存漏洞。 从互联网开始出现动态程序,上存漏洞像幽灵一样,频繁的出现在各种系统中。为什么,一个上存漏洞会这么频繁出现呢。而且,有些系统反复修补,多次还没有修补成功!其实主要问题,还是出现在上存原理上面。我们先看看,上存过程。
网站上存过程分析


代码如下:

<?php
header("Content-type: text/html; charset=utf-8");
if($_FILES)
{
 echo '<pre>';
 var_dump($_FILES);
 echo '</pre>';
}
?>
<form action="" enctype="multipart/form-data" method="POST">
<input type="file" name="txt" size="50">
<input name="Submit" type="submit" value="提交" >
</form>

以上是个简单测试例子,我们看看


我们来分析下:
name来自 上存时候选择文件名称
type 是文件类型, 这个类型那里来的呢?呵呵,这里非常关键的。 很多时候,很多同人会认为,这个是服务器自动判断生成的。 如果是这样想,觉得也有可能。 php 封装了上存,它自带类库好像可以的。  但是,反过来想想,你随便选择个什么格式文件,都会有格式类型。这样一想,我们推断这个值,可能也来自用户输入的。 我们来抓包看看我们类型。

type值 也来自,用户输入值了。
size来自程序计算上存文件大小,这个是自动计算的。 相比我们都清楚的。

你说这么多有啥样呢?
想必有朋友开始问了,我上面分析上存文件格式 ,跟开发出现漏洞有什么关联呢。 其实,我们想想,上面说的,一个文件名称name属性,以及文件类型type属性。 在我们上存文件,后端处理时候,会经常用到的。 作为开发者,在使用这2个变量,一定要继续执行“一切输入代码是有害的”原则。你在使用时候,要把它当作,跟其它get,post 获取变量一样处理。 要检测,过滤一切输入变量。
我们经常做功能是,限定用户输入必须是某种格式文件,然后保存为该格式。分析到这里,下面有很多需要继续分析地方,今天先提出大纲。接下来会分析这样常见3类上存漏洞。
1.使用用户文件名,生成文件,特殊字符过滤不严格,导致文件生成出现漏洞
2.移动文件目录时候,由于采用用户传入的文件名拼接,生成到错误目录
3.相信用户输入type 类型,直接将用户文件名保存为文件

(0)

相关推荐

  • 浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)

    我们通过前篇:<浅谈web上存漏洞及原理分析.防范方法(安全文件上存方法)>,已经知道后端获取服务器变量,很多来自客户端传入的.跟普通的get,post没有什么不同.下面我们看看,常见出现漏洞代码.1.检测文件类型,并且用用户上存文件名保存 复制代码 代码如下: if(isset($_FILES['img'])){    $file = save_file($_FILES['img']); if($file===false) exit('上存失败!'); echo "上存成功!&qu

  • 浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)

    这类漏洞,主要是可以读取用户传入路径名称,采用不正确的过滤方法,导致恶意用户,将文件上存到非预期的地方,带来安全隐患. 其实,我们抓住几个地方即可,我们先来分析下,既然用户要上存文件,而且文件将是多种多样格式:可能有的文件内容与用户传入格式不一致,有的文件内容还夹杂木马代码. 那么,我们让用户上存文件,跟站点文件做一个分别授权,做隔离. 让保存上存目录独立开来,目录权限只读不能执行这一步从系统设计加以授权,无论你上次什么文件,都不可能执行到.就算我不做任何检测,你的文件都上存到这里了,也不会对我

  • 探讨:web上存漏洞及原理分析、防范方法

    网站提供上存功能,是很多站点经常会有功能,商城,论坛还有常见一些网盘站点.常见互联网上面,我们也是经常听说,某某站点出现上存漏洞,某某开源项目有上存漏洞. 从互联网开始出现动态程序,上存漏洞像幽灵一样,频繁的出现在各种系统中.为什么,一个上存漏洞会这么频繁出现呢.而且,有些系统反复修补,多次还没有修补成功!其实主要问题,还是出现在上存原理上面.我们先看看,上存过程.网站上存过程分析 复制代码 代码如下: <?phpheader("Content-type: text/html; chars

  • JavaScript注入漏洞的原理及防范(详解)

    初次接触: 初次接触JavaScript注入漏洞后,如果不对这种漏洞的作用机理仔细分析并提取出其发生的某种模式,你就不能做到快速的发现项目中可能存在的所有注入风险并在代码中防范. 发生模式: JavaScript注入漏洞能发生作用主要依赖两个关键的动作,一个是用户要能从界面中注入JavaScript到系统的内存或者后台存储系统中:二是系统中存在一些UI会展示用户注入的数据. 比如注入漏洞最常见的就是发生在各种类型的名字中,比如系统中的人名等等,因为名字往往会在各种系统上显示,如果在某个用户输入名

  • WEB上调用HttpWebRequest奇怪问题的解决方法

    今天做了个在局域网的某客户端取得该局域网的公网IP的小程序,方法是通过登陆外网,让外网告诉你所在局域网的公网IP是多少,方法如下: 复制代码 代码如下: Uri uri = new Uri("http://www.jb51.net/");  HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);  req.Method = "POST";  req.ContentType = "applic

  • 你不知道的文件上传漏洞php代码分析

    漏洞描述 开发中文件上传功能很常见,作为开发者,在完成功能的基础上我们一般也要做好安全防护. 文件处理一般包含两项功能,用户上传和展示文件,如上传头像. 文件上传攻击示例 upload.php <?php $uploaddir = 'uploads/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); if (move_uploaded_file($_FILES['userfile']['tmp_name'],

  • js实现图片上传预览原理分析

    目前网上有很多支持图片上传时进行预览的插件,功能完备,界面优雅,使用起来也很方便.一直以来也就只是用用,没有想过这些插件背后的实现原理.趁着今天有点时间,也来学习学习. 追根溯源 设想 一开始,按照我的思路,预览可能是这么来实现的.本地选中一张图片,嵌入html的同时会显示图片的本地的绝对路径,然后通过js简单的进行设置,应该就可以实现预览效果了. 但是实际上,目前只有低版本的IE浏览器才能实现这么个效果.究其原因是浏览器厂商为了进一步强化安全,限制了file标签直接读取本地路径的能力,在HTM

  • linux磁盘管理软RAID的实现原理分析和方法分享

    1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. RAID分为几个不同的等级,各个不同的等级均在数据可靠性及读写性能做了不同的权衡.实际工作中根据自己的业务需求选择不同的RAID方案. 2 RAID的实现方式 外接式磁盘阵列:通过扩展卡提供适配能力内接式RAID:主板集成RAID控制器安装OS前在BIOS里配置软件RAID:通过OS实现 3 标准的R

  • c病毒程序原理分析(防范病毒 c语言小病毒示例)

    病毒的特点: 病毒的最大特点就是自我复制,从病毒的分类来说有很多种,这里我们将介绍最流行的附加式病毒,它通过对正常的文件进行改写,增加来实现其自我复制的目的.从程序的角度来说,我们要做的事情有两件: 1,让程序能够将自己在不影响其它程序本身工作的情况下复制给其它程序,使它具备继续复制的能力. 2,在一定条件下使其产生某种发作效果.其实第一件事情实际上可以看成对文件进行复制,把病毒源文件的功能函数全部放到被感染文件的最后,同时在被感染文件中调用这个函数 下面给出c语言的实现过程:1,主程序调用病毒

  • 实例分析ASP上传漏洞入侵实战及扩展

    [上传漏洞欺骗技术] 网络上许多程序都有着上传漏洞,比如任我飞扬整站程序.动感购物商城.秋叶商城.惠信新闻系统等.本文主要讲解上传漏洞的入侵实战以及一些扩展利用.首先我们要获得客户端和服务器之间传递的数据,事先准备好一个ASP木马准备上传,当然不可能成功,我们要的就是这中间我们向服务器提交的数据.一般用WsockExpert来获得数据,由于数据太多只能把关键部分发出来如下: POST /bbs/upfile.asp HTTP/1.1 --. 省略了N多没用信息 Content-Length: 1

随机推荐