1.实现原理
(1)通过爬虫发现整个 Web 应用结构,爬虫会发现被测Web程序有多少个目录,多少个页面,页面中有哪些参数; (2)根据爬虫的分析结果,对发现的页面和参数发送修改的 HTTP Request 进行攻击尝试(扫描规则库); (3)通过对于 Response 的分析验证是否存在安全漏洞。2.DAST优劣势分析
DAST这种测试方法主要测试Web应用程序的功能点,测试人员无需具备编程能力,无需了解应用程序的内部逻辑结构,不区分测试对象的实现语言,采用攻击特征库来做漏洞发现与验证,能发现大部分的高风险问题,因此是业界Web安全测试使用非常普遍的一种安全测试方案。DAST除了可以扫描应用程序本身之外,还可以扫描发现第三方开源组件、第三方框架的漏洞。 从工作原理也可以分析出,DAST一方面需要爬虫尽可能的把应用程序的结构爬取完整,另一方面需要对被测应用程序发送漏洞攻击包。现在很多的应用程序含有AJAX页面、CSRF Token页面、验证码页面、API孤链、POST表单请求或者是设置了防重放攻击策略,这些页面无法被网络爬虫发现,因此DAST技术无法对这些页面进行安全测试。DAST技术对业务分支覆盖不全,即使爬到一个表单,要提交内容,服务端对内容做判断,是手机号码则进入业务1,不是手机号码进入业务2,爬虫不可能知道这里要填手机号码,所以业务分支1永远不会检测到。 另外DAST必须发送漏洞攻击包来进行安全测试,这就需要有安全专家不断更新漏洞扫描插件,而且这种测试方式会对业务测试造成一定的影响,安全测试的脏数据会污染业务测试的数据。 DAST的测试对象为HTTP/HTTPS的Web应用程序,对于IOS/Android上的APP也无能为力。 DAST发现漏洞后会定位漏洞的URL,无法定位漏洞的具体代码行数和产生漏洞的原因,需要比较长的时间来进行漏洞定位和原因分析,这使得DAST不太适合在DevOps的开发环境中使用。