Cross-site Scripting (XSS) - Reflected in beancount/fava
Jun 9th 2022
The time parameter in
fava is vulnerable to reflected XSS
Proof of Concept
- 1.Open the web browser to access the fava webpage.
- 2.Access the url:
https://fava.pythonanywhere.com/example-beancount-file/income_statement/?time=%22%3E%3Cbutton+onclick%3Dalert%281%29%3EClICK+ME%3C%2Fbutton%3EScript will be reflected in on clicking the button.
- 3.when the victim clicks on the button -> Alert box will pop up
If an attacker can control a script that is executed in the victim's browser, then they can typically fully compromise that user. Amongst other things, the attacker can:
+Perform any action within the application that the user can perform.
+View any information that the user is able to view.
+Modify any information that the user is able to modify.
Initiate interactions with other application users, including malicious attacks, that will appear to originate from the initial victim user. There are various means by which an attacker might induce a victim user to make a request that they control, to deliver a reflected XSS attack. These include placing links on a website controlled by the attacker, or on another website that allows content to be generated, or by sending a link in an email, tweet or other message