Web开发

注册

 

发新话题 回复该主题

网安加百家讲坛Web漏洞扫描工具原理 [复制链接]

1#
哪医院治白癜风比较好 http://baidianfeng.39.net/index.html

作者简介:郭振新,OWASP吉林区域负责人,径点科技资深研发工程师、VP、安全部门负责人。拥有10年软件安全和软件研发经验,软件公司安全团队从0到1的建设经验。

刚接触安全的人总会有一些疑问,为什么有Web漏洞扫描工具还要做手动测试?扫描工具里面的rule都写得好全啊,什么问题类型都有,是不是做完Scan之后就可以保证Web应用程序的绝对安全?本文从扫描工具的原理角度给大家解释一下这些疑惑。

我们先来讨论一下Web漏洞扫描工具都有哪些原理和规则。

一、被动扫描(PassivelyScan)

如果有人使用过OWASPZAP或者BurpSuite扫描,应该会注意到它们的扫描方式中有一项是被动扫描。

那什么时被动扫描呢?被动扫描就是不主动向目标Server发送任何请求,它仅分析现有的经过BurpSuite/ZAP的Request和Response的内容,从中推断出漏洞。仅使用被动技术可以检测到许多类型的Vulnerabilities。

举几个可以用被动扫描发现的问题:

1.Response中不含有各种安全相关的Responseheader。

2.Response中含有Server的版本号信息等,例如:Server:IIS10.0

3.前台组件(例如:jQuery)的版本过低,含有已知问题。

4.分析前端代码是否含有潜在的XSS等(注意这种分析可能存在一定的误报率,因为只是分析代码,并没有直接重现问题)。

5.Password/PII等隐私信息发现。

6.SSL/TLS证书问题。

7.其它被动可以查到的Vulnerabilities可以在扫描工具的规则配置中找到。

二、对比Response中的数据和行为

除了第一条为被动扫描技术,其余方法都是主动发现漏洞。扫描工具会一遍一遍的将Request中的所有参数替换成对应攻击的Payload发送到Server,然后查看和对比Server返回Response中的数据和行为,从而判断Server是否有Vulnerabilities。画一张示例图如下:

对比Response的数据当然很好理解,例如登录时存在SQLInjection,当用户名输入admin"or1=1时会直接登录,扫描工具就会比对Response中的数据不同(登录成功/失败)从而判断这里有SQLInjection问题。

那对比行为是怎么理解呢?有些SQLInjection虽然会被执行,但是Response中返回值都是一样的,这种情况就没有办法直接对比数据。这个时候就可以对比行为,还是拿SQLInjeciton举例,当Payload为UserID=1;waitfordelay0:0:3—时,Server返回Response的时间为3秒以上,当Payload改为UserID=1;waitfordelay0:0:30—时,Server的返回Response的时间为30秒以上,多次尝试后扫描工具就会探测出这里有SQLInjection问题。

另外扫描工具还会分析Response中的异常信息,从而判断内部逻辑,直接报出来,方便攻击者查看和进行下一步进攻。例如有些异常信息会抛出SQL语句是在哪里拼写错误或抛出整个错误的SQL语句,如果异常信息直接打印到Response中时,会加速和帮助攻击者确认Vulnerability所在。所以尽可能少的外向暴露异常信息很重要。

PS:解释一下Payload的意思,直译有效载荷。简单说就是一次一次发送给Server的数据。比如SQLInjection的Payload:

1.admin"or1=1

2.admin"or1=1--

3.admin"or1=1#

4.admin"or1=1/*

不同的攻击方式都会有不同的Payload,推荐大家看一PayloadAllTheThings(

分享 转发
TOP
发新话题 回复该主题