Cross-site scripting (XSS) is a type of computer security vulnerability typically found in Web applications. Cross-Site Scripting (XSS) attacks are a type of injection, in which malicious scripts are injected into trusted web sites.
Cross-site Scripting (XSS) is generally believed to be one of the most common application layer hacking techniques.
XSS is the hacking technique that leverages vulnerabilities in the code of a web application to allow an attacker to send malicious content from an end-user and collect some type of data from the victim.
An attacker can use XSS to send a malicious script to an unsuspecting user. The end user’s browser has no way to know that the script should not be trusted, and will execute the script. Because it thinks the script came from a trusted source, the malicious script can access any cookies, session tokens, or other sensitive information retained by the browser and used with that site. These scripts can even rewrite the content of the HTML page.
There are three types of XSS Attacks :
- Stored/Persistent XSS
Stored XSS generally occurs when user input is stored on the target server, such as in a database, in a message forum, visitor log, comment field, etc. And then a victim is able to retrieve the stored data from the web application without that data being made safe to render in the browser.
- Reflected/Non-Persistent XSS
Reflected XSS occurs when user input is immediately returned by a web application in an error message, search result, or any other response that includes some or all of the input provided by the user as part of the request, without that data being made safe to render in the browser, and without permanently storing the user provided data.
- DOM Based XSS
It is an XSS attack wherein the attack payload is executed as a result of modifying the DOM “environment” in the victim’s browser used by the original client side script, so that the client side code runs in an “unexpected” manner. That is, the page itself (the HTTP response that is) does not change, but the client side code contained in the page executes differently due to the malicious modifications that have occurred in the DOM environment.
Few of the popular websites vulnerable to XSS which I found out while browsing into these websites. I reported the issues to the respective websites support and security team. They have fixed the issue after that.
Vulnerable Parameter: query
|XSS in www.thefind.com|
Vulnerable Parameter: searchname
|XSS in www.timesdeal.com|
|XSS in www.tradus.com|
Vulnerable URL parameters: "fromCityName" and "toCityName".
|XSS in www.redbus.in|
How to Determine If You Are Vulnerable
XSS flaws can be difficult to identify and remove from a web application. The best way to find flaws is to perform a security review of the code and search for all places where input from an HTTP request could possibly make its way into the HTML output.
How to Protect Yourself
- Contextual output encoding/escaping of string input
- Safely validating untrusted HTML input