如何使用拦截代理测试网站安全性


送给自己

思想和身体,必须有一个在旅行,才能保持进步。

  我们都知道网络安全威胁日益增长,危险也相继增加,在恶意者攻击之前先对自己网站的进行安全测试是非常重要的事。即使是最呆滞的管理员也会利用Nmap和Nessus对自己的固定系统进行扫描(尽管他可以忽略扫描器提供的大量扫描选项),但要找到知道如何利用拦截代理的人稍微困难一些,甚至不知道它是什么。原因很简单,因为一个基础的漏洞扫描是一自动任务展现出来。因此你不需要动脑,在使用拦截代理时,需要严格的逻辑去理解你在控制台看到的东西。在这篇文章中,我们会看到什么是拦截代理以及如何使用拦截代理去测试应用的安全性。
1

了解HTTP协议

HTTP是超文本传输协议的简称,HTTP是对client(电脑)和server(远端主机)之间传输文本进行规范的协议,数据交换过程如下:client发送请求给server,server接受请求后返回client

请求所需的资源。一般server默认开放的端口是80(http)或者443(https),所有HTTP请求包括三部分:

  • 一种标识请求类型的方法,以及客户端使用的URI和HTTP版本
  • 包含可选参数的请求头
  • 附加到请求的可选MIME(多用途Internet邮件扩展)文档

HTTP响应也由三部分组成,具体为:

  • 一个三位数的状态行
  • 一个标题
  • 一个MIME文件

HTTP方法

存在多种HTTP的请求方法,例如:GET、POST、HEAD、PUT、TRACE、OPTIONS等等,以下为常见的三种介绍:

  • GET:请求参数可在URL中直接可见
  • POST:以URL中不可见参数的模式向服务器发送请求
  • HEAD:GET方法的变异,用于检索文档的标题,但不是文档本身。它可以用来验证文档是否存在。

HTTP头(HTTP HEADERS)

  • Content-Length: 内容长度
  • Content-Type: 标明文件的类型、格式
  • Content-Encoding: 编码格式
  • Server: 返回服务器的类型
  • Date: 日期
  • Last-Modified: 文件最新更改时间
  • User-Agent: 请求的浏览器类型,服务器会根据此返回相应浏览器能解析的内容
  • If-Modified-Since: 一个日期,只有当文件版本更新于目前版本的时候。
  • Reffer: 请求跳转地址
  • Host: 当前地址

什么是拦截代理?

  在测试你的网站之前,你需要理解网站正常运行中所有可能的情况。想要了解这些,那么必须从request和response入手,分析每一种请求和响应的情况。这里介绍一种有用的拦截代理工具。这款工具对于帮助测试网站真的非常有效。拦截代理,顾名思义,可以抓取每一个请求以及响应信息,并且修改抓取到的请求/响应再发送出去。

安装ZAP

ZAP全程Zed Attack Proxy,ZAP是多种拦截代理的一种,完全免费且性能优异,适应多个平台,因此你可以安装在Linux或者Windows系统下,下面介绍在Linux下的安装:

  • 下载地址:https://github.com/zaproxy/zaproxy/wiki
  • 安装输入:./ZAP_X_X_Xunix.sh
  • 运行:cd /usr/local/bin: ./zap.sh
    现在你的界面会弹出如下选项:
    2
    点击“Yes, I want to persist this session”,并给它想要的名字和位置,现在你会看到主控制太是空的:
    3
    打开“tools”–‘options’–‘local proxies’,并且记住ZAP正在监听的端口号(地址是localhost:xxx),如果你喜欢也可以更改端口号。
    4
    现在点击“Dynamic SSL Certificates”然后点击“generate”—-“save”
    5
    现在你已经创建了一个新的证书,你的浏览器会信任ZAP,认为它是可信的本地代理。接下来去浏览器下设置监听的代理端口
    6
    7
    现在需要去浏览器导入ZAP证书,设置一下代理即可开启监听模式,对请求包和响应包进行拦截/监听。
    8
    设置完成之后就可以开启代理,对浏览器的所有请求进行监听了。
    9
    10

代理补充

当然如果你想尝试其他的拦截代理,常用的还有:

  • Burp Suite(Windows,Linux,Mac,Ubuntu)
  • WebScrab
  • Vega
  • Paros
  • Charles(Mac)
  • Fiddler(Windows)

现在我们安装了拦截代理,并且我们能够捕获每个请求和每个响应,让我们看看我们如何使用收集的信息来研究我们网站的行为。起点是找到我们应用程序的入口点。在您浏览应用程序时,请注意使用GET和POST方法的位置。

您可以看到GET是最常用的方法,但在POST中,您通常可以找到敏感信息,例如项目的价格以及开发人员不希望用户查看和修改的其他内容。还请注意使用PUT和DELETE等不常见方法的位置,因为它们通常会显示应用程序的意外行为。尝试了解Cookie的建立位置并跟踪每一个隐藏的表单。识别POST请求中的所有隐藏参数(在没有拦截代理的情况下您不能看到这些参数),并识别
GET请求中的所有查询字符串(带有“?”标记的那些字符串)。查找查询字符串中的所有参数,如“pass=foo”;即使加密,您也必须确定参数。记下每个4XX和5XX状态码的每个重定向,以及更一般的每个错误消息。

这个枚举工作非常无聊,但随着经验的增长,您将能够在更短的时间内识别出您网站的有趣区域。测试的这个关键阶段对于执行每项安全测试都很重要,但这只是开始;如果您执行详尽的枚举阶段,您将能够识别您的应用程序的漏洞。

文章来源:

https://www.deepdotweb.com/2018/02/16/test-websites-security-intercepting-proxy/


sign bman

-------------本文结束感谢浏览-------------