zoukankan      html  css  js  c++  java
  • 安全测试回顾(二)

    一 绕过客户端控件

    应用程序依靠客户端控件限制用户表现:
    1.通过客户端组件,使用某种它认为可以防止用户修改的机制传送数据。
    2.在客户端执行保护措施,控制用户与客户端的交互,从而对功能实现限制。

    中心:抓包处理

    方法:1.绕过客户端的校验 2.绕过客户端响应

    二、’客户端控件一般可以攻击的包括一下几个方面

    1.HTML验证
    2.隐藏表单字段
    3.Http cookie
    4.URL参数
    5.模糊数据

    一、

    HTML验证包括两部分:HTML表单内置验证和基于脚本(js)的验证
    HTML表单内置验证
    例如 maxlength=“” minlength=“”
    浏览器将阻止用户输入超过多少字符,少于多少字符的值;
    通过拦截提交表单的请求,并输入任意值即可跳过

    基于脚本(js)的验证
    HTML表单内置的输入确认机制极其简单,而且也不够详细,不足以对各种输入执行验证。所以,开发者通常在脚本中加入js验证,例如这样一段代码:

    二、

    隐藏的HTML表单是一种看上去无法修改,通过客户端传送数据的常用机制。如果一个表单字段标记为hidden或者readonly,那么它就无法编辑,如果是完全隐藏( display:none ),不会在屏幕上显示,但是提交时保存在表单中的字段名称和值仍然被送交给应用程序。

     

    里边价格的表单字段名为price,标记为hidden。虽然price字段并不可以编辑,但只是因为应用程序使浏览器隐藏了该字段。

    三、

    http cookie

    与隐藏表单类似,http cookie并不显示在用户屏幕上,也不可直接修改。而有些网站对于不同的会员等级会有不同的折扣,判断是否享用折扣就用cookie来传达。
    如有些电商最早对金牌会员的折扣就是用cookie传达,类似在用户登录后返回一个响应:
    HTTP/1.1 200 OK
    Set-Cookie:DiscountAgreed=20

    这样我们通过拦截发现了该cookie值 并可在购买时对其进行修改,如:
    POST /shop/1.html HTTP/1.1
    Host: 127.0.0.1
    Cookie: DiscountAgreed=99
    quantity=1&price=449
    从而拿到了更低廉的折扣。

     四、

    URL 参数

    应用程序有可能会使用预先设定好的URL参数通过客户端传递数据,如:
    http://127.0.0.1/shop/1.html?quantity=1&price=449
    当然,这个url不一定直接显示在你的浏览器地址栏中,也可能通过包含参数的url加载框架内容或用弹窗等其他方法隐藏地址栏,这时仍可以用拦截代理服务器去捕获任何一个不规范的url参数。

    五、

    模糊数据

    有时候,通过客户端传送的数据是经过加密或某种形式的模糊处理,并不以明文显示。如通过拦截代理服务器得到:

    “D61E4BBD6393C9111E6526EA173A7C8B”
    得到这样一组模糊数据,有几种方法可以实施攻击:
    1. 破解:看是否是utf-8、base32、MD5等加密,通过decode或彩虹表判断,成功破解后修改值进行攻击。
    2. 如果完全无法理解,仍可以重新传送他的值,如抓取另一款较便宜的产品的price进行替换,无视其模糊处理。

    六、绕过客户端控件-安全处理方式

    1.尽量使用客户端传送这类关键数据,将这些数据保存在服务器(数据库)中,必要时通过服务器逻辑引用,如价格等信息完全可以保存在数据库中。
    2.如果不得不通过客户端传递,尽量对数据进行加密,并且是包含足够的上下文加密,以防止攻击者使用其他的加密数据替换。
    3.避免单一js验证方式,添加后台验证。
    4.加强日志和警报机制。

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    一、攻击验证机制—验证技术

    基于HTML表单的验证;
    多元机制,如组合型密码;  (隐私问题)
    客户端ssl证书;(数字证书),多因子认证

    其他验证服务  ;人工打电话等验证
    基本上目前的web应用程序中最常用的验证机制是使用HTML表单获取用户名和密码,并将它们提交给应用服务。

    二、攻击验证机制—密码保密性不强

    许多web应用程序没有或很少对用户密码强度进行控制。
    .弱密码
    1.非常短或空白密码
    2.以常用字典词汇为密码(password、123456)
    3.密码与用户名完全相同
    4.长时间使用默认密码

    三、攻击验证机制—暴力攻击登录

    登录功能的公开性会诱使攻击者试图猜测用户名和密码,从而获得访问应用程序的权力。如果应用程序允许攻击者用不同的密码暴力尝试,直到他找到正确的密码,这个程序就非常容易遭受攻击。

    暴力破解工具:burp

    为应对暴力破解问题,很多web应用采取了不同的安全措施:
    1.验证码
    最常见和有效的应对方式;需要注意几个问题:
    a:验证码是否真实有效;
    b:验证码复杂度;
    c:应对当前的“打码”事业盛行
    d:人们已经对captcha技术做了大量研究

    2.COOKIE检测
    例如:有些应用程序会设置一个cookie如failedlogin=0;登录尝试失败,递增该值,达到某个上限,检测到这个值并拒绝再次处理登录。
    这种客户端防御方式仅仅可以防止使用浏览器手动攻击,用刚才的方法可以轻松躲开。

    3.会话检测
    与cookie检测类似,将失败计数器保存在会话中,虽然在客户端没有标明该漏洞存在的迹象,但是只要攻击者获得一个新的会话就可以继续实施暴力攻击。

    4.失败锁定账户
    有些应用程序会采取登录尝试达到一定次数后锁定目标账户的方式。但是有可能通过分析其响应,在锁定账户的状态下仍可以进行密码猜测攻击。(比如说放回的状态码,或者提示信息)

    5.双因子认证

    双因子认证的核心是综合what you know(个人密码)和what you have(手机)来达到双重认证效果。目前很多电商、银行都采用了该认证方式。
    该方式最大的缺点就是构建双因子认证需要成本较大,服务器压力也较大,成本较高。

  • 相关阅读:
    Rancher 2.1平台搭建及使用
    回归博客园
    CGI与FastCGI
    [转]1小时内打造你自己的PHP MVC框架
    MySQL学习随笔--通过实例理解merge ,temptable算法的差异
    MySQL学习随笔--视图
    使用onenote写博客园的方法
    手动配置wamp环境(1)--apache安装与基本操作
    文档兼容性定义,使ie按指定的版本解析
    JavaScript线程
  • 原文地址:https://www.cnblogs.com/hanzhao1987/p/8086399.html
Copyright © 2011-2022 走看看