黑客攻防技术宝典——客户端控件
阅读范围:《黑客攻防技术宝典:web实战篇》第五章内容
5-客户端控件
5.1 传送用户数据
表面隐藏手段
- 隐藏表单字段
- HTTP cookie
- URL参数
- Referer消息头
攻击方式
使用 burp 等拦截代理服务器,直接修改参数
模糊数据
攻击方式
- 已知模糊字符串对应明文,尝试破译
- 若破译成功,提交 payload 对应模糊字符串
- 未破译,可利用其他功能对应的模糊字符串
- 提交畸形字符串,包含超长值、不同字符集等错误
ASP.NET ViewState
攻击方式
- 检查是否对 ViewState启用了 MAC保护(ViewState结构末尾是否存在一个20字节的散列) 2. 解码不同页面中的 ViewState参数,检查是否传送了敏感数据
- 尝试修改特殊参数值,检查是否报错
- 分析各参数功能,探查常见漏洞
5.2 收集用户数据:HTML表单
常见设置
- 长度限制
- 基于脚本确认
- 禁用元素
攻击方法
- 代理拦截,抓包修改对应参数值
- 使⽤Burp Proxy中的HTML修改功能自动重新启用禁用字段
5.3 收集用户数据:浏览器扩展
常见拓展技术
- Java applet
- Flash
- Silverlight
提供安全功能:
均编译成中间字节码;
在提供沙盒执行环境的虚拟机中运行;
可能会使用远程框架。
攻击方法
- 拦截并修改浏览器扩展组件提出的请求及服务器的响应
- 直接针对组件实施攻击,尝试反编译字节码,查看源代码
- 使用调试器与组件进行动态交互
拦截扩展流量
- 确保能正确拦截浏览器扩展送出的所有流量,必要时使用嗅探器检查
- 针对序列化数据,确保有解压和修改工具
- 确保客户端组件正确配置代理信息,安装SSL等可信证书
反编译扩展
攻击浏览器扩展组件的最彻底的方法
-
下载要处理的可执行字节码(注意找历史记录、清缓存)
-
解压、反编译字节码
-
分析源代码
-
针对模糊处理:
只查看公用方法、利用 JS 调用、签名等内容
对无意义表达式采用重构
对字节码再次进行模糊处理常见模糊技巧:
- 使用没有意义的表达式(如 a、b、c)代替有意义的类、方法和成员变 量名称
- 使用 new 和 int 之类的保留关键字代替项目名称
- 删除不必要的调试和信息
- 增加多余的代码
- 使用跳转指令修改代码的执行路径
- 引入非法的编程结构
附加调试器
调试器在字节码级别运行,因此可以轻松控制并了解组件的执行过程。
将组件的方法和类与界面中的关键功能进行关联,只需要修改其中的某项关键功能来达到目的即可,可以避免反编译大型复杂组件时的困难。
本地客户端组件
本地客户端组件一般通过 ActiveX 控件传送。
ActiveX 控件是在浏览器沙盒以外运行的定制浏览器扩展。
5.4 安全处理客户端数据
通过客户端传送数据
应完全避免通过客户端传送重要数据,可以将这类数据保存在服务器上,在必要时通过服务端逻辑直接引用。
对重要数据的传送进行签名或加密处理以防止篡改。
确认客户端生成数据
客户端提交的每一项数据都应被视为危险和潜在恶意的。
唯一安全办法:在服务端实施保护。
日志与警报
- 禁止异常数据输入
- 记录恶意请求并监控攻击企图
- 必要时采取行动,终止会话或冻结账户