This repository was archived by the owner on Dec 19, 2023. It is now read-only.
HTML-escaping of xss payload in NodeJS Applcation Path #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📊 Metadata *
Bounty URL: https://www.huntr.dev/bounties/1-other-openfire-nodejs-plugin/
⚙️ Description *
In the field of Nodejs Application path in the page of the plugin, the (dangerous) characters of the vulnerable field that can cause an XSS are transformed in a way the are not dangerous any more
💻 Technical Description *
The XSS payload was inserted in the html template without escaping the dangerous characters. The fix is using the method that HTML-escapes dangerous characters in the apache.commons.text (already present in the pom of the project); the field content is now rendered in a safe way without causing xss
🐛 Proof of Concept (PoC) *
The video shows how the payload triggers the XSS after saving the change. The version of the plugin is the one on the marketplace
xss_nodejs.mp4
🔥 Proof of Fix (PoF) *
The video shows that the payload doesn't trigger XSS anymore thantk to escaping some characters. The version of the plugin is 0.1.2-SNAPSHOT.
fixed_xss_nodejs.mp4
👍 User Acceptance Testing (UAT)
After the fix, the page is still working correctly as before the fix and the XSS is not triggered anymore. All the changes made are on the way the page is rendered and no backend business logic has been changed, preserving correct functionality-