1.1什么是web安全测试?
Web安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,web系统应用仍然能够充分地满足它的需求
1.2为什么进行Web安全测试
2005年06月,CardSystems,黑客恶意侵入了它的电脑系统,窃取了4000万张信用卡的资料。
2011年12月,国内最大的开发者社区CSDN被黑客在互联网上公布了600万注册用户的数据;黑客随后陆续公布了网易、人人、天涯、猫扑等多家大型网站的数据信息。
2014年12月,大量12306用户数据被泄露,被泄露的数据达131653条,包括用户账号、明文密码、身份证和邮箱等多种信息。
2018年03月,Facebook泄露数千万用户的数据,信息被违规滥用,导致股价一度下跌;12月再次因一个软件漏洞导致用户的私人照片遭泄露。
如图:
1、熊猫烧香
2、灰鸽子
3、zoom
目前web应用越来越广泛,web安全威胁也就更明显,而web攻击隐蔽性强,危害性大。因而web安全测试也就显得尤为必要了。
1.3web安全的认识误区
Web网站使用了防火墙,所以很安全
Web网站使用了IDS,所以很安全
Web网站使用了SSL加密,所以很安全
漏洞扫描工具没发现任何问题,所以很安全
我们每季度都会聘用安全人员进行审计,所以很安全
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
俗话:我们打开了页面以后中毒,
2.2 sql注入
将SQL命令人为的输入到URL、表格域、或者其他动态生成的SQL查询语句的输入参数中,完成SQL攻击。
查询数据库中的敏感内容
绕过认证
添加、删除、修改数据
拒绝服务
典型例子:
原URL:http://localhost/name?nameid=222
攻击SQL注入:http://localhost/name?nameid=‘’or1=1
注入点一般存在以下几个地方:
2.3XML注入
和SQL注入原理一样,XML是存储数据的地方,如果在查询或修改时,如果没有做转义,直接输入或输出数据,都将导致XML注入漏洞。攻击者可以修改XML数据格式,增加新的XML节点,对数据处理流程产生影响。
2.4目录遍历
目录遍历攻击指的是:恶意用户找到受限文件的位置并且浏览或者执行它们。
攻击者浏览受限文件,比如读取配置文件、密码文件等,就会破坏隐私,甚至引发安全问题。而如执行了受限的文件,攻击者就可以根据自己的意愿来控制和修改web站点
2.5上传文件
Web应用程序在处理用户上传的文件时,没有判断文件的扩展名是否在允许的范围内,或者没检测文件内容的合法性,就把文件保存在服务器上,甚至上传脚本木马到web服务器上,直接控制web服务器。
未限制扩展名
未检查文件内容
病毒文件
例如:后缀格式要求png,jpg,
上传图片有
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.1 web安全测评要求
信息系统的安全保护等级分为五级,一至五级等级越高,约束越严格。以二级为例,应用安全测评要求(二级)为:身份鉴别、访问控制、安全审计、通信完整性、通信保密性、软件容错、资源控制;
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的分析验证是否存在安全漏