第四章 解析应用程序
4.1 枚举内容与功能
4.1.1 web 抓取
可使用爬虫自动抓取,主要原理:先请求一个web页面,对其进行分析,查找链接到其它内容的链接,然后请求这些内容,再继续这个循环,直到找不到新的内容为止。
但是存在一些限制:
- 无法正确处理不常用的导航机制(如使用复杂的JavaScript代码动态监理和处理的菜单)
- 无法抓取隐藏在编译客户端(如Flash和Java applet)中的链接
- 无法发现多阶段功能后面的内容和功能
- 相同的URL可能返回截然不同的内容和功能
- URL中插入实际上并不用于确定资源或功能的可变数据,导致不断的进行抓取
- 应用程序身份验证机制
4.1.2 用户指定的抓取
用户使用标准浏览器以常规方式浏览应用程序,试图枚举应用程序的所有功能。之后,生成的流量穿过一个组合拦截代理服务器与爬虫的工具,监控所有的请求和响应。该工具绘制应用程序地图,集中由浏览器访问的所有URL,并且像一个正常的应用程序感知爬虫那样分析应用程序的响应,同时用它发现的内容与功能更新站点地图。
4.1.3 发现隐藏的内容
- 暴力穷举
- 通过公布的内容进行推测
- 利用公共信息
- 利用web服务器
4.1.4 应用程序页面与功能路径
4.1.5 发现隐藏的参数
4.2 分析应用程序
4.2.1 确定用户输入入口点
- URL文件路径
- 请求参数
- HTTP消息头
- 带外通道
4.2.2 确定服务器端技术
- 提取版本信息
- HTTP指纹识别
- 文件扩展名
- 目录名称
- 会话令牌
- 第三方代码组件
4.2.3 确定服务器端功能
- 仔细分析请求
- 推测应用程序的行为
- 隔离独特的应用程序行为
4.2.4 解析受攻击面
- 客户端确认——服务器没有采用确认检查
- 数据库交互——SQL注入
- 文件上传与下载——路径遍历漏洞、存储型跨站点脚本
- 显示用户提交的数据——跨站点脚本
- 动态重定向——重定向与消息头注入攻击
- 社交网络功能——用户名枚举、存储型跨站点脚本
- 登录——用户名枚举、简单密码、暴力破解
- 多阶段登录——登录缺陷
- 会话状态——可推测的令牌、令牌处理不安全
- 访问控制——水平权限和垂直权限提升
- 用户伪装——权限提升
- 使用明文通信——会话劫持、收集证书和其它敏感数据
- 站外链接——Referer消息头中查询字符串参数泄露
- 外部系统接口——处理会话与/或访问控制的快捷方式
- 错误消息——信息泄露
- 电子邮件交互——电子邮件与命令注入
- 本地代码组件或交互——缓冲区溢出
- 使用第三方应用程序组件——已知漏洞
- 已确定的web服务器软件——常见配置薄弱环节,已知软件程序缺陷
4.3 小结
解析应用程序是向其发动攻击的重要前提。