Skip to content
This repository has been archived by the owner on Apr 23, 2020. It is now read-only.

Stored & Reflected XSS in Exhibitor v1.5.6 #356

Open
bugger77 opened this issue Oct 3, 2017 · 4 comments
Open

Stored & Reflected XSS in Exhibitor v1.5.6 #356

bugger77 opened this issue Oct 3, 2017 · 4 comments

Comments

@bugger77
Copy link

bugger77 commented Oct 3, 2017

I found that the following string can be added to the node explorer, allowing an attacker to create a stored cross site scripting (XSS) that can be seen under the logs tab.
Payload : "><img+src=x+onerror=alert('XSS')>.

exhibitor-2nd-xss-1
exhibitor-2nd-xss-2
exhibitor-2nd-xss-3
exhibitor-xss
exhibitor-xss-1
Attached some screenshots

@xiaochuanyu
Copy link
Contributor

Hi, thanks for the very detailed report.
I'm not very familiar with how to prevent this type of attack (and web dev in general).
A pull request would be greatly appreciated.

@bugger77
Copy link
Author

Hi @xiaochuanyu ,

Thanks for Response. This issue can be fixed by validating all the input that is coming from various components of the website like the database, end user, a web service, forms, hidden form fields, cookies, query strings etc. This can be ensured in two ways:

Validating the input fields: The most effective method of addressing XSS vulnerabilities is to only accept and process data that is considered valid and reject everything else. This process entails White-List validation by permitting only those characters that may be legitimate input for a given field. For example, if the field is meant to accept a telephone number it should filter out or escape out all characters other than [0-9] and -. : <,>,”,’,%,;,&,(,),+.

Escaping All Output: This process entails HTML Encoding all characters to prevent any execution. For example, if the < character is encoded to &lt then it will not be interpreted by the browser as the start of a tag and would simply be displayed as <.

Let me know anything else you required.

@bugger77
Copy link
Author

Hi @xiaochuanyu ,

Any update on Fixes.

@haywhisksoftware
Copy link

For the Explore tab, the root cause seems to be that DynaTree (the library used to generate the tree of znodes in the Explore tab) does not escape its input.
Fancytree, dynatree's sequel, is able to escape its input via the escapeTitles parameter.

For the Log tab, see issue #331 .

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants