Back to articles
CRITICAL9.8/10CVE-2020-37153NVD

CVE-2020-37153: When Your VoIP Billing Platform Becomes a Root Shell

Here's the thing about a CVSS 9.8 that's classified under CWE-79 (XSS): the headline weakness understates the real danger.

@0xrafasecFebruary 18, 2026cve-analysis

CVSS: 9.8/10 (CRITICAL)

Available in Português

Share:

Legal & Ethical Disclaimer

This content is provided for EDUCATIONAL and AUTHORIZED SECURITY TESTING purposes only.

DO
  • Use these techniques on systems you own or have explicit written permission to test
  • Practice in authorized lab environments (VulnHub, HackTheBox, DVWA, etc.)
  • Follow responsible disclosure practices when finding vulnerabilities
  • Use knowledge for defensive security and authorized penetration testing
DO NOT
  • Access systems without explicit authorization
  • Use these techniques for malicious purposes
  • Deploy exploits against production systems you don't own
  • Share working exploits for unpatched vulnerabilities

Legal warning

Unauthorized access to computer systems is illegal in most jurisdictions (e.g. CFAA in the US, Computer Misuse Act in the UK). Violators may face criminal prosecution and civil liability. The author and publisher assume no liability for misuse of this information. By continuing, you agree to use this knowledge ethically and legally.

CVE-2020-37153: When Your VoIP Billing Platform Becomes a Root Shell

ASTPP bills itself as a complete VoIP billing solution. What it also shipped was a multi-stage attack chain that lets a network-adjacent attacker go from zero to root in a few carefully crafted requests — and the XSS is almost the least interesting part of this story.


🎯 Impact: Full system compromise via chained XSS + command injection → root RCE
🔓 Attack Vector: Network (authenticated or via session hijack)
💥 Exploitability: Moderate (requires auth, but XSS removes that barrier)
🛡️ Fix Available: Version-specific patches; upgrade path recommended
⏱️ Patch Now: Yes — immediately, if ASTPP 4.0.1 is internet-facing

What's Actually Happening

Here's the thing about a CVSS 9.8 that's classified under CWE-79 (XSS): the headline weakness understates the real danger. The NVD entry mentions XSS and command injection in the same breath, and that's the key signal. This isn't two independent bugs — it's a compound vulnerability chain where XSS is the delivery mechanism and command injection is the payload.

ASTPP 4.0.1 fails to sanitize user-controlled input in at least two administrative surfaces:

  1. SIP device configuration interface — Fields that configure SIP devices (think device names, user agents, codec strings) are written directly into configuration files or shell commands without proper escaping.
  2. Plugin management interface — Plugin names or parameters are processed in a context where shell metacharacters are interpreted.

The root cause is classic and painfully common in legacy PHP-based telecom management software: direct interpolation of user input into shell command strings. The vulnerable pattern looks something like this:

php
// Conceptual representation of the vulnerable pattern
// NEVER do this
$device_name = $_POST['device_name'];  // Unsanitized user input
$output = shell_exec("asterisk -rx 'sip show peer " . $device_name . "'");

// An attacker submits: '; id; whoami; #
// Resulting command: asterisk -rx 'sip show peer '; id; whoami; #'

The XSS lives in the same admin panel, where input like device labels or plugin display names is reflected back into the DOM without HTML encoding. On its own, stored XSS in an admin panel sounds like a medium-severity finding. What makes this critical is what that admin panel can do — it has direct pathways to command injection and, per the disclosure, cron task manipulation with root-level execution.

This pattern — insufficient output encoding and insufficient input validation sharing the same attack surface — suggests the application was built without a coherent security model for user-supplied data. These aren't two separate developer mistakes; they're symptoms of the same underlying design philosophy: trust the admin interface to only receive friendly input.

VoIP billing platforms are particularly prone to this class of bug because they evolved from telecom roots where the threat model was "the admin is trusted." The entire application architecture was built around convenience for operators, not defense against a compromised or malicious admin session.


Exploitation Path

The attack has two distinct shapes depending on what access an attacker already has.

Path 1: Authenticated Command Injection (Direct)

Prerequisites: Valid admin credentials (brute force, credential stuffing, leaked creds from another breach, or default credentials left unchanged).

  1. Attacker logs into the ASTPP admin panel.
  2. Navigates to SIP device configuration or plugin management.
  3. Injects shell metacharacters into a device parameter field (e.g., device name containing ;malicious_command;).
  4. ASTPP processes the save action, passing unsanitized input to a shell_exec() or equivalent call.
  5. Attacker achieves command execution under the web server process (typically www-data or asterisk).
  6. If cron manipulation is available (and per disclosure, it is), attacker plants a cron job running as root.
  7. Game over. Root shell.

Path 2: XSS → Session Hijack → Command Injection (Unauthenticated Escalation)

Prerequisites: Ability to get a stored XSS payload into the system (e.g., via a customer-facing input that surfaces in the admin view — common in billing platforms where customer data is displayed to admins).

  1. Attacker submits a crafted input through a user-facing surface (support ticket, account field, CDR comment) that gets stored in the database.
  2. When an administrator views the relevant page, the stored XSS fires.
  3. The XSS payload exfiltrates the admin's session cookie to an attacker-controlled server.
  4. Attacker replays the session cookie, gaining authenticated admin access.
  5. Proceed through Path 1 from step 2.

Real-world scenario: A VoIP reseller's ASTPP instance is internet-facing (common — admins need remote access). An attacker registers as a customer, submits a support ticket with a stored XSS payload. The next time an admin opens that ticket, the attacker owns the session. Three steps later, they have a root cron backdoor on a box that likely processes payment data and stores call records for potentially thousands of subscribers.


Who's Actually At Risk

ASTPP is popular in the wholesale VoIP carrier and VoIP reseller space — companies that run it are often small-to-medium telecom operators, hosted PBX providers, and international callback service operators. These environments tend to have:

  • Internet-facing admin panels (operators manage remotely)
  • Default or weak credentials (small teams, lots of plates spinning)
  • Minimal security monitoring (not their core competency)
  • High-value data (CDRs, payment info, customer PII, carrier trunk credentials)

The industries most exposed: telecom infrastructure providers, hosted communications companies, and any enterprise running ASTPP for internal billing of their Asterisk/FreeSWITCH deployment.

As of this writing, I'm not aware of confirmed mass exploitation in the wild, but that's not the comfort it might seem. This class of target (telecom billing) is actively hunted by criminal groups interested in toll fraud — and a root shell on a billing server is a toll fraud attacker's dream. The absence of public PoC chatter doesn't mean it isn't being used quietly.


Detection & Hunting

If you're running ASTPP and wondering whether someone has already been through your front door, here's what to look for:

Log Patterns to Hunt

Check your web server access logs for requests to the SIP device configuration and plugin management endpoints containing suspicious characters:

# Patterns in access logs that warrant investigation
/admin/devices/save.*[;|`$(){}]
/admin/plugins/.*[;|`$(){}]
POST.*device_name.*%3B    # URL-encoded semicolons
POST.*plugin.*%7C         # URL-encoded pipes

Cron Backdoor Check

If you suspect compromise, check these locations immediately:

bash
# Check all crontab entries for unexpected additions
crontab -l -u root
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /etc/cron.hourly/ /etc/cron.daily/

# Look for web shell artifacts
find /var/www -name "*.php" -newer /var/www/astpp -ls
find /tmp /var/tmp -name "*.php" -o -name "*.sh" 2>/dev/null

Conceptual SIEM Detection Logic

yaml
# Conceptual Sigma-style rule — adapt to your SIEM
title: ASTPP Admin Panel Command Injection Attempt
description: Detects shell metacharacters in ASTPP admin POST parameters
logsource:
  category: webserver
detection:
  selection:
    cs-uri-stem|contains:
      - '/admin/devices'
      - '/admin/plugins'
    cs-method: 'POST'
    cs-uri-query|contains:
      - ';'
      - '|'
      - '`'
      - '$('
      - '&&'
  condition: selection
falsepositives:
  - Legitimate admin activity with unusual device names (low probability)
level: high

Process Lineage: If you have EDR, look for asterisk, apache2, or php-fpm spawning child processes like sh, bash, curl, wget, or nc. That process tree is abnormal and worth immediate investigation.


Mitigation Playbook

1. Immediate (Do This Now)

  • Upgrade ASTPP to the latest available version. If you're on 4.0.1, you are confirmed vulnerable.
  • Take the admin panel offline or restrict it to VPN/allowlisted IPs via firewall rules. This doesn't fix the bug, but it collapses the attack surface dramatically.
  • Force rotate all admin credentials and invalidate active sessions.
  • Audit existing cron jobs on the ASTPP host right now using the commands above.

2. Short-term (If Patching Is Delayed)

  • Deploy a WAF rule blocking requests to admin endpoints containing shell metacharacters (;, |, `, $(, &&, ||).
  • Enable PHP's disable_functions in php.ini to block shell_exec, exec, system, passthru — though this may break application functionality and requires testing.
  • Implement Content-Security-Policy headers to limit XSS impact: Content-Security-Policy: script-src 'self'.
  • Enable HTTP-only and Secure flags on session cookies to reduce session hijacking viability.

3. Long-term Hardening

  • Run the web application as a minimally privileged user — it should never be able to write to cron directories.
  • Implement a reverse proxy (nginx) in front of ASTPP with request filtering.
  • Separate the Asterisk/FreeSWITCH process from the web application process; command injection into a web tier shouldn't reach telephony infrastructure directly.
  • Conduct a code review of any other shell_exec/exec calls in the codebase — where there's one, there are usually more.

4. Verify You're Protected

After patching or implementing mitigations, validate by:

  • Attempting to submit a device name containing ; id through the admin UI — it should be rejected or sanitized.
  • Confirming WAF logs are capturing shell metacharacter attempts.
  • Running a credentialed scan with a modern vulnerability scanner against the updated instance.

My Take

The 9.8 CVSS is defensible, but I'd argue the framing around CWE-79 undersells what's happening here. Leading with XSS suggests a moderate-to-high web vulnerability; the command injection with root escalation via cron is what earns the critical rating. The vulnerability chain is the story, and the disclosure should have leaded with it.

If I'm being honest, this vulnerability tells us something uncomfortable about the state of telecom software security. VoIP billing platforms serve as the financial nervous system of small and mid-tier carriers — they hold payment data, call records, carrier trunk credentials, and customer PII. Yet they're routinely built by small development teams optimizing for feature delivery over security, and deployed by operators who may not have dedicated security staff. The attack surface they present is disproportionately large relative to the scrutiny they receive.

The real-world risk here is higher than academic analysis suggests because of the target profile. A toll fraud actor with a root shell on a VoIP billing server doesn't just have a compromised box — they have the keys to potentially route millions of dollars in fraudulent calls through legitimate carrier infrastructure before anyone notices. That's a concrete, monetizable outcome that makes this more attractive to exploit than a typical web app RCE. The security community should treat telecom billing software with the same scrutiny we give financial sector applications, because at this point, that's effectively what they are.


Timeline

DateEvent
2020 (est.)Vulnerability discovered in ASTPP 4.0.1
2020CVE-2020-37153 reserved
2020–2021Public disclosure via NVD
OngoingVendor patch status — verify against current ASTPP release

Note: Precise researcher disclosure and vendor notification dates are not publicly documented in available sources. If you have additional timeline information, reach out.


References

Found this article interesting? Follow me on X and LinkedIn.