An attack of this type exploits web applications that generate web
content, such as links in a HTML page, based on unvalidated or improperly
validated data submitted by other actors. XSS in HTTP Headers attacks target
the HTTP headers which are hidden from most users and may not be validated
by web applications.
Attack Execution Flow
Explore
Spider:
Using a browser or an automated tool, an attacker
follows all public links on a web site. He records
all the entry points (input) that becomes part of
generated HTTP header (not only GET/POST/COOKIE, but
also Content-Type, etc.)
Attack Step Techniques
ID
Attack Step Technique Description
Environments
1
Use a spidering tool to follow and record
all links and analyze the web pages to find entry
points. Make special note of any links that
include parameters used in the HTTP
headers.
env-Web
2
Look for HTML meta tags that could be
injectable
env-Web
3
Use a proxy tool to record all links visited
during a manual traversal of the web
application.
env-Web
4
Use a browser to manually explore the
website and analyze how it is constructed. Many
browsers' plugins are available to facilitate the
analysis or automate the discovery.
env-Web
Indicators
ID
type
Indicator Description
Environments
1
Positive
Web content is generated by the application
and served to the browser based on
user-controllable inputs.
env-Web
2
Positive
HTTP header variables are used by the
application or the browser (DOM)
env-Web
3
Inconclusive
No HTTP variables appear to be used on the
current page. Even though none appear, the web
application may still use them if they are
provided.
env-Web
4
Negative
Applications that have only static pages or
that simply present information without accepting
input are unlikely to be susceptible.
env-Web
Outcomes
ID
type
Outcome Description
1
Success
A list of URLs, with their
corresponding HTTP variables is created by the
attacker.
Security Controls
ID
type
Security Control Description
1
Detective
Monitor velocity of
page fetching in web logs. Humans who view a page
and select a link from it will click far slower
and far less regularly than tools. Tools make
requests very quickly and the requests are
typically spaced apart regularly (e.g. 0.8 seconds
between them).
2
Detective
Create links on some
pages that are visually hidden from web browsers.
Using IFRAMES, images, or other HTML techniques,
the links can be hidden from web browsing humans,
but visible to spiders and programs. A request for
the page, then, becomes a good predictor of an
automated tool probing the
application.
3
Preventative
Use CAPTCHA to prevent
the use of the application by an automated
tool.
4
Preventative
Actively monitor the
application and either deny or redirect requests
from origins that appear to be
automated.
Experiment
Probe identified potential entry points
for XSS vulnerability:
The attacker uses the entry points gathered in the
"Explore" phase as a target list and injects various
common script payloads to determine if an entry
point actually represents a vulnerability and to
characterize the extent to which the vulnerability
can be exploited. He records all the responses from
the server that include unmodified versions of his
script.
The attacker tries also to inject extra-parameter
to the HTTP request to see if they are reflected
back in the web page or in the HTTP response.
Attack Step Techniques
ID
Attack Step Technique Description
Environments
1
Manually inject various script payloads into
each identified entry point using a list of common
script injection probes and observe system
behavior to determine if script was
executed.
env-Web
2
Use an automated injection attack tool to
inject various script payloads into each
identified entry point using a list of common
script injection probes and observe system
behavior to determine if script was
executed.
env-Web
3
Use a proxy tool to record results of manual
input of XSS probes in known URLs.
env-Web
Indicators
ID
type
Indicator Description
Environments
1
Positive
User-controllable input is embedded as part
of generated HTTP headers
env-Web
2
Positive
Input parameters become part of the web page
(even in meta tags)
env-Web
3
Positive
Output to the browser is not encoded to
remove executable scripting syntax.
env-Web
4
Inconclusive
Nothing is returned to the web page. It may
be a stored XSS. The unique identifier from the
probe helps to trace the flow of the possible
XSS.
env-Web
Outcomes
ID
type
Outcome Description
1
Success
The attacker's cross-site
scripting string is repeated back verbatim at some
point in the web site (if not on the same page).
Note that sometimes, the payload might be well
encoded in the page, but wouldn't be encoded at
all in some other section of the same web page
(title, script, etc.)
2
Failure
All HTML-sensitive characters
are consistently re-encoded before being sent to
the web browser.
3
Inconclusive
Some sensitive characters are
consistently encoded, but others are
not.
Security Controls
ID
type
Security Control Description
1
Detective
Monitor input to web
servers (not only GET, but all in the inputs),
application servers, and other HTTP infrastructure
(e.g., load balancers). Alert on standard XSS
probes. The majority of attackers use well known
strings to check for vulnerabilities. Use the same
vulnerability catalogs that hackers
use.
2
Preventative
Apply appropriate
input validation to filter all user-controllable
input of scripting
syntax
3
Preventative
Do not embed
user-controllable input generated HTTP
headers
4
Preventative
Actively monitor the
application and either deny or redirect requests
from origins that appear to be generating XSS
probes.
As the attacker succeeds in exploiting the
vulnerability, he can choose to steal user's
credentials in order to reuse or to analyze them
later on.
Attack Step Techniques
ID
Attack Step Technique Description
Environments
1
Develop malicious JavaScript that is
injected through vectors identified during the
Experiment Phase and loaded by the victim's
browser and sends document information to the
attacker.
env-Web
2
Develop malicious JavaScript that injected
through vectors identified during the Experiment
Phase and takes commands from an attacker's server
and then causes the browser to execute
appropriately.
env-Web
Outcomes
ID
type
Outcome Description
1
Success
The attacker gets the user's
cookies or other session
identifiers.
2
Success
The attacker gets the content
of the page the user is
viewing.
3
Success
The attacker causes the user's
browser to visit a page with malicious
content.
Security Controls
ID
type
Security Control Description
1
Detective
Monitor server logs
for scripting
parameters.
2
Detective
Monitor server logs
for referrers. If users are being tricked into
clicking XSS links through forums or other web
postings, their web browsers will be providing
Referrer headers most of the time. These can help
indicate that the actual request is
illegitimate.
3
Preventative
Apply appropriate
input validation to filter all user-controllable
input of scripting
syntax
4
Preventative
Appropriately encode
all browser output to avoid scripting
syntax
5
Preventative
Actively monitor the
application and either deny or redirect requests
from origins that appear to be generating XSS
probes.
Forceful browsing:
When the attacker targets the current application
or another one (through CSRF vulnerabilities), the
user will then be the one who perform the attacks
without being aware of it. These attacks are mostly
targeting application logic flaws, but it can also
be used to create a widespread attack against a
particular website on the user's current network
(Internet or not).
Attack Step Techniques
ID
Attack Step Technique Description
Environments
1
Develop malicious JavaScript that is
injected through vectors identified during the
Experiment Phase and loaded by the victim's
browser and performs actions on the same web
site
env-Web
2
Develop malicious JavaScript that injected
through vectors identified during the Experiment
Phase and takes commands from an attacker's server
and then causes the browser to execute request to
other web sites (especially the web applications
that have CSRF vulnerabilities).
env-Web
Outcomes
ID
type
Outcome Description
1
Success
The attacker indirectly
controls the user's browser and makes it
performing actions exploiting
CSRF.
2
Success
The attacker manipulates the
browser through the steps that he designed in his
attack. The user, identified on a website, is now
performing actions he is not aware
of.
Security Controls
ID
type
Security Control Description
1
Detective
Monitor server logs
for scripting
parameters.
2
Detective
Monitor server logs
for referrers. If users are being tricked into
clicking XSS links through forums or other web
postings, their web browsers will be providing
Referrer headers most of the time. These can help
indicate that the actual request is
illegitimate.
3
Preventative
Apply appropriate
input validation to filter all user-controllable
input of scripting
syntax
4
Preventative
Appropriately encode
all browser output to avoid scripting
syntax
5
Preventative
Actively monitor the
application and either deny or redirect requests
from origins that appear to be generating XSS
probes.
Content spoofing:
By manipulating the content, the attacker targets
the information that the user would like to get from
the website.
Attack Step Techniques
ID
Attack Step Technique Description
Environments
1
Develop malicious JavaScript that is
injected through vectors identified during the
Experiment Phase and loaded by the victim's
browser and exposes attacker-modified invalid
information to the user on the current web
page.
env-Web
Outcomes
ID
type
Outcome Description
1
Success
The user sees a page containing
wrong information
Security Controls
ID
type
Security Control Description
1
Detective
Monitor server logs
for scripting
parameters.
2
Detective
Monitor server logs
for referrers. If users are being tricked into
clicking XSS links through forums or other web
postings, their web browsers will be providing
Referrer headers most of the time. These can help
indicate that the actual request is
illegitimate.
3
Preventative
Apply appropriate
input validation to filter all user-controllable
input of scripting
syntax
4
Preventative
Appropriately encode
all browser output to avoid scripting
syntax
5
Preventative
Actively monitor the
application and either deny or redirect requests
from origins that appear to be generating XSS
probes.
Attack Prerequisites
Target software must be a client that allows scripting communication from
remote hosts, and attacker must control a remote site of some sort to
redirect client and data to.
Typical Likelihood of Exploit
Likelihood: High
Methods of Attack
Injection
Modification of Resources
Protocol Manipulation
Examples-Instances
Description
Utilize a remote style sheet set in the HTTP header for XSS attack.
When the attacker is able to point to a remote stylesheet, any of the
variables set in that stylesheet are controllable on the client side by
the remote attacker. Like most XSS attacks, results vary depending on
browser that is used.
If the response sends an unexpected encoding type such as UTF-7, then
no enforcement is done on the payload and arbitrary XSS code will be
transported along with the standard HTTP response. Source:
http://seclists.org/fulldisclosure/2005/Dec/1107.html
Description
XSS can be used in variety of ways, because it is scripted and
executes in a distribtued, asynchronous fashion it can create its own
vector and openings. For example, the attacker can use XSS to mount a
DDoS attack by having series of different computers unknowingly
executing requests against a single host.
Attacker Skills or Knowledge Required
Skill or Knowledge Level: Low
To achieve a redirection and use of less trusted source, an attacker
can simply edit HTTP Headers that are sent to client machine.
Skill or Knowledge Level: High
Exploiting a client side vulnerability to inject malicious scripts
into the browser's executable process.
Resources Required
Ability to deploy a custom hostile service for access by targeted clients.
Ability to communicate synchronously or asynchronously with client
machine
Solutions and Mitigations
Design: Use browser technologies that do not allow client side
scripting.
Design: Utilize strict type, character, and encoding enforcement
Design: Server side developers should not proxy content via XHR or other
means, if a http proxy for remote content is setup on the server side, the
client's browser has no way of discerning where the data is originating
from.
Implementation: Ensure all content that is delivered to client is
sanitized against an acceptable content specification.
Implementation: Perform input validation for all remote content.
Implementation: Perform output validation for all remote content.
Implementation: Disable scripting languages such as Javascript in
browser
Implementation: Session tokens for specific host
Implementation: Patching software. There are many attack vectors for XSS
on the client side and the server side. Many vulnerabilities are fixed in
service packs for browser, web servers, and plug in technologies, staying
current on patch release that deal with XSS countermeasures mitigates
this.
Attack Motivation-Consequences
Run Arbitrary Code
Information Leakage
Privilege Escalation
Injection Vector
Malicious input delivered through HTTP Headers.
Payload
Varies with instantiation of attack pattern. In the case of HTTP headers they
may not be visible to the end user via a browser
Activation Zone
Header processing on the server or Client browser
Payload Activation Impact
Enables attacker to execute scripts to launch attacks on server as well as
remote client machine and environment
ViewVC 1.0.2 and earlier does not specify a charset in its HTTP
headers or HTML documents, which allows remote attackers to conduct
cross-site scripting (XSS) attacks that inject arbitrary UTF-7 encoded
JavaScript code via a view.
CVE-2006-3918
http_protocol.c in (1) IBM HTTP Server 6.0 before 6.0.2.13 and 6.1
before 6.1.0.1, and (2) Apache HTTP Server 1.3 before 1.3.35, 2.0 before
2.0.58, and 2.2 before 2.2.2, does not sanitize the Expect header from
an HTTP request when it is reflected back in an error message, which
might allow cross-site scripting (XSS) style attacks using web client
components that can send arbitrary headers in requests, as demonstrated
using a Flash SWF file.
Vision and Technical Leadership provided by Cigital, Inc.
This Web site is hosted by The MITRE Corporation.
Copyright 2009, The MITRE Corporation. CAPEC and the CAPEC logo are trademarks of The MITRE Corporation.