Cross-site Scripting (XSS) - Reflected in beancount/fava
Reported on
Jun 9th 2022
Description
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%3E
Script will be reflected in on clicking the button. - 3.when the victim clicks on the button -> Alert box will pop up
Image
https://drive.google.com/file/d/1PJ_kKyn5KrHbzplApD-rfhuwSbtsCTvS/view?usp=sharing
Impact
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
SECURITY.md
a year ago
@admin can you please sent the magic link to the maintainers at this emails mail@jakobschnitzer.de mail@jakobschnitzer.de PS: This email were provided by them in one of the GitHub issues and I has also contacted them via mail and they requested to access the reports without signing up Thanks
I've dropped a comment on the GitHub Issue here. I do need to get authorised confirmation from the maintainers before sending any e-mails out with magic URLs.
SECURITY.md
for
beancount/fava
to merge.
a year ago
Since Fava URLs are dependent on the name of the underlying Beancount journal and the base URLs, which should be private and require a previous attach to be determined by the attacker, I've marked the attack complexity as "high"