OWASP TOP10 Web应用十大安全风险_2017

OWASP TOP10 Web应用十大安全风险

 

A1 - Injection 注入

介绍:

简单来说注入往往是程序缺少对输入进行安全性检查所引起的,攻击者把一些包含指令的数据发送给解释器,解释器会把收到的指令转换成指令执行。

常见的注入包括SQL注入、OS Shell、LDAP、Xpath、Hibernate等等,其中SQL注入尤为常见。这种攻击造成的后果往往很大,一般整个数据库的信息都能被读取或篡改,通过SQL注入攻击者甚至能获得更多的包括管理员的权限。

危害:

注入可能导致数据丢失或数据破坏、缺乏可审计性 或是拒绝服务。注入漏洞有时甚至能导致完全接管主机。

实例参考

SQL注入防范:

1.使用参数化语句或者词法分析

$db = new mysqli("localhost", "user", "pass", "database"); 
$stmt = $mysqli -> prepare("SELECT priv FROM testUsers WHERE username=? AND password=?"); 
$stmt -> bind_param("ss", $user, $pass); 
$stmt -> execute();

2.对输入的特殊字符进行转义处理

<?php
$get=mysql_real_escape_string('提交的参数');
?>

A2 - Broken authentication and Session Management 失效的身份认证和会话管理

介绍:

与认证和会话管理相关的应用程序往往得不到正确的实施,这就导致攻击者破坏密码、秘钥、会话令牌、或利用实施漏洞冒充其他用户身份

危害:

这种漏洞可能导致部分甚至全部账户遭受攻击。一旦攻击成功,攻击者可以执行合法用户的全部操作。因此特权账户胡造成更大的破坏。

案例:

1.Web应用程序支持URL重写,把会话ID写在URL里

修改订单的会话ID可用其他人的会话和信用卡付账

2.应用程序超时设置不当。

当使用公共计算机后为注销账户直接关闭浏览器后。攻击者能使用相同的浏览器通过身份认证

3.内部或者外部攻击者进入数据库后,密码没有进行加密,所有用户密码都会被攻击者获得

防范:

使用内置的会话管理功能

通过认证的问候:

使用单一的入口点

确保在一开始登录SSL保护的页面


A3 – Cross-Site Scripting (XSS) 跨站

介绍:

当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞

详细介绍

危害:

攻击者能够在受害者浏览器中执行脚本,以劫持用户会话(窃取Cookie)、迫害网站、插入恶意内容(组建僵尸网络)、重定向用户、使用恶意软件劫持用户浏览器等。

简单来讲:就是可执行任意JavaScript能实现的功能

案例:

顺丰速运某重要后台XSS(已打管理后台并登录) | WooYun-2016-193478 | WooYun.org

防范:

1.验证输入:控制搜索框、登录框等的输入长度

2.转义输入输出:

<?php
$get=mysql_real_escape_string('提交的参数');
?>

A4 – Insecure Direct Object References 不安全的直接对象引用

介绍:

指向一个已经授权的用户,通过更改访问时的一个参数,从而访问到原本其并没有得到授权的对象。

危害:

这种漏洞能够损害参数所引用的所有数据。除非名字空间很稀疏,否则攻击者很容易访问该类型的所有数据。

案例:

step1:攻击者发现他自己的参数是6065,即?id=6065

step2:他可以直接更改参数为6066,即?id=6066

step3:这样他就可以直接看到6066的账户信息

防范:

1.使用基于用户或会话的间接对象访问,这样能防止攻击者直接攻击未授权资源

2.访问检查:对任何来自不信任源所使用的所有直接对象引用都进行访问控制

3.避免在URl或网页中直接引用内部文件名或数据库关键字

4.可使用自定义的映射名称来取代直接对象名

5.锁定网站服务器上的所有目录和文件夹,设置访问权限

6.验证用户输入的URL请求,拒绝包含./或../的请求。


A5 – Security Misconfiguration 安全错误配置

介绍:

安全错误配置可以发生在一个应用程堆栈的任何层面,包括平台、Web服务器、应用服务器、数据库、架构和自定义代码。攻击者通过访问默认账户、未使用的网页、未安装补丁的漏洞、未被保护的文件和目录等,以获得对系统未授权的访问。

危害:

系统可能在未知情况下被完全攻破,用户数据可能随着时间推移而全部被盗或者篡改。甚至有时,会导致整个系统被破坏。

案例:

1.Web服务器或者Web应用后台默认密码未更改,攻击者可以通过默认密码进入系统

2.目录列表在Web服务器上未被禁用,攻击者可以列出目录获取目录结构甚至自定义代码

3.应用服务器允许堆栈跟踪返回给用户,这样就暴露了网站的潜在漏洞,攻击者热衷收集错误消息里提供的额外信息。

Discuz!X前台任意文件删除漏洞重现及分析 - FreeBuf.COM | 关注黑客与极客

防范:

1.更改默认密码,敏感目录

2.及时获取Web应用程序的更新补丁

3.使用安全性可靠的Web应用框架

4.实施漏洞扫描和安全审计、提前预防安全隐患

5.使用Web应用提供的安全配置


A6 – Sensitive Data Exposure 敏感数据暴露

介绍:

许多Web应用没有正确保护敏感数据,如信用卡、身份验证凭据等。攻击者可能把这些数据卖给骗子进行诈骗犯罪等。

1.个人信息:姓名、身份证ID、电话号码、银行账户、驾驶证号码、社保卡号、护照号码等

2.网站登录的用户名、密码、SSL证书、会话ID、加密使用的密钥、

3.Web服务器的OS类型、版本信息、Web容器信息、数据库类型版本、使用的开源软件版本

危害:

数据泄露导致犯罪份子有可乘之机

案例:

8·19徐玉玉电信诈骗案_百度百科

防范:

对敏感数据必须进行加密存储、使用安全的加密算法


A7 – Missing Function Level Access Control 缺失的功能级别的访问控制

介绍:

又叫做限制URL访问失败。这个漏洞事实上也是与认证相关的,这个漏洞已经对URL的访问做了限制,但是却没有生效。

常见的错误是,我们在用户认证后只显示给用户认证过的页面和菜单选项,而实际上这些仅仅是表示层的访问控制而不能真正生效,攻击者能够很容易的伪造请求直接访问未授权的页面

危害:

攻击者能够很容易的把网址改成享有特权的页面,这样就可以使用匿名或者普通用户访问私人界面,从而提升未授权功能和相关数据信息

案例:

1.通过验证的非管理员用户可以访问管理界面

2.有些网页有action=参数,不同的操作需要不同的角色,如果没有对角色进行检查,这也是

防范:

1.检查管理权限的过程并确保能够容易进行升级和审计

2.对每个功能的访问,都需要明确的角色授权

3.检查每个功能分配的权限合理有效


A8 – Cross-Site Request Forgery (CSRF) 跨站请求伪造(CSRF)

介绍:

由于浏览器自动发送会话Cookie等认证凭证,导致攻击者能够创建恶意的Web页面来产生伪造请求,这些伪造请求很难和合法的请求区分开。

尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站

危害:

攻击者能够让受害用户修改任何允许修改的数据,并执行任何用户允许的操作。修改密码、登录注销等

案例:

123456:李白的用户ID

741741:杜甫的用户ID

941941:白居易的用户ID

李白正在某银行网站给白居易转账,则有以下URL

http://www.abc.com/zhuanzhang?=amount=500&fromAccount=123456&toAccount=941941

杜甫构造一个请求,把李白账户中的钱转到自己账户中(并且修改了金额为5000)

<img http://www.abc.com/zhuanzhang?=amount=5000&fromAccount=123456&
toAccount=741741" width="0" height="0">

杜甫在他控制的多个网站中嵌入这段代码,李白只要登录了银行网站,又恰巧访问了杜甫控制的网站,李白的5000块钱就会转给杜甫

防范:

1.给每个HTTP请求添加一个不可预测的令牌,并保证该令牌对每个合法用户来说是唯一的

将独有的令牌包含在隐藏字段中,通过HTTP请求发送,避免在URL中暴露出来

2.要求用户重新认证或判断他是一个真实的用户


A9 – Using Components with Known Vulnerabilities 使用已知漏洞的组件

介绍:

中间件如 IIS、Apache、Tomcat等Web容器;WordPress、discuz、Struts等开源框架

若是存在已知的漏洞但是未更新版本或者打补丁,就会被攻击者利用已知漏洞攻破系统

危害:

攻击者可利用已知版本漏洞轻松进入系统获取权限

案例:

Discuz!X前台任意文件删除漏洞重现及分析

Struts 2 S2-053漏洞分析(附POC)

防范:

识别正在用的组件版本,及时获取新版本和安装补丁


A10 – Unvalidated Redirects and Forwards 未验证的用户重定向和转发

介绍:

在Web应用中重定向是极为普遍的,并且重定向目的都是带有用户输入参数的目的URL,而如果这些重定向未被验证,那么攻击者就可以引导用户访问攻击者想让他们访问的站点

同样,转发也是极为普遍的,本质上转发是在同一个应用中对一个新页面发送请求,并且有时是用参数来定义目标页面的。同样,如果参数未被验证,那么攻击者就可以利用其绕过验证或是授权检查

危害:

攻击者可以通过重定向实施钓鱼攻击,木马攻击(挂马网站)、不公平的黑帽SEO,通过转发可以绕过访问控制

案例:

腾讯某站点url重定向被钓鱼网深度利用 | WooYun-2015-132358 | WooYun.org

防范:

避免使用重定向和转发

使用session传值

 

编辑于 2017-11-16
posted @ 2020-04-09 22:23  bonelee  阅读(2238)  评论(0编辑  收藏  举报