漏洞扫描含义
漏洞扫描是指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用的漏洞的一种安全监测行为。该技术是一类重要的网络安全技术,它和防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。管理员可以根据扫描结果更正网络安全漏洞和系统中的错误设置,清楚安全隐患。
Burp Suite是Web应用程序测试的最佳工具之一,其多种功能可以代替用户执行各种任务。例如,请求的拦截与修改、扫描Web应用程序漏洞、暴力破解登陆表单,执行会话令牌等多种随机性检查。
cve编号:每个漏洞都被分配一个称为CVE标识符的编号,编号格式为“CVE-年份-编号”
怎样通过Burp Suite进行漏洞扫描
通过Burp Suite抓包之后,在Target-site map里,右击网站,然后选择EngagementTools-Find Scripts,可以扫描网站的所有脚本页面,并以表格形式列出来。
Target:主动扫描网站,在Target-Site Map里进行,右击网站,选择“Actively Scan This Host”。会弹出主动扫描向导,会提示你已经选择了一些项目来扫描,为了更有效的扫描,可以勾选要去掉的项目,一般选择默认即可。
Target选项卡下方是“Site Map”,在IE里访问的网站就会在这里列出来,“Scope”选项卡设置具体的扫描范围。
Spider:蜘蛛爬网页,会自动跳到Spider页面,里边会显示正在爬网页,已经请求数量,字节传输量,爬虫范围等信息。
Scanner:选择后可以看到当前正在扫描,网站注入,跨站脚本等漏洞都会爆出来。
软件漏洞特点
持久性:
一个软件系统从发布之日起,随着用户广泛且深入地使用,软件系统中存在的漏洞会不断暴露出来,这些被发现的漏洞也会不断地被软件开发商发布的补丁软件修补,或在以后发布的新版软件中得以纠正。而在新版软件纠正旧版本中的漏洞的同时,也会引入一些新的漏洞和问题。软件开发商和软件使用者的疏忽或错误(如对软件系统不安全的配置或者没有及时更新安全补丁等),也会导致软件漏洞长期存在。随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现,因此漏洞具有持久性。相关数据表明高危漏洞及其变种会可预见地重复出现,对内部和外部网络构成持续的威胁。
时效性:
漏洞具有时效性,超过一定的时间限制(例如,当针对该漏洞的修补措施出现时,或者软件开发商推出了更新版本系统时),漏洞的威胁就会逐渐减少直至消失。漏洞的时效性具有双刃剑的作用,一方面,漏洞信息的公开加速了软件开发商的安全补丁的更新进程,能够尽快警示软件用户,减少了恶意程序的危害程度;另一方面,攻击者也可能会尽快利用漏洞信息实施攻击行为。
广泛性:
漏洞具有广泛性,会影响到很大范围的软件和硬件设备,包括操作系统本身及系统服务软件、网络客户和服务器软件、网络路由器和防火墙等。理论上讲,所有信息系统或设备中都会存在设计、实现或者配置上的漏洞。
具体性:
漏洞又具有具体性,即它总是存在于具体的环境或条件中。对组成信息系统的软硬件设备而言,在这些不同的软硬件设备中都可能存在不同的安全漏洞,甚至在不同种类的软硬件设备中,同种设备的不同版本之间,由不同设备构成的信息系统之间,以及同种软件系统在不同的配置条件下,都会存在各自不同的安全漏洞。
可用性:
漏洞具有可利用性,漏洞一旦被攻击者利用就会给信息系统带来威胁和损失。当然,软件厂商也可以通过各种技术手段来降低漏洞的可利用性,例如微软公司通过在 Windows 操作系统或应用软件中增加内存保护机制(如 DEP、ASLR 和 SafeSEH 等),极大地降低了缓冲区溢出等漏洞的可利用性,本书将在第 3 章介绍这些保护机制。
隐蔽性:
漏洞具有隐蔽性,往往需要通过特殊的漏洞分析手段才能发现。尽管随着程序分析技术的进步,已有工具可以对程序源代码进行静态分析和检查,以发现其中的代码缺陷(如 strcpy 等危险函数的使用),但是对于不具备明确特征的漏洞而言,需要组合使用静态分析和动态分析工具、人工分析等方法去发现。本书的后面部分会着重讲述这些漏洞分析技术。
软件漏洞产生的原因
需求不明确:
软件需求不清晰或者开发人员对需求理解不明确,导致软件在设计时偏离客户的需求目标,造成软件功能或特征上的缺陷。此外,在开发过程中,客户频繁变更需求也会影响软件最终的质量。
软件结构复杂:
如果软件系统结构比较复杂,很难设计出一个具有很好层次结构或组件结构的框架,这就会导致软件在开发、扩充、系统维护上的困难。即使能够设计出一个很好的架构,复杂的系统在实现时也会隐藏着相互作用的难题,而导致隐藏的软件缺陷。
编码问题:
在软件开发过程中,程序员水平参差不齐,再加上开发过程中缺乏有效的沟通和监督,问题累积越来越多,如果不能逐一解决这些问题,会导致最终软件中存在很多缺陷。
项目期限短:
现在大部分软件产品开发周期都很短,开发团队要在有限的时间内完成软件产品的开发,压力非常大,因此开发人员往往是在疲劳、压力大、受到干扰的状态下开发软件,这样的状态下,开发人员对待软件问题的态度是 “不严重就不解决”。
使用新技术:
现代社会,每种技术发展都日新月异。使用新技术进行软件开发时,如果新技术本身存在不足或开发人员对新技术掌握不精,也会影响软件产品的开发过程,导致软件存在缺陷。
对软件安全开发重视不够:
传统软件开发更倾向于软件功能,而不注重对安全风险的管理。软件开发公司工期紧、任务重,为争夺客户资源、抢夺市场份额,经常仓促发布软件。软件开发人员将软件功能视为头等大事,对软件安全架构、安全防护措施认识不够,只关注是否实现需要的功能,很少从 “攻击者” 的角度来思考软件安全问题。
软件使用场景更具威胁:
网络技术拓展了软件的功能范围,提高了其使用方便程度,与此同时,也给软件带来了更大风险。由于软件被应用于各种环境,面对不同层次的使用者,软件开发者需要考虑更多的安全问题。同时,黑客和恶意攻击者可以比以往获得更多的时间和机会来访问软件系统,并尝试发现软件中存在的安全漏洞。