一、安全测试概述
程序员在开发过程中,会有意或无意地埋下一些漏洞,而发现这些安全性漏洞,寻求有效的解决方法则是测试工程师义不容辞的责任。
安全测试主要涉及以下内容:
1、认证与授权
-
授权:在网站中不同的角色有不同的权限。
-
认证:一些网页访问需要输入密码进行登录认证。
在认证与授权中要尽可能避免出现漏洞,否则将被不法分子有意地进行利用。
2、Session与Cookie
-
Session在网络应用中称为"会话控制",是保存在服务器端的数据或者文件;
-
cookie是保存在客户端电脑上的文件;
cookie很容易通过某种手段获取到我们的权限以及一些隐私信息;session ID是唯一的标记,一旦别人通过cookie欺骗等手段获取了session ID,可以将其作为协议包发给服务器,从而就拥有了我们的权限。
3、DDOS分布式拒绝服务攻击
分布式拒绝服务攻击(DDOS)指的是借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动攻击,从而成倍地提高拒绝服务攻击的威力。
通常,攻击者盗用别人的账号将DDOS主控程序安装在一个计算机上,代理程序安装在网络上的许多计算机上,在一个设定的时间,主控程序将与大量代理程序进行通讯。代理程序收到指令就发动攻击,从而占用服务器的资源,无法正常向用户提供服务。
任何事物的发展都是有利有弊的,高速广泛连接的网络也不例外。一方面网络给大家带来了便捷,另一方面也为DDOS攻击创造了极为有利的条件。在低速网络时代时,由于技术的限制,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器。而在如今网络高速发展、广泛连接的信息化时代,数据传输不再是问题,这使得攻击可以从更远的地方或者其他城市发起,从而作为攻击的傀儡机可以分布在更大的范围,选择起来更灵活了。
被DDOS攻击时的现象:
1)被攻击主机上会有大量等待的TCP连接;
2)网络中充斥着大量的无用的数据包,源地址为假;
3)制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯;
4)利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求;
4、文件上传漏洞
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器命令的能力。
大部分的网站和应用系统都具备上传功能,例如用户头像上传,图片上传,文档上传,视频上传等。由于实现文件上传的代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个目录上传任意PHP文件,并能够将这些文件传递给PHP解释器,就可以在远程服务器上执行任意PHP脚本。
当系统存在文件上传漏洞时攻击者可以将病毒,木马,其他恶意脚本或者是包含了脚本的图片上传到服务器,这些文件将对攻击者后续攻击提供便利。根据具体漏洞的差异,此处上传的脚本可以是正常后缀的PHP,ASP以及JSP脚本,也可以是篡改后缀后的这几类脚本。
5、XSS跨站攻击
XSS跨站攻击指的是攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
XSS漏洞是目前为止发现的在所有网站超过80%比例的定制Web应用程序中最常见的漏洞。XSS主要攻击的是用户,例如钓鱼网站获取别的用户的Session ID,通过别人的输入来获取关键信息。
XSS是一种攻击技术,它使得加载在用户的Web浏览器上的网站出现攻击者提供的可执行代码,当黑客利用该存在漏洞的网站作为攻击对象时,用户理所当然的成为受害者。
跨站攻击的类型包含持久型跨站、非持久型跨站、DOM跨站,不同的跨站类型,有不同的跨站特点与区别,但又有跨站之间的相互联系。
存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等。
反射型XSS,非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
DOM跨站攻击是最隐蔽型的攻击,也就是说输出内容在源码里面看不到,不是直接输出的。
6、SQL注入
通过任何可以输入的地方,向服务器端注入信息,是普遍的攻击方式。
总体来说就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
不知道设计者的SQL语句,不知道用户名,密码,采用这种暴力破解,准备足够多的账号信息,不停地进行试验,总可以找到用户名,密码。快速破解需要借助于代码,而不是人工主要采用的方式。
7、跨站请求伪造(CSRF)
跨站请求伪造(CSRF)指的是攻击者控制受害者的计算机,强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。恶意请求会带上浏览器的Cookie,受攻击的Web应用信任浏览器的Cookie。
二、安全测试类型详解
1、认证与授权
尽量避免未被授权的页面可以直接访问,应该对每个页面都有一个session变量的判断。如果没有判断只要用户知道URL地址就能进行访问。
测试方法:在不登陆的情况下,使用绝对URL地址对页面进行访问,能否正常访问,绝对URL地址直接通过httpwatch对每个请求进行获取。
2、session与cookie
避免保存敏感信息到cookie文件中,cookie的保存可以提高用户的体验。
作用域:
Set-Cookie:PHPSESSIONID= ;pash=/相对于根目录而言的,如C:xampphtdocs就是根目录,agileone保存的信息是在phpwind是能读取到的,相互之间是同样的作用域,两个系统可以交叉读取cookie信息。
解决办法是:不同的应用系统不同的作用域,如将agileone和phpwind两个应用配置在不同的作用域当中:即可修改代码path=/agileone,path=/phpwind.
3、DDOS拒绝服务攻击
(1)分布式的拒绝服务式攻击(攻击服务器的电脑分布在不同地方向服务器发送请求)的两种方式
1) 使用肉机
通过设置木马让很多电脑受远程控制,帮忙执行病毒程序,服务器防火墙无法通过封锁IP的方式进行处理,唯一的解决办法就是服务器够强大;
2) 形成攻击联盟
很多人联合起来对同一个网站发起攻击,对网站流量形成一定压力,对同一网站造成伤害。