/

CVE-2019-25778

Severity:

HIGH RISK

(8.2)

SQL Injection (CWE-89) in SeaCMS Comment API Endpoint

CVE-2019-25778

Deferred

Vulnerability type

Category:

SQL Injection

CWE:

CWE-89

Impact:

Unauthorized Database Access and Information Disclosure

Severity:

HIGH RISK

(8.2)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

SeaCMS through version 8.7 contains an unauthenticated SQL injection vulnerability in the comment API. A remote attacker may manipulate database queries through the rlist[] parameter and retrieve database information when error-based query behavior is exposed.

SeaCMS through version 8.7 contains an unauthenticated SQL injection vulnerability in the comment API. A remote attacker may manipulate database queries through the rlist[] parameter and retrieve database information when error-based query behavior is exposed.

Affected context

The vulnerability occurs in SeaCMS deployments where the comment API endpoint accepts user-controlled rlist[] array values and incorporates them into database queries without adequate parameterization or validation. Risk is higher when the endpoint is publicly reachable and database errors or query results are returned to unauthenticated clients.

The vulnerability occurs in SeaCMS deployments where the comment API endpoint accepts user-controlled rlist[] array values and incorporates them into database queries without adequate parameterization or validation. Risk is higher when the endpoint is publicly reachable and database errors or query results are returned to unauthenticated clients.

Exploit preconditions

  • Attack surface: Publicly reachable HTTP GET request to the SeaCMS comment API
  • Required access: No authentication is generally required
  • Trigger point: Processing of attacker-controlled rlist[] values
  • Why exploitation is possible: Input can influence database query construction without sufficient separation between data and SQL syntax
  • Attack surface: Publicly reachable HTTP GET request to the SeaCMS comment API
  • Required access: No authentication is generally required
  • Trigger point: Processing of attacker-controlled rlist[] values
  • Why exploitation is possible: Input can influence database query construction without sufficient separation between data and SQL syntax

Why this happens

The underlying bug is an unsafe combination of externally supplied input and dynamically constructed SQL statements. When request parameters are treated as trusted query fragments instead of bound data, attackers may alter query logic or cause database evaluation of unintended expressions. This behavior maps to CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection').

The underlying bug is an unsafe combination of externally supplied input and dynamically constructed SQL statements. When request parameters are treated as trusted query fragments instead of bound data, attackers may alter query logic or cause database evaluation of unintended expressions. This behavior maps to CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection').

Potential impact

  • An attacker could retrieve sensitive database information
  • Database queries could be altered to affect application behavior
  • Stored records could be modified or deleted
  • Database availability could be disrupted
  • Compromised data could support further application or infrastructure attacks
  • An attacker could retrieve sensitive database information
  • Database queries could be altered to affect application behavior
  • Stored records could be modified or deleted
  • Database availability could be disrupted
  • Compromised data could support further application or infrastructure attacks

General mitigation guidance

Mitigation generally focuses on removing direct coupling between request parameters and SQL syntax.

Common defensive patterns include:

  • Using parameterized queries or well-designed database abstraction layers
  • Applying allowlist validation for expected array values and data types
  • Avoiding dynamic SQL construction from request parameters
  • Returning generic database errors without query details or diagnostic output
  • Limiting the database account to the minimum permissions required by the application
  • Restricting public access to administrative or unnecessary API functionality

Mitigation generally focuses on removing direct coupling between request parameters and SQL syntax.

Common defensive patterns include:

  • Using parameterized queries or well-designed database abstraction layers
  • Applying allowlist validation for expected array values and data types
  • Avoiding dynamic SQL construction from request parameters
  • Returning generic database errors without query details or diagnostic output
  • Limiting the database account to the minimum permissions required by the application
  • Restricting public access to administrative or unnecessary API functionality

How teams detect issues like this

Organizations can look for:

  • Static analysis findings involving string concatenation or interpolation near SQL execution calls
  • Code review signals where HTTP parameters flow into query builders without binding
  • Web logs showing unusual array parameters, database error responses, or repeated probing of the comment API
  • Database monitoring for unexpected query structures, access patterns, or privilege use
  • Policy enforcement requiring parameterized queries and input validation in application code

Automated application security and code review tools may help identify common SQL injection patterns, but findings should be validated against actual data flows.

Organizations can look for:

  • Static analysis findings involving string concatenation or interpolation near SQL execution calls
  • Code review signals where HTTP parameters flow into query builders without binding
  • Web logs showing unusual array parameters, database error responses, or repeated probing of the comment API
  • Database monitoring for unexpected query structures, access patterns, or privilege use
  • Policy enforcement requiring parameterized queries and input validation in application code

Automated application security and code review tools may help identify common SQL injection patterns, but findings should be validated against actual data flows.

Sources

SourceLink
github.comgithub.com/projectdiscovery/nuclei-templates/blob/main/http/vulnerabilities/other/seacms-sqli.yaml
seacms.comseacms.com/
uedbox.comuedbox.com/post/54561/
vulncheck.comvulncheck.com/advisories/seacms-8.7-sql-injection-via-comment-api-index-php-rlist-parameter

Frequently asked

questions

Yes. The affected API can be reached over HTTP, and exploitation generally does not require a local foothold when the endpoint is publicly accessible.

The described issue is unauthenticated, so an attacker may only need network access to the vulnerable comment API.

Ensure all request-derived values are validated and passed through parameterized database queries rather than concatenated into SQL statements.

Combine secure query APIs, strict input typing, least-privileged database accounts, generic error handling, and automated testing for injection behavior.

Yes. The affected API can be reached over HTTP, and exploitation generally does not require a local foothold when the endpoint is publicly accessible.

The described issue is unauthenticated, so an attacker may only need network access to the vulnerable comment API.

Ensure all request-derived values are validated and passed through parameterized database queries rather than concatenated into SQL statements.

Combine secure query APIs, strict input typing, least-privileged database accounts, generic error handling, and automated testing for injection behavior.

Find out what's already
exploitable in your codebase.