|
Hackers are constantly experimenting with a wide repertoire of
hacking techniques to compromise websites and web applications and make
off with a treasure trove of sensitive data including credit card
numbers, social security numbers and even medical records.
Cross Site Scripting (also known as XSS or CSS) is generally believed to be one of the most common application layer hacking techniques.
In general, cross-site scripting refers to that 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.
Today, websites rely heavily on complex web applications to deliver
different output or content to a wide variety of users according to set
preferences and specific needs. This arms organizations with the
ability to provide better value to their customers and prospects.
However, dynamic websites suffer from serious vulnerabilities rendering
organizations helpless and prone to cross site scripting attacks on
their data.
"A web page contains both text and HTML markup that is generated by
the server and interpreted by the client browser. Web sites that
generate only static pages are able to have full control over how the
browser interprets these pages. Web sites that generate dynamic pages
do not have complete control over how their outputs are interpreted by
the client. The heart of the issue is that if mistrusted content can be
introduced into a dynamic page, neither the web site nor the client has
enough information to recognize that this has happened and take
protective actions." (CERT Coordination Center).
Cross Site Scripting allows an attacker to embed malicious JavaScript,
VBScript, ActiveX, HTML, or Flash into a vulnerable dynamic page to
fool the user, executing the script on his machine in order to gather
data. The use of XSS might compromise private information, manipulate
or steal cookies, create requests that can be mistaken for those of a
valid user, or execute malicious code on the end-user systems. The data
is usually formatted as a hyperlink containing malicious content and
which is distributed over any possible means on the internet.
As a hacking tool, the attacker can formulate and distribute a
custom-crafted CSS URL just by using a browser to test the dynamic
website response. The attacker also needs to know some HTML, JavaScript
and a dynamic language, to produce a URL which is not too
suspicious-looking, in order to attack a XSS vulnerable website.
Any web page which passes parameters to a database can be vulnerable
to this hacking technique. Usually these are present in Login forms,
Forgot Password forms, etc…
N.B. Often people refer to Cross Site Scripting as CSS or XSS, which is can be confused with Cascading Style Sheets (CSS).
Is your site vulnerable to Cross Site Scripting
Our experience leads us to conclude that the cross-site scripting
vulnerability is one of the most highly widespread flaw on the Internet
and will occur anywhere a web application uses input from a user in the
output it generates without validating it. Our own research shows that
over a third of the organizations applying for our free audit service
are vulnerable to Cross Site Scripting. And the trend is upward.
Example of a Cross Site Scripting attack
As a
simple example, imagine a search engine site which is open to an XSS
attack. The query screen of the search engine is a simple single field
form with a submit button. Whereas the results page, displays both the
matched results and the text you are looking for.
Example:
Search Results for "XSS Vulnerability"
To be able to bookmark pages, search engines generally leave the
entered variables in the URL address. In this case the URL would look
like:
http://test.searchengine.com/search.php?q=XSS%20
Vulnerability
Next we try to send the following query to the search engine:
<script type="text/javascript">
alert('This is an XSS Vulnerability')
</script>
By submitting the query to search.php, it is encoded and the resulting URL would be something like:
http://test.searchengine.com/search.php?q=%3Cscript%3
Ealert%28%91This%20is%20an%20XSS%20Vulnerability%92%2
9%3C%2Fscript%3E
Upon loading the results page, the test search engine would probably
display no results for the search but it will display a JavaScript
alert which was injected into the page by using the XSS vulnerability.
|