web安全测试

Web安全

  1. 认证与授权(1.认证2.授权3.避免未经授权的页面可以直接访问)
  2. Session与cookie:(1.session,cookie欺骗2.避免保存敏感信息到cookie文件中3.作用域:不同的系统应用不同的作用域)
  3. DDOS拒绝服务攻击(1,服务器发送请求2.肉鸡3.攻击联盟4.需要技术的是利用tcp连接的规则(3次握手:客户端—服务器 服务器—客户端 客户端—服务器 可以在这3次中间的步骤中进行阻碍,例如在第二次握手中,使服务器找不到客户端,大量的请求同时找不到客户端,就会占用大量内存,就会崩溃,需要的技术跟高,大量底层技术。)
  4. 文件上传漏洞(1,文件上传的过滤(1.通过后缀名过滤2.通过二进制来判断文件类型)
    2,服务器核心参数,禁止脚本引擎运行系统命令。)

文件上传漏洞,纸面意思可以利用WEB上传一些特定的文件。一般情况下文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。文件上传本身是web中最为常见的一种功能需求,关键是文件上传之后服务器端的处理、解释文件的过程是否安全。一般的情况有:

1、上传Web脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行。

2、上传Flash策略文件crossdomain.xml,以此来控制Flash在该域下的行为。

3、上传病毒、木马文件,攻击者用以诱骗用户或管理员下载执行。(一个简单的例子:<? Php system ($Get。。。。?>就是一个简单木马,中间代码忘了。。

4,钓鱼图片或包含了脚本的图片,某些浏览器会作为脚本执行(比如php文件),实施钓鱼或欺诈。
https://blog.csdn.net/wutianxu123/article/details/82806483(博客跳转--)

  1. XSS跨站攻击


    <img src=”图片地址” οnclick=”alert(doucument cookie)”/>
    doucument cookie是js脚本中获取cookie信息的代码。
    Onlick后面还可以添加电脑ip地址等等。
    这是两个标准的添加按钮的html代码 可以用来调试各种输入的接口看看是否会出来一个按钮。经过测试,禅道管理系统是没有这种漏洞的。

"/><!–

"οnclick="alert(document.cookie)

这些是测试脚本。
在网页中的Textbox或者其他能输入数据的地方,输入这些测试脚本, 看能不能弹出对话框,能弹出的话说明存在XSS漏洞
在URL中查看有那些变量通过URL把值传给Web服务器, 把这些变量的值退换成我们的测试的脚本。 然后看我们的脚本是否能执行

  1. 防止xss注入的原理,就是对用户输入的富文本进行html encode
    PHP环境下处理函数如下:
    function re_xss(KaTeX parse error: Expected '}', got 'EOF' at end of input: … { if(is_array(list))
    foreach ($list as $key => KaTeX parse error: Expected '}', got 'EOF' at end of input: … foreach (value as $keys => $values)
    {
    l i s t [ list[ list[key][ k e y s ] = h t m l s p e c i a l c h a r s ( keys]=htmlspecialchars( keys]=htmlspecialchars(values);
    }
    }
    else
    l i s t = h t m l s p e c i a l c h a r s ( list=htmlspecialchars( list=htmlspecialchars(list);
    return $list;
    }

2,防止cookie被窃取的原理,就是像ThinkPHP,把cookie和IP地址绑定,或者和其他唯一值绑定。
现在有很多xss扫描工具。
6. SQL注入、
最通用的一个攻击手段,关系型数据库,
服务器对sql注入的防范也是非常严密的

  1. 获取服务器端数据库的内容。
  2. 修改数据库的内容。(php asp jsp mysql sqlserver oracle access…)
    一般登陆界面后台会有两种类型的sql语句

/*SELECT * FROM user WHERE username = ‘ u s e r n a m e ′ A D N p a s s w o r d = ′ username&#x27; ADN password = &#x27; usernameADNpassword=password’
猜想KaTeX parse error: Expected 'EOF', got '#' at position 25: …x’ or userid=1 #̲’(也可以是二,就是尝试。中间…username’
If (count()==1)
If(password=$password)
登陆成功
第一种容易破解一些。
正常的登陆成功会调用的sql语句。

url:协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志。
利用url地址参数注入sql。
1, 试探是否有注入的可能性(后面添加 order by 10或则and 1=2或则直接加个‘;有反应就说明有注入的可能性,要报的是数据库的错误才有这种可能性。)
找目标测试网站 可以百度输入:inurl:php?
找到网站可以输入 and 1=2 union select 1,2,。。。
前面用order by 20来测试他有多少列,用二分法,有多少列就select多少列,看输入的这这些列里面那个是突破口,会显示select输入的东西。
如何预防SQL注入?

这是开发人员应该思考的问题,作为测试人员,了解如何预防SQL注入,可以在发现注入攻击bug时,对bug产生原因进行定位。

1)严格检查输入变量的类型和格式

对于整数参数,加判断条件:不能为空、参数类型必须为数字

对于字符串参数,可以使用正则表达式进行过滤:如:必须为[0-9a-zA-Z]范围内的字符串

2)过滤和转义特殊字符

在username这个变量前进行转义,对’、"、\等特殊字符进行转义,如:php中的addslashes()函数对username参数进行转义

3)利用mysql的预编译机制

把sql语句的模板(变量采用占位符进行占位)发送给mysql服务器,mysql服务器对sql语句的模板进行编译,编译之后根据语句的优化分析对相应的索引进行优化,在最终绑定参数时把相应的参数传送给mysql服务器,直接进行执行,节省了sql查询时间,以及mysql服务器的资源,达到一次编译、多次执行的目的,除此之外,还可以防止SQL注入。具体是怎样防止SQL注入的呢?实际上当将绑定的参数传到mysql服务器,mysql服务器对参数进行编译,即填充到相应的占位符的过程中,做了转义操作。
7. 暴力破解。
暴力破解的思路很简单,就是一条一条尝试字典中地密码直到破解成功或者字典尝试完也没有破解成功
Web可用性测试

  1. 用户感受
  2. 使用感受(外观)
    Web兼容性测试
  3. 前端的兼容性问题(客户端操作系统 客户端浏览器 客户端分辨率 客户端处理能力)
  4. 后端的兼容性(web服务器 数据库 脚本引擎 操作系统的各种版本)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值