黑客攻防技术宝典Web实战篇(第二版)_读书笔记(第四章~第五章)

第四章 解析应用程序

4.1 枚举内容与功能

4.1.1 Web抓取

人工浏览或使用工具爬取Web站点的内容。

robots.txt文件:列出了不希望Web爬虫访问或搜索引擎列入索引的URL。(有时存在敏感信息)

自动化爬取的限制:

  1. 一般无法正常处理不常用的导航机制(如复杂的JS代码动态建立和处理的菜单)。
  2. 可能无法抓取隐藏在编译客户端对象(如Flash、Java applet)中的链接。
  3. 可能不会接受由自动工具提交的值。(如注册提交字符串返回失败,无法成功通过注册,因此无法发现这以后的内容)。
  4. 自动化爬虫通常使用URL作为内容标识符。(即已请求过该链接,不会再请求该链接)。
  5. 一些应用程序在URL中插入并不用于确定资源或功能的可变数据,导致它不断进行不确定的抓取。
  6. 应用程序的身份验证机制。

4.1.2 用户指定抓取

以常规方式浏览应用程序,试图枚举应用程序的所有的功能,随后生成的流量穿过一个组合拦截代理服务器与爬虫的工具,监控和所有请求和响应。

用户点击浏览器访问屏幕上的可见链接,代理服务器/爬虫工具就会将生成的内容添加到站点地图中。

优点:

  1. 对应用程序不常用或复杂的导航机制,用户能够以常规方式使用浏览器来遵循这些机制。
  2. 用户控制提交到应用程序的所有数据,可确保满足数据确认要求。
  3. 能够以正常方式登录应用程序,并确保通过验证的会话在整个解析过程中保持活动状态,如果会话终止,可重新浏览。
  4. 能完整枚举任何危险功能,并合并到站点地图中。

4.1.3 发现隐藏的内容

1.蛮力技巧

暴力破解目录文件

2. 通过公布的内容进行推测

留意服务器返回的资源格式(首字母大小写等),针对性的暴力破解。

3. 利用公共信息

搜索引擎(例:内容保存在缓存中)(google hack等)

Web档案:这些档案保存大量Web站点的历史记录或不同时期的快照。

4. 利用Web服务器

利Web服务器层面的漏洞来发现未建立链接的内容与功能。

4.2 分析应用程序

重要方面如下:

  1. 应用程序的核心功能:用于特定目的时可利用它执行的操作。
  2. 其他较为外围的应用程序行为,包括站外链接、错误消息、管理与日志功能、重定向使用等。
  3. 核心安全机制及其运作方式,特别是会话状态、访问控制、验证机制与支持逻辑(注册、修改密码、账户恢复等)。
  4. 应用程序处理用户提交的输入的所有不同位置:每个URL、查询字符串参数、POST数据、cookie以及类似内容。
  5. 客户端使用的技术,包括表单、客户端脚本、厚客户端组件(java applet、Active X控件和Flash)和cookie。
  6. 服务器使用的技术,包括静态与动态页面、使用的请求参数类型、ssl使用、Web服务器软件、数据库交互、电子邮件系统和其他后端组件。
  7. 任何可收集到的、关于服务器端应用程序内部结构与功能的其他信息(客户端可见的功能和行为的后台传输机制)。

4.2.1 确定用户输入入口点

关键位置包括:

  • 每个URL字符串,包括查询字符串标记。
  • URL查询字符串中提交的每个参数。
  • POST请求主体中提交的每个参数。
  • 每个cookie。

极少情况下可能包括由应用程序处理的其他所有HTTP消息头,特别是User-Agent、Referer、Accept、Accept-Language和Host消息头。

1. URL文件路径

2. 请求参数

3. HTTP消息头

4. 带外通道

通过带外通道接收用户可控制的数据的Web应用程序包括:

  • 处理并显示通过SMTP接收到的电子邮件消息的Web邮件应用程序。
  • 具有通过HTTP从其他服务器获取内容功能的发布应用程序。
  • 使用网络嗅探器收集数据并通过Web应用程序界面显示这些数据的入侵检测应用程序。
  • 任何提供由非浏览器用户代理使用的API接口,如移动电话应用程序。

4.2.2 确定服务器端技术

1. 提取版本信息

如HTTP Server消息头揭露的服务器信息,除Server消息头以外还有:

建立HTML页面的模板;

定制的HTTP消息头;

URL查询字符串参数。

2. HTTP指纹识别

服务器返回的信息可能被有意伪造,除Server消息头判断外,还可以使用大量迂回的方法来识别Web服务器,例如使用Httprecon工具对服务器扫描,以不同的可信度报告各种可能的Web服务器。

3.文件扩展名

  • asp——Microsoft Active Server Pages;
  • aspx——Microsoft ASP.NET;
  • jsp——Java Server Pages;
  • cfm——Cold Fusion;
  • php——php语言;
  • d2w——WebSphere;
  • pl——perl语言;
  • py——Python语言;
  • dll——通常为编译型本地代码(C或C++);
  • nsf或ntf——Lotus Domino;

4. 目录名称

  • servlet——Java servlet;
  • pls——Oracla Application Server PL/SQL网关;
  • cfdocs或cfide——Colde Fusion;
  • SilverStream——SilverStream Web服务器;
  • WebObjects或{function}.woa——Apple WebObjects;
  • rails——Ruby on Rails;

5. 会话令牌

  • jsessionid——java平台
  • ASPSESSIONID——Microsoft IIS 服务器
  • ASP.NET_SessionId——Microsoft ASP.NET
  • CFID/CFTOKEN——Cold Fusion
  • PHPSESSID——PHP

4.2.4 解析守攻击面

客户端确认——服务器没有采用确认检查。

数据库交互——SQL注入。

文件上传和下载——路径遍历漏洞,保存型跨站点脚本。

显示用户提交的数据——跨站点脚本。

动态重定向——重定向与消息头注入攻击

社交网络功能——用户名枚举、保存型跨站点脚本。

登录——用户名枚举、脆弱密码、能使用蛮力。

多阶段登录——登录缺陷。

会话状态——可推出的令牌、令牌处理不安全。

访问控制——水平权限和垂直权限提升。

用户伪装功能——权限提升。

使用明文通讯——会话劫持、收集证书和其他敏感数据。

站外链接——Referer消息头中查询字符串参数泄露。

外部系统接口——处理会话/或访问控制的快捷方式。

错误消息——信息泄露。

电子邮件交互——电子邮件与命令注入。

本地代码组件或交互——缓冲区溢出。

使用第三方应用程序组件——已知漏洞。

已确定的Web服务器软件——常见配置薄弱环节、已知软件程序缺陷。

 

第五章 避开客户端控件

通过客户端传送数据:

可以使用代理服务器拦截:

  • 隐藏表单字段:通过使用代理服务器拦截(burp proxy)随意修改表单中的隐藏值
  • HTTP COOKIE:虽然cookie和隐藏表单字段一样,都是不能够被直接修改的,但是用户也可以使用拦截代理服务器,通过更改设置cookie的服务器响应或者随后发布这些cookie的客户端请求,对 HTTP cookie进行修改。
  • URL参数
  • Referer消息头
     

 

 

你可能感兴趣的:(读书笔记)