OWASP TOP 10(2021)之注入漏洞(SQL注入和XSS注入)

目录

一、SQL注入

1. 漏洞概述及原理

2. 漏洞可能造成的危害

3. 漏洞防范

4. SQL注入的分类与检测

5. 从攻击者的角度,如何绕过SQL注入防范呢?

(1)对于关键字的绕过

(2)缓冲区溢出

二、XSS攻击

1. 漏洞概述及原理

2. XSS攻击分类和检测

3. 漏洞可能造成的危害

4. 漏洞防范

5. 从攻击者的角度,如何绕过防范呢?

6. 从黑客角度,如何利用漏洞进行攻击,不同类型的XSS漏洞利用方式上有何区别?

三、参考


OWASP(Open Web Application Security Project),开放式web应用安全项目,而OWASP TOP 10是面向开发人员和 Web 应用程序安全性的标准意识文档,它代表了关于 Web 应用程序最关键安全风险的广泛共识。说白了,就是总结了国际公认的关于web安全的排名前十大安全风险。

2021年的OWASP TOP 10为

A01:2021-破碎的访问控制
A02:2021-加密故障,以前称为敏感数据暴露
A03:2021-注入
A04:2021-不安全的设计
A05:2021-安全配置错误
A06:2021-易受攻击和过时的组件
A07:2021-标识和身份验证失败
A08:2021-软件和数据完整性故障
A09:2021-安全日志记录和监控故障,以前是日志记录和监控不足
A10:2021-服务器端请求伪造SSRF

今天,我们主要学习第三个:注入,主要讲SQL注入与XSS注入。

一、SQL注入

1. 漏洞概述及原理

SQL注入攻击以网站数据库为目标,利用Web应用程序对用户所输入的数据过滤不完全的缺陷,输入精心构造的字符串,导致攻击者输入的恶意SQL语句被执行,从而非法访问网站数据库内容或在数据库中执行命令,严重危害网站的安全。

2. 漏洞可能造成的危害

(1)数据库信息泄露:攻击者可以通过SQL注入获取服务器的库名、表名、字段名、数据库版本,操作系统,从而获取到整个服务器中的数据,对网站用户的数据安全有极大的威胁。

(2)登陆认证被绕过

(3)数据库被恶意操作:攻击者对数据库进行任意的增删改查操作,如果是黑产分子,甚至是对数据库进行脱库,进行数据贩卖。

(4)网站被挂马:如果网站目录存在写入权限,可以在网站中写入木马,攻击者进而可以对网页进行纂改,发布一些违法信息等;

(5)经过提权等步骤,服务器的最高权限被攻击者获取,攻击者可以远程控制服务器,安装后门,得以修改或控制操作系统等。

3. 漏洞防范

(1)增强输入验证过滤,使用白名单和黑名单

(2)特殊字符转义

(3)预编译

(4)尽量不要使用动态拼装的SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

(5)使用WAF等专业的防护软件系统

(6)数据库重要信息(比如密码)加密存储,并及时做好备份

(7)遵循最小特权原则。只过访问数据库的Web应用提供所需的最低权限。

(8)应用的异常信息应该给出尽可能少的提示。比如不要随意开启生产环境中 Webserver的错误显示,减少报错SQL注入攻击

4. SQL注入的分类与检测

一般来说,只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在 Sql 注入。如果程序员没有足够的安全意识,没有进行必要的字符过滤,存在SQL注入的可能性就非常大。

检测方法:手工注入、SQL注入工具(如SQLmap)等

单引号判断法:在参数后面加上单引号,如果页面返回错误,则存在 Sql 注入。

数字型注入:and 1=1  and 1=2  若两个链接返回的页面不同,说明该网页存在注入漏洞

字符型注入:'and '1'='1   'and '1'='2   字符串一般需要通过单引号来闭合的

(或者在URL或者表单中输入0 or 1,如果可以查到数据,说明是数字型注入;如果输入0' or 1#,查到数据说明是字符型注入)

联合查询:需要前面的语句是false,然后才能执行后面的查询语句

盲注

        基于bool的盲注:通常用函数length(),返回长度,ascii(),返回ASCII值,substr(string,a,b),返回string以a开头,长度为b的字符串,count(),返回数量。

        基于时间的盲注:sleep,if(c,a,b)

报错型注入:强制数据库生成错误,为攻击者或测试人员提供优化其注入的信息。

5. 从攻击者的角度,如何绕过SQL注入防范呢?

(1)对于关键字的绕过

如对and进行过滤,我们可以尝试:

1.对于and,or的绕过可以尝试一下&&,||,异或特殊符号注入

2.使用注释符绕过,比如: /*!and*/  uni/**/on  se/**/lect

3.大小写绕过: ANd UniOn SeleCt

4.双关键字绕过:ununionion seselectlect

5.关键字替换(在关键字中间可插入将会被WAF过滤的字符)

6.Unicode法:+变成%2B,空格符变成%20等

7.ASCII码法:U=chr(85),a=chr(97)等

(2)缓冲区溢出

二、XSS攻击

1. 漏洞概述及原理

XSS攻击,即跨站脚本攻击,是指攻击者利用Web程序对用户输入过滤不足的缺陷,把恶意代码(包括HTML代码和客户端脚本)注入到其他用户浏览器显示的页面上执行,从而窃取用户敏感信息、伪造用户身份进行恶意攻击。

2. XSS攻击分类和检测

(1)反射型XSS又称非持久性XSS,这种攻击往往具有一次性。攻击者通过邮件等形式将包含XSS代码的恶意链接发送给正常用户,诱骗其点击,当用户点击时,服务器接受该用户的请求并进行处理,然后把带有XSS的代码发送给用户。用户浏览器解析执行代码,触发XSS漏洞,敏感信息被盗取。

流程:

1.A经常浏览B建立的网站。B的站点允许A使用用户名和密码进行登录,并存储敏感信息(如银行账户信息)。

2.C发现B的站点包含反射型XSS漏洞。

3.C编写一个利用该漏洞的URL,并将其冒充成来自B的邮件发给A,诱导A点击。

4.A在已登录B的情况下,浏览了C提供的URL。

5.嵌入到URL中的恶意脚本因为B的XSS漏洞存在,得以在A的浏览器中执行,此脚本盗窃敏感信息,
然后在A完全不知情的情况下将敏感信息发送到了C的web站点。

(2)存储型XSS又称持久型XSS,攻击脚本存储在目标服务器的数据库中,具有更强的隐蔽性。攻击者在论坛、博客、留言板中,发帖的过程中嵌入XSS攻击代码,帖子被目标服务器存储在数据库中。当用户进行正常访问时,触发XSS代码。

流程:

1.B拥有一个Web站点,该站点允许用户发布信息和浏览已发布的信息

2.C注意到B的站点具有存储型XSS漏洞

3.C在B的站点网页上发布了一个热点信息,且信息中包含了恶意代码

4.当B和其他用户点击浏览该信息的时候,就受到了XSS漏洞攻击,
其会话cookies或者其他信息被C盗走

(3)DOM型XSS全称Document Object Model。通过修改页面的DOM结点数据信息形成的XSS攻击。不需要服务器参与,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代码,触发XSS漏洞。

检测方法:XSSer、beef 等工具

3. 漏洞可能造成的危害

(1)XSS 盗取 Cookie(保留用户信息以便简化登录手续、购物车追踪客户端状态)之后,利用 Cookie 会话劫持

(2)破坏页面结构

(3)篡改链接指向恶意URL,进行钓鱼攻击

(4)网站挂马

(5)XSS蠕虫

(6)利用XSS漏洞扫描用户内网、还能获取诸如浏览器版本、外网IP地址、浏览器安装的插件类型等信息

(7)控制受害者计算机向其他网站发起攻击等

4. 漏洞防范

(1)加强对输入数据的过滤(比如白名单检测、使用XSS filter过滤器)

(2)输出编码、转义:对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。

(3)前端渲染的时候,将代码和数据分开

(4)cookie防盗:http-only cookie  禁止javascript读取某些敏感的cookie,攻击者完成xss注入后无法窃取此cookie.

5. 从攻击者的角度,如何绕过防范呢?

大小写绕过、双写绕过、标签优先级绕过等

6. 从黑客角度,如何利用漏洞进行攻击,不同类型的XSS漏洞利用方式上有何区别?

反射型:要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。

存储型:不需要特制的链接来执行。黑客仅仅需要提交 XSS 漏洞利用代码(反射型XSS通常只在url中)到一个网站上其他用户可能访问的地方。这些地区可能是博客评论,用户评论,留言板,聊天室,HTML 电子邮件等等地方。一旦用户访问受感染的页,执行是自动的。受害用户是多个。

至此,SQL注入和XSS注入粗略地描述完毕。

初次学习,如有错误,欢迎指出,感谢!

三、参考

1. 常见web漏洞——SQL注入

2. XSS攻击及防御

3. XSS攻击常识及常见的XSS攻击脚本汇总

4. 面试问题如何预防xss攻击

5. OWASP top10 官网

你可能感兴趣的:(OWASP,TOP,10,for2021,Web安全,sql,安全,xss)