A critical vulnerability in the popular WordPress plugin GamiPress has been uncovered, leaving users exposed to unauthenticated SQL injection attacks.
The issue, assigned the identifier CVE-2024-13496, carries a high CVSS 3.1 score of 7.5, indicating significant potential for exploitation.
CVE-2024-13496 was discovered during a security assessment of GamiPress version 7.2.1. The vulnerability affects all versions up to 7.3.1, making it imperative for users to update to the latest secure release.
Initial Analysis
As per a report by Abrahack, the vulnerability was identified in the wp_ajax_nopriv_{$action} hook, which allows unauthenticated access.
Specifically, the gamipress_get_logs AJAX endpoint was found to be vulnerable, as it retrieves logs of user interactions and accepts several parameters that could influence database queries.
The gamipress_ajax_get_logs function is crucial in this context. It uses the $_REQUEST array, which is passed into the gamipress_logs_shortcode function.
This function, in turn, uses the gamipress_logs_shortcode_query function to query the database via the CT_Query class.
function gamipress_ajax_get_logs() {
// Security check
check_ajax_referer( 'gamipress', 'nonce' );
// Set current page
if( isset( $_REQUEST['page'] ) && absint( $_REQUEST['page'] ) > 1 ) {
set_query_var( 'paged', absint( $_REQUEST['page'] ) );
}
$atts = $_REQUEST;
// Sanitize
foreach( $atts as $attr => $value ) {
$atts[$attr] = sanitize_text_field( $value );
}
// Send successful response
wp_send_json_success( gamipress_do_shortcode( 'gamipress_logs', $atts ) );
}
The vulnerability exploits the orderby HTTP Request parameter, which is passed unsafely into an SQL query.
Although limitations like stripping white spaces and disallowing single and double quotes are in place, attackers can still exploit this using carefully crafted payloads.
A boolean time-based SQLi payload was used to demonstrate the exploit. This type of payload can allow attackers to infer information about the database, even without directly extracting data.
The vendor addressed this vulnerability in version 7.3.2 by implementing a whitelist approach for the orderby parameter.
This ensures that only predefined columns in the gamipress_logs table can be used, effectively preventing SQL injection attacks.
This vulnerability highlights the importance of ensuring that user inputs are safely processed, particularly in WordPress plugins.
Users are urged to update their GamiPress installations to version 7.3.2 or later to protect against potential SQL injection attacks.
Investigate Real-World Malicious Links & Phishing Attacks With Threat Intelligence Lookup - Try for Free