如何使用Hetty对HTTP进行安全研究审计
2020-12-18 00:57:20 Author: www.freebuf.com(查看原文) 阅读量:84 收藏


Hetty

Hetty是一款针对安全研究设计的HTTP工具套件,该工具的目标是成为一些商业软件(比如说BurpSuite Pro)的开源替代产品。该工具的功能十分强大,并且针对信息安全以及漏洞Hunter社区的需求进行了定制开发。

该工具目前提供了下列功能:

  • 中间人攻击,提供了包含日志记录的HTTP/1.1代理;
  • 基于项目的数据库存储(SQLite);
  • Scope支持;
  • 使用了GraphQL实现管理API;
  • 嵌入式Web接口(js);

需要注意的是,当前版本的Hetty仍处于前期开发阶段,之后的版本还将添加更多的功能。

工具安装

Hetty会对自包含代码进行编译,其中包含嵌入式的SQLite数据库和一个基于Web实现的管理员接口。

安装预构建版本(建议)

广大研究人员可以直接访问该项目的【Releases页面】来下载对应操作系统平台(支持Linux、macOS和Windows)的Hetty。

从源码构建

依赖组件:

Hetty的功能实现依赖于SQLite(mattn/go-sqlite3),并且需要cgo来进行编译。除此之外,管理员面板(Next.js)的静态资源需要通过Yarn来生成,并且使用go.rice来嵌入到一个.go文件中。

接下来,使用下列命令将该项目源码克隆至本地,并使用build命令来创建出项目代码:

$ git clone [email protected]:dstotijn/hetty.git

$ cd hetty

$ make build

Docker安装

该工具还能够以Docker镜像来使用,该工具的Docker镜像目前已托管至Docker Hub上:dstotijn/hetty

如果需要持久存储CA证书和项目数据库的话,我们还需要运行下列命令来加载卷宗:

$ mkdir -p $HOME/.hetty

$ docker run -v $HOME/.hetty:/root/.hetty -p 8080:8080 dstotijn/hetty

工具使用

Hetty开始运行之后,默认会监听8080端口,并且可以通过http://localhost:8080来访问。根据传入的HTTP请求,该工具要么会以中间人(MITM)代理的身份运行,要么以API和Web接口的形式运行。

默认配置系啊,项目数据库和CA证书将存储在用户主目录下的.hetty目录之中。Linux/macOS对应的是$HOME,Windows对应的是%USERPROFILE%。

接下来,确保hetty路径已经设置在了$PATH环境变量中,然后运行下列命令:

$ hetty

下面给出的是工具的帮助文档和参数选项:

$ hetty -h

Usage of ./hetty:

  -addr string

        TCP address to listen on, in the form "host:port" (default ":8080")

  -adminPath string

        File path to admin build

  -cert string

        CA certificate filepath. Creates a new CA certificate is file doesn't exist (default "~/.hetty/hetty_cert.pem")

  -key string

        CA private key filepath. Creates a new CA private key if file doesn't exist (default "~/.hetty/hetty_key.pem")

  -projects string

        Projects directory path (default "~/.hetty/projects")

此时我们将看到:

2020/11/01 14:47:10 [INFO] Running server on :8080 ...

接下来,访问http://localhost:8080即可。

证书配置和安装

为了让Hetty代理能够将请求顺利发送到HTTPS节点,我们需要为Hetty设置根CA证书。此外,可能需要将CA证书安装到主机上,以便浏览器信任这些证书。以下步骤将介绍如何生成证书,如何将其提供给Hetty,以及如何在本地CA存储中安装它们。

生成CA证书

可以用两种不同的方法生成CA密钥对。第一种方法直接与Hetty捆绑在一起,大大简化了流程。另一种方法是使用OpenSSL来生成它们,这样可以更好地控制过期时间和所使用的加密技术,但需要安装OpenSSL工具。我们建议初学者使用第一种方式。

使用Hetty生成CA证书

在Hetty首次通过命令行工具运行时,它会在~/.hetty/中生成默认密钥和证书。运行命令如下,不需要任何运行参数:

hetty

此时我们将得到~/.hetty/hetty_key.pem和~/.hetty/hetty_cert.pem,也就是对应的密钥和证书。

使用OpenSSL生成CA证书

我们可以生成一个新的密钥和CA证书,不过它们将在一个月后过期:

mkdir ~/.hetty

openssl req -newkey rsa:2048 -new -nodes -x509 -days 31 -keyout ~/.hetty/hetty_key.pem -out ~/.hetty/hetty_cert.pem

默认配置下,Hetty将会检查~/.hetty/中的密钥以及CA证书,也就是对应的hetty_key.pem和hetty_cert.pem。我们可以手动将它们移动到这里,Hetty将会自动检测它们。

hetty -key key.pem -cert cert.pem

信任CA证书

为了让浏览器允许网络流量通过本地Hetty代理,我们还需要将这些证书安装在本地CA存储中。

在Ubuntu中,我们可以使用下列命令更新本地VA存储,并安装证书:

sudo cp ~/.hetty/hetty_cert.pem /usr/local/share/ca-certificates/hetty.crt

sudo update-ca-certificates

在Windows中,需要使用证书管理器来添加证书:

certmgr.msc

在macOS下,我们需要使用钥匙串访问程序来添加证书:

Application/Utilities/Keychain Access.app

工具运行截图

许可证协议

该项目的开发与发布遵循MIT开源许可证协议。

项目地址

Hetty:【GitHub传送门

参考资料


文章来源: https://www.freebuf.com/articles/web/258188.html
如有侵权请联系:admin#unsafe.sh