安全测试回顾(二)

一 绕过客户端控件

应用程序依靠客户端控件限制用户表现:
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(手机)来达到双重认证效果。目前很多电商、银行都采用了该认证方式。
该方式最大的缺点就是构建双因子认证需要成本较大,服务器压力也较大,成本较高。

posted @ 2017-12-22 15:56  明镜止水丨  阅读(217)  评论(0编辑  收藏  举报