【web安全】文件上传漏洞攻击方法有什么

2021-01-21 13:53发布

4条回答
freediandianer
2楼 · 2021-01-21 18:53

客户端检测绕过(js检测):
利用firebug禁用js或使用burp代理工具可轻易突破。
服务端MIME检测绕过(Content-Type检测):
使用burp代理,修改Content-Type的参数
服务端扩展名检测绕过:
文件名大小写绕过,例如Php,AsP等类似的文件名
后缀名字双写嵌套,例如pphphp,asaspp等
可以利用系统会对一些特殊文件名做默认修改的系统特性绕过
可以利用asp程序中的漏洞,使用截断字符绕过
可以利用不再黑名单列表中却能够成功执行的同义后缀名绕过黑名单的限制
可以利用解析/包含漏洞配合上传一个代码注入过的白名单文件绕过

等等同学
3楼 · 2021-01-21 18:53

首先,上传的文件能够被Web容器解释执行。所以文件上传后所在的目录要是Web容器所覆盖到的路径。
其次,用户能够从Web上访问这个文件。如果文件上传了,但用户无法通过Web访问,或者无法得到Web容器解释这个脚本,那么也不能称之为漏洞。
最后,用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致攻击不成功。

防范文件上传漏洞常见的几种方法。

1、文件上传的目录设置为不可执行

只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。

2、判断文件类型

在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。

3、使用随机数改写文件名和文件路径

文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。

4、单独设置文件服务器的域名

由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。


天天天天
4楼 · 2021-01-28 09:08

文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。

梵梵
5楼 · 2021-01-28 10:11

很多开发者仅仅通过使用 javascript 来防御非法文件上传 , 这样验证对于一些普通用户防 止上传错误还可以 , 对专业的技术人员来说 , 这是非常低级的验证 . 攻击者可以通过非常多的 方法来突破前端验证  , 下面举两个例子 :

1. 使用 FireBug

FireBug 是一款开源的浏览器插件 , 它支持 Firefox,Chrome 等浏览器 . 它可以让 Web 发者轻松地调试  HTML、javascirpt   AJAX、 CSS等前端脚本代码  . 正是因为 FireBug 功能强 大, 所以也成为了黑客的必备利器   .

如何使用 FireBug 绕过客户端检测 .

当单击提交按钮后 ,Form 表单将会触发 onsubmit 事件 ,onsubmit 事件将会调用 checkFile 函数 .checkFile 函数将会检测文件扩展名是否合法 , 并返回一个布尔值 , 如果 checkFile 函数返回 true, 则表单提交 , 反之则拦截要上传的文件 . 知道这一点后 , 可以用 FireBug 将 onsubmit 事件删除 , 这样就可以绕过 javascript 函数验证 .

2. 中间人攻击

中间人攻击和使用 FireBug 的方法完全不同 ,FireBug 是删除客户端的 javascript 验证 , 而使用 Burp Suite 等抓包软件则是按照正常的流程通过 javascript 验证 , 然后在传输中的 HTTP层做修改 .

首先把木马文件的扩展名字改为一张正常图片或文档的扩展名 , 如 jpg 扩展名 , 在上传 时使用 Burp  拦截上传数据 , 再将其中的扩展名 jpg  修改成 jsp, 就可以绕过客户端验证 .

通过以上例子  , 大家可以看出前端脚本验证是一种非常不可靠的验证方式  , 不管是对文 件上传 、XSS还是别的漏洞来说都是如此 , 当然这并不是说完全不需要做前端验证 , 而是要把 前端验证和服务器端验证相结合   .


相关问题推荐

  • 回答 4

    防御xss攻击需要重点掌握以下原则:在将不可信数据插入到HTML标签之间时,对这些数据进行HTML Entity编码。在将不可信数据插入到HTML属性里时,对这些数据进行HTML属性编码。在将不可信数据插入到SCRIPT里时,对这些数据进行SCRIPT编码。在将不可信数据插入到...

  • 回答 12

    1.1 Web应用的漏洞分类1、信息泄露漏洞信息泄露漏洞是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。造成信息泄露主要有以下三种原因:–Web服务器配置存在问题,导致一...

  • 回答 7

    XSS 攻击有两大要素:攻击者提交恶意代码。浏览器执行恶意代码。针对第一个要素:我们是否能够在用户输入的过程,过滤掉用户输入的恶意代码呢?输入过滤在用户提交时,由前端过滤输入,然后提交到后端。这样做是否可行呢?答案是不可行。一旦攻击者绕过前端过...

  • 回答 10

    什么是XSS:XSS:Cross site script(跨站脚本) (缩写应该是css,为了和CSS(层叠样式表)做区分所以叫XSS)概念:黑客通过HTML注入篡改网页,插入恶意脚本,当用户在浏览网页时,实现控制用户浏览器行为的一种共计方式。常见危害:盗取用户信息、钓鱼、制造蠕虫...

  • 回答 8

    你应该是问的SQL注入吧!Sql注入攻击原理:使用用户输入的参数拼凑sql查询语句,使用户可以控制sql查询语句。预防方法,使用预编译语句,绑定变量,使用安全的存储过程,检查数据类型,使用安全函数。...

  • 回答 4

    可以检测出你网站中存在的漏洞 然后提示你 哪边需要加固一下什么的 主要是为了提高你网站的安全性吧,

  • 回答 5

    1.渗透目标渗透网站(这里指定为www.xxx.com)切记,在渗透之前要签订协议。2.信息收集建议手动检查和扫描器选择同时进行。2.1 网站常规检测(手动)1:浏览www.xxx.com1. 初步确定网站的类型:例如银行,医院,政府等。2. 查看网站功能模,比如是否有论坛,...

  • 回答 4

    如何防御XSS攻击?1. 对输入内容的特定字符进行编码,例如表示 html标记的 < > 等符号。 2. 对重要的 cookie设置 httpOnly, 防止客户端通过[removed]读取 cookie,此 HTTP头由服务端设置。 3. 将不可信的值输出 URL参数之前,进行 URLEncode操作,而对于从 ...

  • 回答 2

    解决方案请记住两条原则:过滤输入和转义输出。具体执行的方式有以下几点:第一、在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等;第二、在输出方面,在用户输内容中使用;标签,标签内的内容不会解释,...

  • 回答 3

    常见的 XSS 攻击有三种:反射型XSS攻击、DOM-based 型XXS攻击以及存储型XSS攻击。1.反射型XSS攻击反射型 XSS 一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者...

没有解决我的问题,去提问