web安全及防御 - 逻辑错误漏洞 & 代码注入

2019-10-30  本文已影响0人  codingQi

一、逻辑错误漏洞

常见的逻辑漏洞:

1. 绕过授权验证

(1)水平越权:相同级别(权限)的用户或者同一角色的不同用户之间,可以越权访问、修改或者删除的非法操作。
(2)垂直越权:不同级别或不同角色之间的越权。

2. 密码找回逻辑漏洞

3. 支付逻辑漏洞

(1)商品数量为负数
(2)0元购买商品

4. 指定账户恶意攻击

主要就是封锁指定账户,图取其他利益。

二、代码注入

1. XML注入

XML是 The Extensible Markup Language(可扩展标识语言)的简写。XML最初设计的目的是弥补HTML的不足,后来逐渐用于网络数据的转换和描述。XML的设计宗旨是传输数据,并非显示数据。

XML注入是通过改写XML实现的,与XSS跨站漏洞相似,此漏洞利用成功的关键点就是闭合XML标签。

修复:只需要将预定义字符进行转义即可。

2. XPath注入

XPath即为XML路径语言,XPath基于XML的树状结构,提供在数据结构树中寻找节点的能力。简单的说,XPath就是选取XML节点的一门语言。

通过XPath注入攻击,攻击者可以攻击XML,XPath与SQL注入的方式类似。
//user[username/text()='admin' and password/text()='admin888' or 1=1]

笔者建议,对于一些敏感信息,不要使用XML传输,如果一定要使用XML,建议尽量使用密文传输。

XPath注入的预防是比较简单的,没有防御SQL注入那么复杂。最重要的是对预定义字符的转换。

3. JSON注入

即就是在json中插入恶意字符,破坏json结构。

如:
正常为"password": "admin888",如果将password的值改为admin"888,则结果为:"password": "admin"888"

防御:
只需要对其关键字符进行转义即可:"password": "admin\\"888"

4. HTTP Parameter Pollution(http参数污染)

  • 请求url上会有重复参数的时候。
  • 根据不同的语言和环境,对于http参数的重复字段的值取得不一样。
  • PHP取须后一项,Servlet取第一项。

http参数污染经常用来绕过一些Web应用防火墙(WAF)。简单来说WAF在脚本还未接收到请求之前就开始对数据进行校验,如果未发现恶意代码,则交给脚本处理,如果发现恶意代码,就进行拦截,不再交给脚本处理。

例如:
某个WAF防火墙模版定义数据中不允许出现select关键字,WAF取值验证时可能会选择第一项参数值,而脚本取值与WAF则不同,这样就有可能绕过WAF的数据验证。

PHP: News.php?id=1&id=select username, password from admin--

WAF取id值为1,而PHP取id值为select username, password from admin--

ASP.net: news.aspx?id=1;&id=s&id=e&id=c&id=t
而ASP.net将会把多个相同参数项的值连接在一起,这样http参数污染就极有可能绕过某些WAF防火墙。

上一篇 下一篇

猜你喜欢

热点阅读