RacePWN——竞争条件框架

RacePWN——竞争条件框架

RacePWN(竞争条件框架)

1.描述

RacePWN 是一个 librace 库和 racepwn 实用程序,旨在通过使用 TCP 连接的协议测试竞争条件攻击。

1.1. librace

librace是一个用 C 编程语言编写的库,旨在通过网络创建并向单个主机发送多个请求。该库支持两种竞争类型:

  1. 并行– 在此模式下,为每个请求创建一个单独的连接。请求同时发送(使用非阻塞套接字写入)。可选地,发送请求可以分为 2 个部分。第一部分是发送请求的主要部分,第二部分是在一段时间后发送请求的最后一部分。可以设置延迟时间以及最后一部分的大小。
  2. 管道– 在这种模式下,请求被粘合在一起成一个大请求,通过一个连接发送。

1.2. racepwn

racepwn – 一个用 golang 编写的实用程序,通过用 json 编写的配置设置参数来实现 librace 接口。

配置文件示例

[
    {
        "race": {
            // Setting race parameters
            "type": "paralell", // race mode
            "delay_time_usec": 10000, // time delay between two request parts
            "last_chunk_size": 10 // last request chunck size
        },
        "raw": {
            "host": "tcp://localhost:8080", // hostname and port
            "ssl": false, // use ssl flag
            "race_param": [
                {
                    // race data parameters
                    "data": "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n", // raw HTTP request
                    "count": 100 // packets count
                }
            ]
        }
    }
]

支持两种操作模式。作为控制台实用程序和 Web 服务运行。

控制台实用程序:

在此操作模式下,配置文件被输入到应用程序输入中。应用程序向服务器发出请求。

racepwn < config.json

网络服务

在此模式下,该实用程序开始作为 Web 服务运行。要运行该实用程序,您需要POST request在路径上创建一个/race包含配置文件内容的配置文件。必须使用-hostname标志指定主机名和端口。

racepwn -host "localhost:8080"

例子

curl -i -X POST localhost:8080/race --data @<(cat config.json)

2. 安装

2.1. 依赖项

  • clang 或 gcc
  • golang
  • libevent (libevent-dev)
  • openssl (libssl-dev)
  • 构建

2.2. 构建

要开始构建过程,请运行./build.sh

警告:该版本仅针对 Linux 进行了测试。

2.3. 为 MacOS 构建

  1. 安装依赖项
brew install go openssl libevent cmake gcc
  1. 导出 LIBRARY_PATH
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
  1. 建造
./macos_build.sh

2.4. 与 Docker 一起使用

  1. 构建并运行
docker build -t racepwn .
docker run -it racepwn bash
  1. 启动应用程序
racepwn < /home/config.json

3. 如何操作

  • HTTP2 支持。
  • HTTP 响应解析。
  • Python 的绑定。

国内下载链接

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享