当前位置: 首页> 技术文章> web安全测试

web安全测试

 1.1什么是web安全测试?

Web安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,web系统应用仍然能够充分地满足它的需求

 

1.2为什么进行Web安全测试

 

2005年06月,CardSystems,黑客恶意侵入了它的电脑系统,窃取了4000万张信用卡的资料。

 

2011年12月,国内最大的开发者社区CSDN被黑客在互联网上公布了600万注册用户的数据;黑客随后陆续公布了网易、人人、天涯、猫扑等多家大型网站的数据信息。

 

2014年12月,大量12306用户数据被泄露,被泄露的数据达131653条,包括用户账号、明文密码、身份证和邮箱等多种信息。

 

2018年03月,Facebook泄露数千万用户的数据,信息被违规滥用,导致股价一度下跌;12月再次因一个软件漏洞导致用户的私人照片遭泄露。

 

目前web应用越来越广泛,web安全威胁也就更明显,而web攻击隐蔽性强,危害性大。因而web安全测试也就显得尤为必要了。

 

1.3web安全的认识误区

lWeb网站使用了防火墙,所以很安全

lWeb网站使用了IDS,所以很安全

lWeb网站使用了SSL加密,所以很安全

l漏洞扫描工具没发现任何问题,所以很安全

l我们每季度都会聘用安全人员进行审计,所以很安全

 

2:web攻击的主要类型

跨站脚本(XSS)攻击

SQL注入

XML注入

目录遍历

上传漏洞攻击

下载漏洞攻击

信息泄露

访问控制错误

 

2.1跨站脚本(XSS)攻击

XSS又叫CSS(CrossSiteScript),跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

盗取Cookie

钓鱼

操纵受害者的浏览器

蠕虫攻击

 

反射型跨站(reflected xss)

服务端获取HTTP请求中的参数,未经过滤直接输出到客户端。如果这些参数是脚本,它将在客户端执行。(钓鱼常见)

 

存储型跨站(Sstored xss)

用户输入的数据存放在服务端(一般放数据库里),其他用户访问某个页面时,这些数据未经过滤直接输出。这些数据可能是恶意脚本,对其他用户造成危害。(挂马常见)

 

mom跨站(DOM-Based XSS)

攻击者提交的恶意数据并未显式的包含在web服务器的响应页面中,但会被页面中的js脚本以变量的形式来访问到,导致浏览器在渲染页面执行js脚本的过程中,通过DOM操作执行了变量所代表的恶意脚本。

 

跨站请求伪造(csrf)

强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。恶意请求会带上浏览器的Cookie。受攻击的Web应用信任浏览器的Cookie

 

upfile1588943773546.png

 

 

2.2 sql注入

SQL命令人为的输入到URL、表格域、或者其他动态生成的SQL查询语句的输入参数中,完成SQL攻击。

查询数据库中的敏感内容

绕过认证

添加、删除、修改数据

拒绝服务

 

典型例子:

URL:http://localhost/name?nameid=222

攻击SQL注入:http://localhost/name?nameid=‘’or1=1

注入点一般存在以下几个地方:

upfile1588943786751.png

 

 

2.3XML注入

SQL注入原理一样,XML是存储数据的地方,如果在查询或修改时,如果没有做转义,直接输入或输出数据,都将导致XML注入漏洞。攻击者可以修改XML数据格式,增加新的XML节点,对数据处理流程产生影响。

upfile1588943799385.png

 

 

2.4目录遍历

目录遍历攻击指的是:恶意用户找到受限文件的位置并且浏览或者执行它们。

攻击者浏览受限文件,比如读取配置文件、密码文件等,就会破坏隐私,甚至引发安全问题。而如执行了受限的文件,攻击者就可以根据自己的意愿来控制和修改web站点

upfile1588943812990.png

 

 

2.5上传文件

Web应用程序在处理用户上传的文件时,没有判断文件的扩展名是否在允许的范围内,或者没检测文件内容的合法性,就把文件保存在服务器上,甚至上传脚本木马到web服务器上,直接控制web服务器。

未限制扩展名

未检查文件内容

病毒文件

 

2.6任意文件下载

Web应用程序提供下载文件的路径时,文件的路径用户可控且未校验或校验不严,攻击者通过”../”字符来遍历高层目录,并且尝试找到系统的配置文件或者系统中存在的敏感文件。

下载任意附件

下载数据库配置文件等

 

2.7消息泄露

Web应用程序在处理用户错误请求时,程序在抛出异常的时候给出了比较详细的内部错误信息,而暴露了不应该显示的执行细节,如文件路径、数据库信息、中间件信息、IP地址等

 

2.8访问控制错误

系统没有对URL的访问作出限制或者系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的就伪造请求直接访问未被授权的页面。

例如,通过一个参数表示用户通过了认证:

http://www.example.com/userinfo.jsp?authenticated=no 通过修改authenticated参数为Yes:

http://www.example.com/userinfo.jsp?authenticated=yes

 

3.1web安全测评要求

信息系统的安全保护等级分为五级,一至五级等级越高,约束越严格。以二级为例,应用安全测评要求(二级)为:身份鉴别、访问控制、安全审计、通信完整性、通信保密性、软件容错、资源控制;

upfile1588943829591.png

 

 

3.2web安全测试方法

手动测试(结合测评要求)

自动测试

混合测试

upfile1588943840631.png

 

手动测试

1.不登录系统,直接输入登录后的页面的url是否可以访问

2.不登录系统,直接输入下载文件的url是否可以下载,如输入http://url/download?name=file是否可以下载文件file

3.退出登录后按后退按钮能否访问之前的页面

4.ID/密码验证方式中能否使用简单密码。如密码标准为6位以上,字母和数字混合,不能包含ID,连续的字母或数字不能

超过n位

5.重要信息(如密码,身份证号码,信用卡号等)在输入或查询时是否用明文显示;在浏览器地址栏里输入命令

javascrīpt:alert(doucument.cookie)时是否有重要信息;在html源码中能否看到重要信息

6.手动更改URL中的参数值能否访问没有权限访问的页面。如普通用户对应的url中的参数为l=e,高级用户对应的url中的参

数为l=s,以普通用户的身份登录系统后将url中的参数e改为s来访问本没有权限访问的页面

7.url里不可修改的参数是否可以被修改

8.上传与服务器端语言(jsp、asp、php)一样扩展名的文件或exe等可执行文件后,确认在服务器端是否可直接运行

9.注册用户时是否可以以'--,'or1=1--等做为用户名

10.传送给服务器的参数(如查询关键字、url中的参数等)中包含特殊字符(','and1=1--,'and1=0--,'or1=0--)时是否可

以正常处理

11.执行新增操作时,在所有的输入框中输入脚本标签(<scrīpt>alert("")< scrīpt><="" font="">)后能否保存

12.在url中输入下面的地址是否可以下载:

http://url/download.jsp?file=C:\windows\system32\drivers\etc\hosts,http://url/download.jsp?file=/etc/passwd

13.是否对session的有效期进行处理

14.错误信息中是否含有sql语句、sql错误信息以及web服务器的绝对路径等

15.ID/密码验证方式中,同一个账号在不同的机器上不能同时登录

16.ID/密码验证方式中,连续数次输入错误密码后该账户是否被锁定

17.新增或修改重要信息(密码、身份证号码、信用卡号等)时是否有自动完成功能(在form标签中使用autocomplete=off

来关闭自动完成功能

 

3.3工具的使用

AWVS

WebInspect

AppScan

 

AppScan原理

通过搜索(爬行)发现整个Web应用结构

根据分析,发送修改的HTTPRequest进行攻击尝试(扫描规则库)

通过对于Respone的分析验证是否存在安全漏

upfile1588943855473.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


上一篇: 性能测试的主要指标

下一篇: Jenkins详细教程

QQ技术交流群

多测师官方学习交流
556733550

加入群聊