zoukankan      html  css  js  c++  java
  • 多测师讲解安全测试 _web安全测试_高级讲师肖sir

    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:windowssystem32driversetchosts,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

  • 相关阅读:
    java只有值传递,不存在引用传递
    Sring容器的懒加载lazy-init设置
    Spring加载xml配置文件的方式(BeanFactory和ApplicationContext区别)
    Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL
    深入浅出Java回调机制
    Redis配置文件中关于bind参数
    Mysql中MyISAM引擎和InnoDB引擎的比较
    Mybatis(一):MyBatis配置文件config.xml详解
    mybatis数据源源码剖析(JNDI、POOLED、UNPOOLED)
    Mybatis(六):spring与mybatis三种整合方法
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13833579.html
Copyright © 2011-2022 走看看