Scan Remediation

Report

Generated by Burp Suite Enterprise Edition | 2024-11-06 12:41 PM
Site name:
m
Scanned:
Start:
2024-11-05 4:59 PM
End:
2024-11-05 5:13 PM
Duration:
13m 53s
Status:
Completed
Start URLs:
https://instance.example.com/fe/m3/m-login
In-scope URL prefixes:
https://instance.example.com/fe/m3/
https://instance.example.com/m/v3/
Application logins:
DEMOMX m login only (no clerk)
Reference:
#150

Issues by severity

High: 0
Medium: 0
Low: 11
Information: 44
Total issues found: 55

Scan statistics

Discovered URLs: 44
Audited URLs without errors: 9
Audited URLs with errors: 1
Requests made: 12354
Network errors: 28

Issues found on https://instance.example.com

URLs By issue type Severity Confidence More detail
Strict transport security not enforced [7]
Low Certain >>
Low Certain >>
Low Certain >>
Low Certain >>
Low Certain >>
Low Certain >>
Low Certain >>
Open redirection (DOM-based) [4]
Low Tentative >>
Low Tentative >>
Low Tentative >>
Low Tentative >>
TLS certificate [1]
Info Certain >>
Content security policy: allows untrusted script execution [7]
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Content security policy: allows untrusted style execution [7]
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Content security policy: allows form hijacking [7]
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Cross-origin resource sharing [6]
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Cross-origin resource sharing: arbitrary origin trusted [6]
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Info Certain >>
Robots.txt file [1]
Info Certain >>
Cacheable HTTPS response [1]
Info Certain >>
DOM data manipulation (DOM-based) [6]
Info Firm >>
Info Firm >>
Info Firm >>
Info Firm >>
Info Firm >>
Info Firm >>

Issues found on http://instance.example.com

URLs By issue type Severity Confidence More detail
Input returned in response (reflected) [2]
Info Certain >>
Info Certain >>

More details for https://instance.example.com

Strict transport security not enforced

/fe/m3/m-login

Issue description:

The application fails to prevent users from connecting to it over unencrypted connections. An attacker able to modify a legitimate user's network traffic could bypass the application's use of SSL/TLS encryption, and use the application as a platform for attacks against its users. This attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link to the site from an HTTP page, their browser never attempts to use an encrypted connection. The sslstrip tool automates this process.

To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify the victim's network traffic.This scenario typically occurs when a client communicates with the server over an insecure connection such as public Wi-Fi, or a corporate or home network that is shared with a compromised computer. Common defenses such as switched networks are not sufficient to prevent this. An attacker situated in the user's ISP or the application's hosting infrastructure could also perform this attack. Note that an advanced adversary could potentially target any connection made over the Internet's core infrastructure.

Issue remediation:

The application should instruct web browsers to only access the application using HTTPS. To do this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in seconds that browsers should remember that the site should only be accessed using HTTPS. Consider adding the 'includeSubDomains' flag if appropriate.

Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never accessed the application will never have seen the HSTS header, and will therefore still be vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' flag to the HSTS header, and submit the domain for review by browser vendors.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Strict transport security not enforced

/m/v3/actions/action-log

Issue description:

The application fails to prevent users from connecting to it over unencrypted connections. An attacker able to modify a legitimate user's network traffic could bypass the application's use of SSL/TLS encryption, and use the application as a platform for attacks against its users. This attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link to the site from an HTTP page, their browser never attempts to use an encrypted connection. The sslstrip tool automates this process.

To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify the victim's network traffic.This scenario typically occurs when a client communicates with the server over an insecure connection such as public Wi-Fi, or a corporate or home network that is shared with a compromised computer. Common defenses such as switched networks are not sufficient to prevent this. An attacker situated in the user's ISP or the application's hosting infrastructure could also perform this attack. Note that an advanced adversary could potentially target any connection made over the Internet's core infrastructure.

Issue remediation:

The application should instruct web browsers to only access the application using HTTPS. To do this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in seconds that browsers should remember that the site should only be accessed using HTTPS. Consider adding the 'includeSubDomains' flag if appropriate.

Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never accessed the application will never have seen the HSTS header, and will therefore still be vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' flag to the HSTS header, and submit the domain for review by browser vendors.

References

Vulnerability classifications

Request:

POST /m/v3/actions/action-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.2130470854.1730843985; _ga_0CGDK6Q0X4=GS1.1.1730843984.1.0.1730843986.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 118 {"name":"mLoginAttempt","category":"mConsolefe","data":{"deviceType":"Desktop","mName":""}}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:46 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Strict transport security not enforced

/m/v3/actions/event-log

Issue description:

The application fails to prevent users from connecting to it over unencrypted connections. An attacker able to modify a legitimate user's network traffic could bypass the application's use of SSL/TLS encryption, and use the application as a platform for attacks against its users. This attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link to the site from an HTTP page, their browser never attempts to use an encrypted connection. The sslstrip tool automates this process.

To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify the victim's network traffic.This scenario typically occurs when a client communicates with the server over an insecure connection such as public Wi-Fi, or a corporate or home network that is shared with a compromised computer. Common defenses such as switched networks are not sufficient to prevent this. An attacker situated in the user's ISP or the application's hosting infrastructure could also perform this attack. Note that an advanced adversary could potentially target any connection made over the Internet's core infrastructure.

Issue remediation:

The application should instruct web browsers to only access the application using HTTPS. To do this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in seconds that browsers should remember that the site should only be accessed using HTTPS. Consider adding the 'includeSubDomains' flag if appropriate.

Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never accessed the application will never have seen the HSTS header, and will therefore still be vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' flag to the HSTS header, and submit the domain for review by browser vendors.

References

Vulnerability classifications

Request:

POST /m/v3/actions/event-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1245037457.1730843989; _ga_0CGDK6Q0X4=GS1.1.1730843988.1.0.1730843990.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 279 {"name":"ForgotPasswordButtonClicked","category":"mConsoleEvents","timestamp":1730843990,"data":{"currentURL":"https://instance.example.com/fe/m3/m-login","previou
Snip

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:50 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Strict transport security not enforced

/m/v3/actions/login-m-by-name

Issue description:

The application fails to prevent users from connecting to it over unencrypted connections. An attacker able to modify a legitimate user's network traffic could bypass the application's use of SSL/TLS encryption, and use the application as a platform for attacks against its users. This attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link to the site from an HTTP page, their browser never attempts to use an encrypted connection. The sslstrip tool automates this process.

To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify the victim's network traffic.This scenario typically occurs when a client communicates with the server over an insecure connection such as public Wi-Fi, or a corporate or home network that is shared with a compromised computer. Common defenses such as switched networks are not sufficient to prevent this. An attacker situated in the user's ISP or the application's hosting infrastructure could also perform this attack. Note that an advanced adversary could potentially target any connection made over the Internet's core infrastructure.

Issue remediation:

The application should instruct web browsers to only access the application using HTTPS. To do this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in seconds that browsers should remember that the site should only be accessed using HTTPS. Consider adding the 'includeSubDomains' flag if appropriate.

Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never accessed the application will never have seen the HSTS header, and will therefore still be vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' flag to the HSTS header, and submit the domain for review by browser vendors.

References

Vulnerability classifications

Request:

POST /m/v3/actions/login-m-by-name HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Authorization: Bearer undefined Cookie: _ga=GA1.1.2130470854.1730843985; _ga_0CGDK6Q0X4=GS1.1.1730843984.1.0.1730843986.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 33 {"mName":"","password":""}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:46 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Strict transport security not enforced

/m/v3/actions/request-m-password-reset

Issue description:

The application fails to prevent users from connecting to it over unencrypted connections. An attacker able to modify a legitimate user's network traffic could bypass the application's use of SSL/TLS encryption, and use the application as a platform for attacks against its users. This attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link to the site from an HTTP page, their browser never attempts to use an encrypted connection. The sslstrip tool automates this process.

To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify the victim's network traffic.This scenario typically occurs when a client communicates with the server over an insecure connection such as public Wi-Fi, or a corporate or home network that is shared with a compromised computer. Common defenses such as switched networks are not sufficient to prevent this. An attacker situated in the user's ISP or the application's hosting infrastructure could also perform this attack. Note that an advanced adversary could potentially target any connection made over the Internet's core infrastructure.

Issue remediation:

The application should instruct web browsers to only access the application using HTTPS. To do this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in seconds that browsers should remember that the site should only be accessed using HTTPS. Consider adding the 'includeSubDomains' flag if appropriate.

Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never accessed the application will never have seen the HSTS header, and will therefore still be vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' flag to the HSTS header, and submit the domain for review by browser vendors.

References

Vulnerability classifications

Request:

POST /m/v3/actions/request-m-password-reset HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1294211964.1730843974; _ga_0CGDK6Q0X4=GS1.1.1730843974.1.1.1730843975.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/request-reset-password Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 94 {"mName":"BoSUhm","mEmail":"BoSUhmuz@burpcollaborator.net","mPhone":null}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:36 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Strict transport security not enforced

/m/v3/translations

Issue description:

The application fails to prevent users from connecting to it over unencrypted connections. An attacker able to modify a legitimate user's network traffic could bypass the application's use of SSL/TLS encryption, and use the application as a platform for attacks against its users. This attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link to the site from an HTTP page, their browser never attempts to use an encrypted connection. The sslstrip tool automates this process.

To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify the victim's network traffic.This scenario typically occurs when a client communicates with the server over an insecure connection such as public Wi-Fi, or a corporate or home network that is shared with a compromised computer. Common defenses such as switched networks are not sufficient to prevent this. An attacker situated in the user's ISP or the application's hosting infrastructure could also perform this attack. Note that an advanced adversary could potentially target any connection made over the Internet's core infrastructure.

Issue remediation:

The application should instruct web browsers to only access the application using HTTPS. To do this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in seconds that browsers should remember that the site should only be accessed using HTTPS. Consider adding the 'includeSubDomains' flag if appropriate.

Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never accessed the application will never have seen the HSTS header, and will therefore still be vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' flag to the HSTS header, and submit the domain for review by browser vendors.

References

Vulnerability classifications

Request:

GET /m/v3/translations?locale=en_US&category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1871968749.1730843978; _ga_0CGDK6Q0X4=GS1.1.1730843977.1.1.1730843978.0.0.0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:39 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Strict transport security not enforced

/m/v3/translations/locales

Issue description:

The application fails to prevent users from connecting to it over unencrypted connections. An attacker able to modify a legitimate user's network traffic could bypass the application's use of SSL/TLS encryption, and use the application as a platform for attacks against its users. This attack is performed by rewriting HTTPS links as HTTP, so that if a targeted user follows a link to the site from an HTTP page, their browser never attempts to use an encrypted connection. The sslstrip tool automates this process.

To exploit this vulnerability, an attacker must be suitably positioned to intercept and modify the victim's network traffic.This scenario typically occurs when a client communicates with the server over an insecure connection such as public Wi-Fi, or a corporate or home network that is shared with a compromised computer. Common defenses such as switched networks are not sufficient to prevent this. An attacker situated in the user's ISP or the application's hosting infrastructure could also perform this attack. Note that an advanced adversary could potentially target any connection made over the Internet's core infrastructure.

Issue remediation:

The application should instruct web browsers to only access the application using HTTPS. To do this, enable HTTP Strict Transport Security (HSTS) by adding a response header with the name 'Strict-Transport-Security' and the value 'max-age=expireTime', where expireTime is the time in seconds that browsers should remember that the site should only be accessed using HTTPS. Consider adding the 'includeSubDomains' flag if appropriate.

Note that because HSTS is a "trust on first use" (TOFU) protocol, a user who has never accessed the application will never have seen the HSTS header, and will therefore still be vulnerable to SSL stripping attacks. To mitigate this risk, you can optionally add the 'preload' flag to the HSTS header, and submit the domain for review by browser vendors.

References

Vulnerability classifications

Request:

GET /m/v3/translations/locales?category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:24 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Open redirection (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based open redirection. Data is read from location.href and passed to xhr.send.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM-based open redirection arises when a script writes controllable data into the target of a redirection in an unsafe way. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will cause a redirection to an arbitrary external domain. This behavior can be leveraged to facilitate phishing attacks against users of the application. The ability to use an authentic application URL, targeting the correct domain and with a valid SSL certificate (if SSL is used), lends credibility to the phishing attack because many users, even if they verify these features, will not notice the subsequent redirection to a different domain.

Note: If an attacker is able to control the start of the string that is passed to the redirection API, then it may be possible to escalate this vulnerability into a JavaScript injection attack, by using a URL with the javascript: pseudo-protocol to execute arbitrary script code when the URL is processed by the browser.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based open redirection vulnerabilities is not to dynamically set redirection targets using data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from introducing an arbitrary URL as a redirection target. In general, this is best achieved by using a whitelist of URLs that are permitted redirection targets, and strictly validating the target against this list before performing the redirection.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.href and passed to xhr.send.

  • The following value was injected into the source:

    https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'"/iepuap2p8w/><iepuap2p8w/\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'"/iepuap2p8w/><iepuap2p8w/\>fwqsx8nplw&
  • The previous value reached the sink:

    {"access_token":"ed227e6e767e4584a5b3c10dc8b68c2a","data":{"environment":"development","level":"error","endpoint":"api.rollbar.com/api/1/item/","platform":"browser","framework":"browser-js","language":"javascript","server":{},"uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382","notifier":{"name":"rollbar-browser-js","version":"2.26.2","configured_options":{"captureUncaught":true,"captureUnhandledRejections":true,"payload":{"environment":"development"}},"diagnostic":{"original_arg_types":["string","error","undefined"],"is_uncaught":true,"raw_error":{"message":"Cannot read properties of null (reading 'once')","name":"TypeError","constructor_name":"TypeError","stack":"TypeError: Cannot read properties of null (reading 'once')\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n    at https://instance.example.com/fe/js/cv-script.js:202367:10"}}},"request":{"url":"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&","query_string":"?kpiqhi5l29=kpiqhi5l29%27%22`'\"/kpiqhi5l29/><kpiqhi5l29/\\>ba6kcvqqrk&","user_ip":"$remote_ip"},"client":{"runtime_ms":53,"timestamp":1730843997,"javascript":{"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36","language":"en-US","cookie_enabled":true,"screen":{"width":800,"height":600},"plugins":[]}},"body":{"trace":{"exception":{"class":"TypeError","message":"Cannot read properties of null (reading 'once')","description":"Uncaught TypeError: Cannot read properties of null (reading 'once')"},"frames":[{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":202367,"method":"[anonymous]","colno":10},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":202406,"method":"InfoReceiver.doXhr","colno":11}]},"telemetry":[{"level":"error","type":"error","timestamp_ms":1730843997119,"body":{"message":"Cannot read properties of null (reading 'once')","stack":"TypeError: Cannot read properties of null (reading 'once')\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n    at https://instance.example.com/fe/js/cv-script.js:202367:10"},"source":"client","uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382"}]},"context":""}}
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get href (<anonymous>:1:249544)
    at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42576)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)
    at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)
    at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)
    at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)
    at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)
    at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)
    at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)
  • The stack trace at the sink was:

    at Object.XMhUr (<anonymous>:1:544502)
    at _0x13dcf0 (<anonymous>:1:558761)
    at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)
    at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)
    at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)
    at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)
    at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)
    at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)
    at https://instance.example.com/fe/js/cv-script.js:201791:32574

Open redirection (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based open redirection. Data is read from location.search and passed to xhr.send.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM-based open redirection arises when a script writes controllable data into the target of a redirection in an unsafe way. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will cause a redirection to an arbitrary external domain. This behavior can be leveraged to facilitate phishing attacks against users of the application. The ability to use an authentic application URL, targeting the correct domain and with a valid SSL certificate (if SSL is used), lends credibility to the phishing attack because many users, even if they verify these features, will not notice the subsequent redirection to a different domain.

Note: If an attacker is able to control the start of the string that is passed to the redirection API, then it may be possible to escalate this vulnerability into a JavaScript injection attack, by using a URL with the javascript: pseudo-protocol to execute arbitrary script code when the URL is processed by the browser.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based open redirection vulnerabilities is not to dynamically set redirection targets using data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from introducing an arbitrary URL as a redirection target. In general, this is best achieved by using a whitelist of URLs that are permitted redirection targets, and strictly validating the target against this list before performing the redirection.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.search and passed to xhr.send.

  • The following value was injected into the source:

    ?kpiqhi5l29=kpiqhi5l29%27%22`'"/kpiqhi5l29/><kpiqhi5l29/\>ba6kcvqqrk&
  • The previous value reached the sink:

    {"access_token":"ed227e6e767e4584a5b3c10dc8b68c2a","data":{"environment":"development","level":"error","endpoint":"api.rollbar.com/api/1/item/","platform":"browser","framework":"browser-js","language":"javascript","server":{},"uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382","notifier":{"name":"rollbar-browser-js","version":"2.26.2","configured_options":{"captureUncaught":true,"captureUnhandledRejections":true,"payload":{"environment":"development"}},"diagnostic":{"original_arg_types":["string","error","undefined"],"is_uncaught":true,"raw_error":{"message":"Cannot read properties of null (reading 'once')","name":"TypeError","constructor_name":"TypeError","stack":"TypeError: Cannot read properties of null (reading 'once')\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n    at https://instance.example.com/fe/js/cv-script.js:202367:10"}}},"request":{"url":"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&","query_string":"?kpiqhi5l29=kpiqhi5l29%27%22`'\"/kpiqhi5l29/><kpiqhi5l29/\\>ba6kcvqqrk&","user_ip":"$remote_ip"},"client":{"runtime_ms":53,"timestamp":1730843997,"javascript":{"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36","language":"en-US","cookie_enabled":true,"screen":{"width":800,"height":600},"plugins":[]}},"body":{"trace":{"exception":{"class":"TypeError","message":"Cannot read properties of null (reading 'once')","description":"Uncaught TypeError: Cannot read properties of null (reading 'once')"},"frames":[{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":202367,"method":"[anonymous]","colno":10},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":202406,"method":"InfoReceiver.doXhr","colno":11}]},"telemetry":[{"level":"error","type":"error","timestamp_ms":1730843997119,"body":{"message":"Cannot read properties of null (reading 'once')","stack":"TypeError: Cannot read properties of null (reading 'once')\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n    at https://instance.example.com/fe/js/cv-script.js:202367:10"},"source":"client","uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382"}]},"context":""}}
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get search (<anonymous>:1:248279)
    at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42607)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)
    at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)
    at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)
    at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)
    at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)
    at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)
    at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)
  • The stack trace at the sink was:

    at Object.XMhUr (<anonymous>:1:544502)
    at _0x13dcf0 (<anonymous>:1:558761)
    at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)
    at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)
    at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)
    at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)
    at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)
    at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)
    at https://instance.example.com/fe/js/cv-script.js:201791:32574

Open redirection (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based open redirection. Data is read from location.href and passed to xhr.send.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM-based open redirection arises when a script writes controllable data into the target of a redirection in an unsafe way. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will cause a redirection to an arbitrary external domain. This behavior can be leveraged to facilitate phishing attacks against users of the application. The ability to use an authentic application URL, targeting the correct domain and with a valid SSL certificate (if SSL is used), lends credibility to the phishing attack because many users, even if they verify these features, will not notice the subsequent redirection to a different domain.

Note: If an attacker is able to control the start of the string that is passed to the redirection API, then it may be possible to escalate this vulnerability into a JavaScript injection attack, by using a URL with the javascript: pseudo-protocol to execute arbitrary script code when the URL is processed by the browser.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based open redirection vulnerabilities is not to dynamically set redirection targets using data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from introducing an arbitrary URL as a redirection target. In general, this is best achieved by using a whitelist of URLs that are permitted redirection targets, and strictly validating the target against this list before performing the redirection.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.href and passed to xhr.send.

  • The following value was injected into the source:

    https://instance.example.com/fe/m3/m-login?bih4qyzpvt=bih4qyzpvt%27%22`'"/bih4qyzpvt/><bih4qyzpvt/\>sbxdhx44wf&#bih4qyzpvt=bih4qyzpvt%27%22`'"/bih4qyzpvt/><bih4qyzpvt/\>sbxdhx44wf&
  • The previous value reached the sink:

    {"access_token":"ed227e6e767e4584a5b3c10dc8b68c2a","data":{"environment":"development","level":"error","endpoint":"api.rollbar.com/api/1/item/","platform":"browser","framework":"browser-js","language":"javascript","server":{},"uuid":"8ea547f7-4ead-4638-bd75-97e9d3af07a9","notifier":{"name":"rollbar-browser-js","version":"2.26.2","configured_options":{"captureUncaught":true,"captureUnhandledRejections":true,"payload":{"environment":"development"}},"diagnostic":{"original_arg_types":["string","error","undefined"],"is_uncaught":true,"raw_error":{"message":"Request failed with status code 500","name":"Error","constructor_name":"Error","stack":"Error: Request failed with status code 500\n    at createError (https://instance.example.com/fe/js/cv-script.js:51368:15)\n    at settle (https://instance.example.com/fe/js/cv-script.js:51664:12)\n    at XMLHttpRequest.onloadend (https://instance.example.com/fe/js/cv-script.js:50688:7)"}}},"request":{"url":"https://instance.example.com/fe/m3/m-login?bih4qyzpvt=bih4qyzpvt%27%22`'\"/bih4qyzpvt/><bih4qyzpvt/\\>sbxdhx44wf&#bih4qyzpvt=bih4qyzpvt%27%22`'\"/bih4qyzpvt/><bih4qyzpvt/\\>sbxdhx44wf&","query_string":"?esux3absmq=esux3absmq%27%22`'\"/esux3absmq/><esux3absmq/\\>z0k5afa1h6&","user_ip":"$remote_ip"},"client":{"runtime_ms":497,"timestamp":1730843998,"javascript":{"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36","language":"en-US","cookie_enabled":true,"screen":{"width":800,"height":600},"plugins":[]}},"body":{"trace":{"exception":{"class":"Error","message":"Request failed with status code 500","description":"Request failed with status code 500"},"frames":[{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":50688,"method":"XMLHttpRequest.onloadend","colno":7},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":51664,"method":"settle","colno":12},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":51368,"method":"createError","colno":15}]},"telemetry":[{"level":"error","type":"error","timestamp_ms":1730843997119,"body":{"message":"Cannot read properties of null (reading 'once')","stack":"TypeError: Cannot read properties of null (reading 'once')\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n    at https://instance.example.com/fe/js/cv-script.js:202367:10"},"source":"client","uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:DOM XSS found"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Context: NaN.queryString"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Tag name: "},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Original url: https://instance.example.com/fe/m3/m-login"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Generated url: https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:PoC:Unable to generate PoC"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source identified as: location.href"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source Stack trace:     at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)\n    at get href (<anonymous>:1:249544)\n    at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42576)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)\n    at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)\n    at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)\n    at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)\n    at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)\n    at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)\n    at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink identified as: xhr.send"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink Stack trace:     at Object.XMhUr (<anonymous>:1:544502)\n    at _0x13dcf0 (<anonymous>:1:558761)\n    at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)\n    at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)\n    at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)\n    at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)\n    at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)\n    at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)\n    at https://instance.example.com/fe/js/cv-script.js:201791:32574"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink value: {\"access_token\":\"ed227e6e767e4584a5b3c10dc8b68c2a\",\"data\":{\"environment\":\"development\",\"level\":\"error\",\"endpoint\":\"api.rollbar.com/api/1/item/\",\"platform\":\"browser\",\"framework\":\"browser-js\",\"language\":\"javascript\",\"server\":{},\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\",\"notifier\":{\"name\":\"rollbar-browser-js\",\"version\":\"2.26.2\",\"configured_options\":{\"captureUncaught\":true,\"captureUnhandledRejections\":true,\"payload\":{\"environment\":\"development\"}},\"diagnostic\":{\"original_arg_types\":[\"string\",\"error\",\"undefined\"],\"is_uncaught\":true,\"raw_error\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"name\":\"TypeError\",\"constructor_name\":\"TypeError\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n    at https://instance.example.com/fe/js/cv-script.js:202367:10\"}}},\"request\":{\"url\":\"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&\",\"query_string\":\"?kpiqhi5l29=kpiqhi5l29%27%22`'\\\"/kpiqhi5l29/><kpiqhi5l29/\\\\>ba6kcvqqrk&\",\"user_ip\":\"$remote_ip\"},\"client\":{\"runtime_ms\":53,\"timestamp\":1730843997,\"javascript\":{\"browser\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36\",\"language\":\"en-US\",\"cookie_enabled\":true,\"screen\":{\"width\":800,\"height\":600},\"plugins\":[]}},\"body\":{\"trace\":{\"exception\":{\"class\":\"TypeError\",\"message\":\"Cannot read properties of null (reading 'once')\",\"description\":\"Uncaught TypeError: Cannot read properties of null (reading 'once')\"},\"frames\":[{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202367,\"method\":\"[anonymous]\",\"colno\":10},{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202406,\"method\":\"InfoReceiver.doXhr\",\"colno\":11}]},\"telemetry\":[{\"level\":\"error\",\"type\":\"error\",\"timestamp_ms\":1730843997119,\"body\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n    at https://instance.example.com/fe/js/cv-script.js:202367:10\"},\"source\":\"client\",\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\"}]},\"context\":\"\"}}"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:DOM XSS found"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Context: NaN.queryString"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Tag name: "},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Original url: https://instance.example.com/fe/m3/m-login"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Generated url: https://instance.example.com/fe/m3/m-login?kpiqhi5l29=kpiqhi5l29%27%22`'\"/kpiqhi5l29/><kpiqhi5l29/\\>ba6kcvqqrk&"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:PoC:Unable to generate PoC"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source identified as: location.search"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source Stack trace:     at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)\n    at get search (<anonymous>:1:248279)\n    at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42607)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)\n    at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)\n    at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)\n    at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)\n    at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)\n    at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)\n    at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink identified as: xhr.send"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink Stack trace:     at Object.XMhUr (<anonymous>:1:544502)\n    at _0x13dcf0 (<anonymous>:1:558761)\n    at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)\n    at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)\n    at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)\n    at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)\n    at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)\n    at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)\n    at https://instance.example.com/fe/js/cv-script.js:201791:32574"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink value: {\"access_token\":\"ed227e6e767e4584a5b3c10dc8b68c2a\",\"data\":{\"environment\":\"development\",\"level\":\"error\",\"endpoint\":\"api.rollbar.com/api/1/item/\",\"platform\":\"browser\",\"framework\":\"browser-js\",\"language\":\"javascript\",\"server\":{},\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\",\"notifier\":{\"name\":\"rollbar-browser-js\",\"version\":\"2.26.2\",\"configured_options\":{\"captureUncaught\":true,\"captureUnhandledRejections\":true,\"payload\":{\"environment\":\"development\"}},\"diagnostic\":{\"original_arg_types\":[\"string\",\"error\",\"undefined\"],\"is_uncaught\":true,\"raw_error\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"name\":\"TypeError\",\"constructor_name\":\"TypeError\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n    at https://instance.example.com/fe/js/cv-script.js:202367:10\"}}},\"request\":{\"url\":\"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&\",\"query_string\":\"?kpiqhi5l29=kpiqhi5l29%27%22`'\\\"/kpiqhi5l29/><kpiqhi5l29/\\\\>ba6kcvqqrk&\",\"user_ip\":\"$remote_ip\"},\"client\":{\"runtime_ms\":53,\"timestamp\":1730843997,\"javascript\":{\"browser\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36\",\"language\":\"en-US\",\"cookie_enabled\":true,\"screen\":{\"width\":800,\"height\":600},\"plugins\":[]}},\"body\":{\"trace\":{\"exception\":{\"class\":\"TypeError\",\"message\":\"Cannot read properties of null (reading 'once')\",\"description\":\"Uncaught TypeError: Cannot read properties of null (reading 'once')\"},\"frames\":[{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202367,\"method\":\"[anonymous]\",\"colno\":10},{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202406,\"method\":\"InfoReceiver.doXhr\",\"colno\":11}]},\"telemetry\":[{\"level\":\"error\",\"type\":\"error\",\"timestamp_ms\":1730843997119,\"body\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n    at https://instance.example.com/fe/js/cv-script.js:202367:10\"},\"source\":\"client\",\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\"}]},\"context\":\"\"}}"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997220,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"error","type":"network","timestamp_ms":1730843997410,"body":{"method":"GET","url":"https://localhost:8000/sockjs-node/info?t=1730843997179","status_code":0,"start_time_ms":1730843997180,"end_time_ms":1730843997410,"subtype":"xhr","response_content_type":null},"source":"client"},{"level":"error","type":"network","timestamp_ms":1730843997410,"body":{"method":"GET","url":"https://localhost:8000/sockjs-node/info?t=1730843997221","status_code":0,"start_time_ms":1730843997221,"end_time_ms":1730843997410,"subtype":"xhr","response_content_type":null},"source":"client"},{"level":"info","type":"network","timestamp_ms":1730843997482,"body":{"method":"POST","url":"https://api.rollbar.com:443/api/1/item/","status_code":200,"start_time_ms":1730843997213,"end_time_ms":1730843997482,"request_content_type":"application/json","subtype":"xhr","response_content_type":"application/json; charset=utf-8"},"source":"client"},{"level":"error","type":"error","timestamp_ms":1730843997563,"body":{"message":"Request failed with status code 500","stack":"Error: Request failed with status code 500\n    at createError (https://instance.example.com/fe/js/cv-script.js:51368:15)\n    at settle (https://instance.example.com/fe/js/cv-script.js:51664:12)\n    at XMLHttpRequest.onloadend (https://instance.example.com/fe/js/cv-script.js:50688:7)"},"source":"client","uuid":"8ea547f7-4ead-4638-bd75-97e9d3af07a9"}]},"context":""}}
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get href (<anonymous>:1:249544)
    at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42576)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)
    at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)
    at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)
    at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)
    at m.handleUnhandledRejection (https://instance.example.com/fe/js/cv-script.js:201791:19920)
    at n (https://instance.example.com/fe/js/cv-script.js:201791:36330)
  • The stack trace at the sink was:

    at Object.XMhUr (<anonymous>:1:544502)
    at _0x13dcf0 (<anonymous>:1:558761)
    at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)
    at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)
    at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)
    at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)
    at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)
    at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)
    at https://instance.example.com/fe/js/cv-script.js:201791:32574

Open redirection (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based open redirection. Data is read from location.search and passed to xhr.send.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM-based open redirection arises when a script writes controllable data into the target of a redirection in an unsafe way. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will cause a redirection to an arbitrary external domain. This behavior can be leveraged to facilitate phishing attacks against users of the application. The ability to use an authentic application URL, targeting the correct domain and with a valid SSL certificate (if SSL is used), lends credibility to the phishing attack because many users, even if they verify these features, will not notice the subsequent redirection to a different domain.

Note: If an attacker is able to control the start of the string that is passed to the redirection API, then it may be possible to escalate this vulnerability into a JavaScript injection attack, by using a URL with the javascript: pseudo-protocol to execute arbitrary script code when the URL is processed by the browser.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based open redirection vulnerabilities is not to dynamically set redirection targets using data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from introducing an arbitrary URL as a redirection target. In general, this is best achieved by using a whitelist of URLs that are permitted redirection targets, and strictly validating the target against this list before performing the redirection.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.search and passed to xhr.send.

  • The following value was injected into the source:

    ?esux3absmq=esux3absmq%27%22`'"/esux3absmq/><esux3absmq/\>z0k5afa1h6&
  • The previous value reached the sink:

    {"access_token":"ed227e6e767e4584a5b3c10dc8b68c2a","data":{"environment":"development","level":"error","endpoint":"api.rollbar.com/api/1/item/","platform":"browser","framework":"browser-js","language":"javascript","server":{},"uuid":"8ea547f7-4ead-4638-bd75-97e9d3af07a9","notifier":{"name":"rollbar-browser-js","version":"2.26.2","configured_options":{"captureUncaught":true,"captureUnhandledRejections":true,"payload":{"environment":"development"}},"diagnostic":{"original_arg_types":["string","error","undefined"],"is_uncaught":true,"raw_error":{"message":"Request failed with status code 500","name":"Error","constructor_name":"Error","stack":"Error: Request failed with status code 500\n    at createError (https://instance.example.com/fe/js/cv-script.js:51368:15)\n    at settle (https://instance.example.com/fe/js/cv-script.js:51664:12)\n    at XMLHttpRequest.onloadend (https://instance.example.com/fe/js/cv-script.js:50688:7)"}}},"request":{"url":"https://instance.example.com/fe/m3/m-login?bih4qyzpvt=bih4qyzpvt%27%22`'\"/bih4qyzpvt/><bih4qyzpvt/\\>sbxdhx44wf&#bih4qyzpvt=bih4qyzpvt%27%22`'\"/bih4qyzpvt/><bih4qyzpvt/\\>sbxdhx44wf&","query_string":"?esux3absmq=esux3absmq%27%22`'\"/esux3absmq/><esux3absmq/\\>z0k5afa1h6&","user_ip":"$remote_ip"},"client":{"runtime_ms":497,"timestamp":1730843998,"javascript":{"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36","language":"en-US","cookie_enabled":true,"screen":{"width":800,"height":600},"plugins":[]}},"body":{"trace":{"exception":{"class":"Error","message":"Request failed with status code 500","description":"Request failed with status code 500"},"frames":[{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":50688,"method":"XMLHttpRequest.onloadend","colno":7},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":51664,"method":"settle","colno":12},{"filename":"https://instance.example.com/fe/js/cv-script.js","lineno":51368,"method":"createError","colno":15}]},"telemetry":[{"level":"error","type":"error","timestamp_ms":1730843997119,"body":{"message":"Cannot read properties of null (reading 'once')","stack":"TypeError: Cannot read properties of null (reading 'once')\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\n    at https://instance.example.com/fe/js/cv-script.js:202367:10"},"source":"client","uuid":"a4231093-6d2e-4dbb-9f7f-7f0c97fde382"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:DOM XSS found"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Context: NaN.queryString"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Tag name: "},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Original url: https://instance.example.com/fe/m3/m-login"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Generated url: https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\"/iepuap2p8w/><iepuap2p8w/\\>fwqsx8nplw&"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:PoC:Unable to generate PoC"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997217,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source identified as: location.href"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source Stack trace:     at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)\n    at get href (<anonymous>:1:249544)\n    at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42576)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)\n    at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)\n    at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)\n    at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)\n    at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)\n    at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)\n    at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink identified as: xhr.send"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink Stack trace:     at Object.XMhUr (<anonymous>:1:544502)\n    at _0x13dcf0 (<anonymous>:1:558761)\n    at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)\n    at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)\n    at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)\n    at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)\n    at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)\n    at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)\n    at https://instance.example.com/fe/js/cv-script.js:201791:32574"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink value: {\"access_token\":\"ed227e6e767e4584a5b3c10dc8b68c2a\",\"data\":{\"environment\":\"development\",\"level\":\"error\",\"endpoint\":\"api.rollbar.com/api/1/item/\",\"platform\":\"browser\",\"framework\":\"browser-js\",\"language\":\"javascript\",\"server\":{},\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\",\"notifier\":{\"name\":\"rollbar-browser-js\",\"version\":\"2.26.2\",\"configured_options\":{\"captureUncaught\":true,\"captureUnhandledRejections\":true,\"payload\":{\"environment\":\"development\"}},\"diagnostic\":{\"original_arg_types\":[\"string\",\"error\",\"undefined\"],\"is_uncaught\":true,\"raw_error\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"name\":\"TypeError\",\"constructor_name\":\"TypeError\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n    at https://instance.example.com/fe/js/cv-script.js:202367:10\"}}},\"request\":{\"url\":\"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&\",\"query_string\":\"?kpiqhi5l29=kpiqhi5l29%27%22`'\\\"/kpiqhi5l29/><kpiqhi5l29/\\\\>ba6kcvqqrk&\",\"user_ip\":\"$remote_ip\"},\"client\":{\"runtime_ms\":53,\"timestamp\":1730843997,\"javascript\":{\"browser\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36\",\"language\":\"en-US\",\"cookie_enabled\":true,\"screen\":{\"width\":800,\"height\":600},\"plugins\":[]}},\"body\":{\"trace\":{\"exception\":{\"class\":\"TypeError\",\"message\":\"Cannot read properties of null (reading 'once')\",\"description\":\"Uncaught TypeError: Cannot read properties of null (reading 'once')\"},\"frames\":[{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202367,\"method\":\"[anonymous]\",\"colno\":10},{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202406,\"method\":\"InfoReceiver.doXhr\",\"colno\":11}]},\"telemetry\":[{\"level\":\"error\",\"type\":\"error\",\"timestamp_ms\":1730843997119,\"body\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n    at https://instance.example.com/fe/js/cv-script.js:202367:10\"},\"source\":\"client\",\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\"}]},\"context\":\"\"}}"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997218,"body":{"message":"--DynamicJavaScriptAnalysis from JS:DOM XSS found"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Context: NaN.queryString"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Tag name: "},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Original url: https://instance.example.com/fe/m3/m-login"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Generated url: https://instance.example.com/fe/m3/m-login?kpiqhi5l29=kpiqhi5l29%27%22`'\"/kpiqhi5l29/><kpiqhi5l29/\\>ba6kcvqqrk&"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:PoC:Unable to generate PoC"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source identified as: location.search"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Source Stack trace:     at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)\n    at get search (<anonymous>:1:248279)\n    at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42607)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)\n    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)\n    at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)\n    at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)\n    at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)\n    at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)\n    at m.handleUncaughtException (https://instance.example.com/fe/js/cv-script.js:201791:18878)\n    at n (https://instance.example.com/fe/js/cv-script.js:201791:35409)\n    at i (https://instance.example.com/fe/js/cv-script.js:201791:35806)"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink identified as: xhr.send"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink Stack trace:     at Object.XMhUr (<anonymous>:1:544502)\n    at _0x13dcf0 (<anonymous>:1:558761)\n    at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)\n    at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)\n    at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)\n    at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)\n    at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)\n    at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)\n    at https://instance.example.com/fe/js/cv-script.js:201791:32574"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997219,"body":{"message":"--DynamicJavaScriptAnalysis from JS:Sink value: {\"access_token\":\"ed227e6e767e4584a5b3c10dc8b68c2a\",\"data\":{\"environment\":\"development\",\"level\":\"error\",\"endpoint\":\"api.rollbar.com/api/1/item/\",\"platform\":\"browser\",\"framework\":\"browser-js\",\"language\":\"javascript\",\"server\":{},\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\",\"notifier\":{\"name\":\"rollbar-browser-js\",\"version\":\"2.26.2\",\"configured_options\":{\"captureUncaught\":true,\"captureUnhandledRejections\":true,\"payload\":{\"environment\":\"development\"}},\"diagnostic\":{\"original_arg_types\":[\"string\",\"error\",\"undefined\"],\"is_uncaught\":true,\"raw_error\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"name\":\"TypeError\",\"constructor_name\":\"TypeError\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n    at https://instance.example.com/fe/js/cv-script.js:202367:10\"}}},\"request\":{\"url\":\"https://instance.example.com/fe/m3/m-login?iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&#iepuap2p8w=iepuap2p8w%27%22`'\\\"/iepuap2p8w/><iepuap2p8w/\\\\>fwqsx8nplw&\",\"query_string\":\"?kpiqhi5l29=kpiqhi5l29%27%22`'\\\"/kpiqhi5l29/><kpiqhi5l29/\\\\>ba6kcvqqrk&\",\"user_ip\":\"$remote_ip\"},\"client\":{\"runtime_ms\":53,\"timestamp\":1730843997,\"javascript\":{\"browser\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36\",\"language\":\"en-US\",\"cookie_enabled\":true,\"screen\":{\"width\":800,\"height\":600},\"plugins\":[]}},\"body\":{\"trace\":{\"exception\":{\"class\":\"TypeError\",\"message\":\"Cannot read properties of null (reading 'once')\",\"description\":\"Uncaught TypeError: Cannot read properties of null (reading 'once')\"},\"frames\":[{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202367,\"method\":\"[anonymous]\",\"colno\":10},{\"filename\":\"https://instance.example.com/fe/js/cv-script.js\",\"lineno\":202406,\"method\":\"InfoReceiver.doXhr\",\"colno\":11}]},\"telemetry\":[{\"level\":\"error\",\"type\":\"error\",\"timestamp_ms\":1730843997119,\"body\":{\"message\":\"Cannot read properties of null (reading 'once')\",\"stack\":\"TypeError: Cannot read properties of null (reading 'once')\\n    at InfoReceiver.doXhr (https://instance.example.com/fe/js/cv-script.js:202406:11)\\n    at https://instance.example.com/fe/js/cv-script.js:202367:10\"},\"source\":\"client\",\"uuid\":\"a4231093-6d2e-4dbb-9f7f-7f0c97fde382\"}]},\"context\":\"\"}}"},"source":"client"},{"level":"log","type":"log","timestamp_ms":1730843997220,"body":{"message":"--DynamicJavaScriptAnalysis from JS:-------------------------"},"source":"client"},{"level":"error","type":"network","timestamp_ms":1730843997410,"body":{"method":"GET","url":"https://localhost:8000/sockjs-node/info?t=1730843997179","status_code":0,"start_time_ms":1730843997180,"end_time_ms":1730843997410,"subtype":"xhr","response_content_type":null},"source":"client"},{"level":"error","type":"network","timestamp_ms":1730843997410,"body":{"method":"GET","url":"https://localhost:8000/sockjs-node/info?t=1730843997221","status_code":0,"start_time_ms":1730843997221,"end_time_ms":1730843997410,"subtype":"xhr","response_content_type":null},"source":"client"},{"level":"info","type":"network","timestamp_ms":1730843997482,"body":{"method":"POST","url":"https://api.rollbar.com:443/api/1/item/","status_code":200,"start_time_ms":1730843997213,"end_time_ms":1730843997482,"request_content_type":"application/json","subtype":"xhr","response_content_type":"application/json; charset=utf-8"},"source":"client"},{"level":"error","type":"error","timestamp_ms":1730843997563,"body":{"message":"Request failed with status code 500","stack":"Error: Request failed with status code 500\n    at createError (https://instance.example.com/fe/js/cv-script.js:51368:15)\n    at settle (https://instance.example.com/fe/js/cv-script.js:51664:12)\n    at XMLHttpRequest.onloadend (https://instance.example.com/fe/js/cv-script.js:50688:7)"},"source":"client","uuid":"8ea547f7-4ead-4638-bd75-97e9d3af07a9"}]},"context":""}}
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get search (<anonymous>:1:248279)
    at Array.<anonymous> (https://instance.example.com/fe/js/cv-script.js:201791:42607)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.addBaseInfo (https://instance.example.com/fe/js/cv-script.js:201791:42473)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.ensureItemHasSomethingToSay (https://instance.example.com/fe/js/cv-script.js:201791:42150)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.handleItemWithError (https://instance.example.com/fe/js/cv-script.js:201791:42001)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at Array.handleDomException (https://instance.example.com/fe/js/cv-script.js:201791:41530)
    at s (https://instance.example.com/fe/js/cv-script.js:201791:31979)
    at o._applyTransforms (https://instance.example.com/fe/js/cv-script.js:201791:31998)
    at o.log (https://instance.example.com/fe/js/cv-script.js:201791:31700)
    at a._log (https://instance.example.com/fe/js/cv-script.js:201791:24343)
    at a.log (https://instance.example.com/fe/js/cv-script.js:201791:23115)
    at m.handleUnhandledRejection (https://instance.example.com/fe/js/cv-script.js:201791:19920)
    at n (https://instance.example.com/fe/js/cv-script.js:201791:36330)
  • The stack trace at the sink was:

    at Object.XMhUr (<anonymous>:1:544502)
    at _0x13dcf0 (<anonymous>:1:558761)
    at _0xdc6a5f.<computed>._0x13cc4d.oknbI._0x3e2633.XMLHttpRequest.<computed> (<anonymous>:1:458938)
    at XMLHttpRequest.send (https://instance.example.com/fe/js/cv-script.js:201791:62448)
    at t.exports (https://instance.example.com/fe/js/cv-script.js:201791:39384)
    at s._makeRequest (https://instance.example.com/fe/js/cv-script.js:201791:37748)
    at s._makeZoneRequest (https://instance.example.com/fe/js/cv-script.js:201791:37505)
    at s.post (https://instance.example.com/fe/js/cv-script.js:201791:36989)
    at https://instance.example.com/fe/js/cv-script.js:201791:32574

TLS certificate

/

Issue detail:

The server presented a valid, trusted TLS certificate. This issue is purely informational.

The server presented the following certificates:

Server certificate

Issued to:   *.sandbox.example.com
Issued by:   Amazon RSA 2048 M02
Valid from:   Wed Feb 28 00:00:00 UTC 2024
Valid to:   Sat Mar 29 23:59:59 UTC 2025

Certificate chain #1

Issued to:   Amazon RSA 2048 M02
Issued by:   Amazon Root CA 1
Valid from:   Tue Aug 23 22:25:30 UTC 2022
Valid to:   Fri Aug 23 22:25:30 UTC 2030

Certificate chain #2

Issued to:   Amazon Root CA 1
Issued by:   Starfield Services Root Certificate Authority - G2
Valid from:   Mon May 25 12:00:00 UTC 2015
Valid to:   Thu Dec 31 01:00:00 UTC 2037

Certificate chain #3

Issued to:   Starfield Services Root Certificate Authority - G2
Issued by:   Starfield Class 2 Certification Authority
Valid from:   Wed Sep 02 00:00:00 UTC 2009
Valid to:   Wed Jun 28 17:39:16 UTC 2034

Certificate chain #4

Issued to:   Starfield Class 2 Certification Authority
Issued by:   Starfield Class 2 Certification Authority
Valid from:   Tue Jun 29 17:39:16 UTC 2004
Valid to:   Thu Jun 29 17:39:16 UTC 2034

Issue background:

TLS (or SSL) helps to protect the confidentiality and integrity of information in transit between the browser and server, and to provide authentication of the server's identity. To serve this purpose, the server must present an TLS certificate that is valid for the server's hostname, is issued by a trusted authority and is valid for the current date. If any one of these requirements is not met, TLS connections to the server will not provide the full protection for which TLS is designed.

It should be noted that various attacks exist against TLS in general, and in the context of HTTPS web connections in particular. It may be possible for a determined and suitably-positioned attacker to compromise TLS connections without user detection even when a valid TLS certificate is used.

References

Vulnerability classifications

Content security policy: allows untrusted script execution

/fe/m3/m-login

Issue detail:

The content security policy fails to prevent untrusted JavaScript from being executed. As a result, it may fail to mitigate cross-site scripting attacks.

The policy has the following issues:

The policy allows global wildcard URLs which allows arbitrary scripts to be executed.

The policy allows data: URLs which allows arbitrary scripts to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global wildcards in script directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Content security policy: allows untrusted script execution

/m/v3/actions/action-log

Issue detail:

The content security policy fails to prevent untrusted JavaScript from being executed. As a result, it may fail to mitigate cross-site scripting attacks.

The policy has the following issues:

The policy allows global wildcard URLs which allows arbitrary scripts to be executed.

The policy allows data: URLs which allows arbitrary scripts to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global wildcards in script directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution.

References

Vulnerability classifications

Request:

POST /m/v3/actions/action-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1789135595.1730843965; _ga_0CGDK6Q0X4=GS1.1.1730843965.1.0.1730843965.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 107 {"name":"ForgotPasswordButtonClicked","category":"mConsolefe","data":{"deviceType":"Desktop"}}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:26 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted script execution

/m/v3/actions/event-log

Issue detail:

The content security policy fails to prevent untrusted JavaScript from being executed. As a result, it may fail to mitigate cross-site scripting attacks.

The policy has the following issues:

The policy allows global wildcard URLs which allows arbitrary scripts to be executed.

The policy allows data: URLs which allows arbitrary scripts to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global wildcards in script directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution.

References

Vulnerability classifications

Request:

POST /m/v3/actions/event-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1245037457.1730843989; _ga_0CGDK6Q0X4=GS1.1.1730843988.1.0.1730843990.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 279 {"name":"ForgotPasswordButtonClicked","category":"mConsoleEvents","timestamp":1730843990,"data":{"currentURL":"https://instance.example.com/fe/m3/m-login","previou
Snip

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:50 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted script execution

/m/v3/actions/login-m-by-name

Issue detail:

The content security policy fails to prevent untrusted JavaScript from being executed. As a result, it may fail to mitigate cross-site scripting attacks.

The policy has the following issues:

The policy allows global wildcard URLs which allows arbitrary scripts to be executed.

The policy allows data: URLs which allows arbitrary scripts to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global wildcards in script directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution.

References

Vulnerability classifications

Request:

POST /m/v3/actions/login-m-by-name HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Authorization: Bearer undefined Cookie: _ga=GA1.1.2130470854.1730843985; _ga_0CGDK6Q0X4=GS1.1.1730843984.1.0.1730843986.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 33 {"mName":"","password":""}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:46 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted script execution

/m/v3/actions/request-m-password-reset

Issue detail:

The content security policy fails to prevent untrusted JavaScript from being executed. As a result, it may fail to mitigate cross-site scripting attacks.

The policy has the following issues:

The policy allows global wildcard URLs which allows arbitrary scripts to be executed.

The policy allows data: URLs which allows arbitrary scripts to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global wildcards in script directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution.

References

Vulnerability classifications

Request:

POST /m/v3/actions/request-m-password-reset HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1294211964.1730843974; _ga_0CGDK6Q0X4=GS1.1.1730843974.1.1.1730843975.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/request-reset-password Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 94 {"mName":"BoSUhm","mEmail":"BoSUhmuz@burpcollaborator.net","mPhone":null}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:36 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted script execution

/m/v3/translations

Issue detail:

The content security policy fails to prevent untrusted JavaScript from being executed. As a result, it may fail to mitigate cross-site scripting attacks.

The policy has the following issues:

The policy allows global wildcard URLs which allows arbitrary scripts to be executed.

The policy allows data: URLs which allows arbitrary scripts to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global wildcards in script directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution.

References

Vulnerability classifications

Request:

GET /m/v3/translations?locale=en_US&category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1871968749.1730843978; _ga_0CGDK6Q0X4=GS1.1.1730843977.1.1.1730843978.0.0.0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:39 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted script execution

/m/v3/translations/locales

Issue detail:

The content security policy fails to prevent untrusted JavaScript from being executed. As a result, it may fail to mitigate cross-site scripting attacks.

The policy has the following issues:

The policy allows global wildcard URLs which allows arbitrary scripts to be executed.

The policy allows data: URLs which allows arbitrary scripts to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate cross-site scripting by avoiding 'unsafe-inline', 'unsafe-eval', data: URLs, and global wildcards in script directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' to prevent untrusted JavaScript execution.

References

Vulnerability classifications

Request:

GET /m/v3/translations/locales?category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:24 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted style execution

/fe/m3/m-login

Issue detail:

The content security policy fails to prevent untrusted style execution. As a result, it may fail to mitigate style based data exfiltration.

The policy allows global wildcard URLs which allows arbitrary styles to be executed.

The policy allows data: URLs which allows arbitrary styles to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global wildcards in style directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Content security policy: allows untrusted style execution

/m/v3/actions/action-log

Issue detail:

The content security policy fails to prevent untrusted style execution. As a result, it may fail to mitigate style based data exfiltration.

The policy allows global wildcard URLs which allows arbitrary styles to be executed.

The policy allows data: URLs which allows arbitrary styles to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global wildcards in style directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive.

References

Vulnerability classifications

Request:

POST /m/v3/actions/action-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1789135595.1730843965; _ga_0CGDK6Q0X4=GS1.1.1730843965.1.0.1730843965.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 107 {"name":"ForgotPasswordButtonClicked","category":"mConsolefe","data":{"deviceType":"Desktop"}}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:26 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted style execution

/m/v3/actions/event-log

Issue detail:

The content security policy fails to prevent untrusted style execution. As a result, it may fail to mitigate style based data exfiltration.

The policy allows global wildcard URLs which allows arbitrary styles to be executed.

The policy allows data: URLs which allows arbitrary styles to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global wildcards in style directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive.

References

Vulnerability classifications

Request:

POST /m/v3/actions/event-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1245037457.1730843989; _ga_0CGDK6Q0X4=GS1.1.1730843988.1.0.1730843990.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 279 {"name":"ForgotPasswordButtonClicked","category":"mConsoleEvents","timestamp":1730843990,"data":{"currentURL":"https://instance.example.com/fe/m3/m-login","previou
Snip

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:50 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted style execution

/m/v3/actions/login-m-by-name

Issue detail:

The content security policy fails to prevent untrusted style execution. As a result, it may fail to mitigate style based data exfiltration.

The policy allows global wildcard URLs which allows arbitrary styles to be executed.

The policy allows data: URLs which allows arbitrary styles to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global wildcards in style directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive.

References

Vulnerability classifications

Request:

POST /m/v3/actions/login-m-by-name HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Authorization: Bearer undefined Cookie: _ga=GA1.1.2130470854.1730843985; _ga_0CGDK6Q0X4=GS1.1.1730843984.1.0.1730843986.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 33 {"mName":"","password":""}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:46 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted style execution

/m/v3/actions/request-m-password-reset

Issue detail:

The content security policy fails to prevent untrusted style execution. As a result, it may fail to mitigate style based data exfiltration.

The policy allows global wildcard URLs which allows arbitrary styles to be executed.

The policy allows data: URLs which allows arbitrary styles to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global wildcards in style directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive.

References

Vulnerability classifications

Request:

POST /m/v3/actions/request-m-password-reset HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1294211964.1730843974; _ga_0CGDK6Q0X4=GS1.1.1730843974.1.1.1730843975.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/request-reset-password Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 94 {"mName":"BoSUhm","mEmail":"BoSUhmuz@burpcollaborator.net","mPhone":null}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:36 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted style execution

/m/v3/translations

Issue detail:

The content security policy fails to prevent untrusted style execution. As a result, it may fail to mitigate style based data exfiltration.

The policy allows global wildcard URLs which allows arbitrary styles to be executed.

The policy allows data: URLs which allows arbitrary styles to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global wildcards in style directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive.

References

Vulnerability classifications

Request:

GET /m/v3/translations?locale=en_US&category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1871968749.1730843978; _ga_0CGDK6Q0X4=GS1.1.1730843977.1.1.1730843978.0.0.0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:39 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows untrusted style execution

/m/v3/translations/locales

Issue detail:

The content security policy fails to prevent untrusted style execution. As a result, it may fail to mitigate style based data exfiltration.

The policy allows global wildcard URLs which allows arbitrary styles to be executed.

The policy allows data: URLs which allows arbitrary styles to be executed.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

Mitigate style-based data exfiltration by avoiding 'unsafe-inline', data: URLs, and global wildcards in style directives. Use a secure, random nonce of at least 8 characters 'nonce-RANDOM' in the relevant directive.

References

Vulnerability classifications

Request:

GET /m/v3/translations/locales?category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:24 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows form hijacking

/fe/m3/m-login

Issue detail:

The content security policy doesn't prevent form hijacking, where attackers with HTML injection hijack forms using action attributes. This can lead to credential theft by autofilling passwords from a manager and sending them to an attacker's server upon form submission.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

We recommend using the form-action directive in the CSP response header to control form post destinations. If no form actions are used, set form-action to 'none' to block untrusted forms. For applications without external form URLs, use 'self' to allow only same-origin URLs. If needed, allow list hosts for external URL form submissions, but be aware this lets attackers submit to these external resources.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Content security policy: allows form hijacking

/m/v3/actions/action-log

Issue detail:

The content security policy doesn't prevent form hijacking, where attackers with HTML injection hijack forms using action attributes. This can lead to credential theft by autofilling passwords from a manager and sending them to an attacker's server upon form submission.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

We recommend using the form-action directive in the CSP response header to control form post destinations. If no form actions are used, set form-action to 'none' to block untrusted forms. For applications without external form URLs, use 'self' to allow only same-origin URLs. If needed, allow list hosts for external URL form submissions, but be aware this lets attackers submit to these external resources.

References

Vulnerability classifications

Request:

POST /m/v3/actions/action-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1789135595.1730843965; _ga_0CGDK6Q0X4=GS1.1.1730843965.1.0.1730843965.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 107 {"name":"ForgotPasswordButtonClicked","category":"mConsolefe","data":{"deviceType":"Desktop"}}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:26 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows form hijacking

/m/v3/actions/event-log

Issue detail:

The content security policy doesn't prevent form hijacking, where attackers with HTML injection hijack forms using action attributes. This can lead to credential theft by autofilling passwords from a manager and sending them to an attacker's server upon form submission.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

We recommend using the form-action directive in the CSP response header to control form post destinations. If no form actions are used, set form-action to 'none' to block untrusted forms. For applications without external form URLs, use 'self' to allow only same-origin URLs. If needed, allow list hosts for external URL form submissions, but be aware this lets attackers submit to these external resources.

References

Vulnerability classifications

Request:

POST /m/v3/actions/event-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.2130470854.1730843985; _ga_0CGDK6Q0X4=GS1.1.1730843984.1.0.1730843986.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 301 {"name":"mLoginAttempted","category":"mConsoleEvents","timestamp":1730843986,"data":{"currentURL":"https://instance.example.com/fe/m3/m-login","previousURL"
Snip

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:46 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows form hijacking

/m/v3/actions/login-m-by-name

Issue detail:

The content security policy doesn't prevent form hijacking, where attackers with HTML injection hijack forms using action attributes. This can lead to credential theft by autofilling passwords from a manager and sending them to an attacker's server upon form submission.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

We recommend using the form-action directive in the CSP response header to control form post destinations. If no form actions are used, set form-action to 'none' to block untrusted forms. For applications without external form URLs, use 'self' to allow only same-origin URLs. If needed, allow list hosts for external URL form submissions, but be aware this lets attackers submit to these external resources.

References

Vulnerability classifications

Request:

POST /m/v3/actions/login-m-by-name HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Authorization: Bearer undefined Cookie: _ga=GA1.1.2130470854.1730843985; _ga_0CGDK6Q0X4=GS1.1.1730843984.1.0.1730843986.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 33 {"mName":"","password":""}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:46 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows form hijacking

/m/v3/actions/request-m-password-reset

Issue detail:

The content security policy doesn't prevent form hijacking, where attackers with HTML injection hijack forms using action attributes. This can lead to credential theft by autofilling passwords from a manager and sending them to an attacker's server upon form submission.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

We recommend using the form-action directive in the CSP response header to control form post destinations. If no form actions are used, set form-action to 'none' to block untrusted forms. For applications without external form URLs, use 'self' to allow only same-origin URLs. If needed, allow list hosts for external URL form submissions, but be aware this lets attackers submit to these external resources.

References

Vulnerability classifications

Request:

POST /m/v3/actions/request-m-password-reset HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1294211964.1730843974; _ga_0CGDK6Q0X4=GS1.1.1730843974.1.1.1730843975.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/request-reset-password Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 94 {"mName":"BoSUhm","mEmail":"BoSUhmuz@burpcollaborator.net","mPhone":null}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:36 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows form hijacking

/m/v3/translations

Issue detail:

The content security policy doesn't prevent form hijacking, where attackers with HTML injection hijack forms using action attributes. This can lead to credential theft by autofilling passwords from a manager and sending them to an attacker's server upon form submission.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

We recommend using the form-action directive in the CSP response header to control form post destinations. If no form actions are used, set form-action to 'none' to block untrusted forms. For applications without external form URLs, use 'self' to allow only same-origin URLs. If needed, allow list hosts for external URL form submissions, but be aware this lets attackers submit to these external resources.

References

Vulnerability classifications

Request:

GET /m/v3/translations?locale=en_US&category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.1871968749.1730843978; _ga_0CGDK6Q0X4=GS1.1.1730843977.1.1.1730843978.0.0.0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:39 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Content security policy: allows form hijacking

/m/v3/translations/locales

Issue detail:

The content security policy doesn't prevent form hijacking, where attackers with HTML injection hijack forms using action attributes. This can lead to credential theft by autofilling passwords from a manager and sending them to an attacker's server upon form submission.

Issue background:

Content Security Policy (CSP) is a security mechanism designed to mitigate cross-site scripting attacks by disabling dangerous behaviours such as untrusted JavaScript execution. Websites can specify their security policy in a response header or meta tag, enabling fine-grained control over dangerous features like scripts and stylesheets.

Issue remediation:

We recommend using the form-action directive in the CSP response header to control form post destinations. If no form actions are used, set form-action to 'none' to block untrusted forms. For applications without external form URLs, use 'self' to allow only same-origin URLs. If needed, allow list hosts for external URL form submissions, but be aware this lets attackers submit to these external resources.

References

Vulnerability classifications

Request:

GET /m/v3/translations/locales?category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 21:59:24 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing

/m/v3/actions/action-log

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request.

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

If another domain is allowed by the policy, then that domain can potentially attack users of the application. If a user is logged in to the application, and visits a domain allowed by the policy, then any malicious content running on that domain can potentially retrieve content from the application, and sometimes carry out actions within the security context of the logged in user.

Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within that domain could potentially be leveraged by an attacker to exploit the trust relationship and attack the application that allows access. CORS policies on pages containing sensitive information should be reviewed to determine whether it is appropriate for the application to trust both the intentions and security posture of any domains granted access.

Issue remediation:

Any inappropriate domains should be removed from the CORS policy.

References

Vulnerability classifications

Request:

POST /m/v3/actions/action-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.705270236.1730844023; _ga_0CGDK6Q0X4=GS1.1.1730844022.1.0.1730844028.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 118 {"name":"mLoginAttempt","category":"mConsolefe","data":{"deviceType":"Desktop","mName":""}}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:00:29 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing

/m/v3/actions/event-log

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request.

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

If another domain is allowed by the policy, then that domain can potentially attack users of the application. If a user is logged in to the application, and visits a domain allowed by the policy, then any malicious content running on that domain can potentially retrieve content from the application, and sometimes carry out actions within the security context of the logged in user.

Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within that domain could potentially be leveraged by an attacker to exploit the trust relationship and attack the application that allows access. CORS policies on pages containing sensitive information should be reviewed to determine whether it is appropriate for the application to trust both the intentions and security posture of any domains granted access.

Issue remediation:

Any inappropriate domains should be removed from the CORS policy.

References

Vulnerability classifications

Request:

POST /m/v3/actions/event-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.567957676.1730844025; _ga_0CGDK6Q0X4=GS1.1.1730844024.1.0.1730844029.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 279 {"name":"ForgotPasswordButtonClicked","category":"mConsoleEvents","timestamp":1730844029,"data":{"currentURL":"https://instance.example.com/fe/m3/m-login","previou
Snip

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:00:30 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing

/m/v3/actions/login-m-by-name

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request.

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

If another domain is allowed by the policy, then that domain can potentially attack users of the application. If a user is logged in to the application, and visits a domain allowed by the policy, then any malicious content running on that domain can potentially retrieve content from the application, and sometimes carry out actions within the security context of the logged in user.

Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within that domain could potentially be leveraged by an attacker to exploit the trust relationship and attack the application that allows access. CORS policies on pages containing sensitive information should be reviewed to determine whether it is appropriate for the application to trust both the intentions and security posture of any domains granted access.

Issue remediation:

Any inappropriate domains should be removed from the CORS policy.

References

Vulnerability classifications

Request:

POST /m/v3/actions/login-m-by-name HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Authorization: Bearer undefined Cookie: _ga=GA1.1.766182157.1730844017; _ga_0CGDK6Q0X4=GS1.1.1730844017.1.0.1730844022.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 33 {"mName":"","password":""}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:00:23 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing

/m/v3/actions/request-m-password-reset

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request.

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

If another domain is allowed by the policy, then that domain can potentially attack users of the application. If a user is logged in to the application, and visits a domain allowed by the policy, then any malicious content running on that domain can potentially retrieve content from the application, and sometimes carry out actions within the security context of the logged in user.

Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within that domain could potentially be leveraged by an attacker to exploit the trust relationship and attack the application that allows access. CORS policies on pages containing sensitive information should be reviewed to determine whether it is appropriate for the application to trust both the intentions and security posture of any domains granted access.

Issue remediation:

Any inappropriate domains should be removed from the CORS policy.

References

Vulnerability classifications

Request:

POST /m/v3/actions/request-m-password-reset HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.496830287.1730844017; _ga_0CGDK6Q0X4=GS1.1.1730844017.1.1.1730844022.0.0.0 Origin: https://instance.example.com Referer: https://instance.example.com/fe/m3/request-reset-password Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 94 {"mName":"BoSUhm","mEmail":"BoSUhmuz@burpcollaborator.net","mPhone":null}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:00:23 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing

/m/v3/translations

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request.

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

If another domain is allowed by the policy, then that domain can potentially attack users of the application. If a user is logged in to the application, and visits a domain allowed by the policy, then any malicious content running on that domain can potentially retrieve content from the application, and sometimes carry out actions within the security context of the logged in user.

Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within that domain could potentially be leveraged by an attacker to exploit the trust relationship and attack the application that allows access. CORS policies on pages containing sensitive information should be reviewed to determine whether it is appropriate for the application to trust both the intentions and security posture of any domains granted access.

Issue remediation:

Any inappropriate domains should be removed from the CORS policy.

References

Vulnerability classifications

Request:

GET /m/v3/translations?locale=en_US&category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.2145941182.1730844052; _ga_0CGDK6Q0X4=GS1.1.1730844051.1.1.1730844054.0.0.0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Origin: https://instance.example.com

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:04:36 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing

/m/v3/translations/locales

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request.

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

If another domain is allowed by the policy, then that domain can potentially attack users of the application. If a user is logged in to the application, and visits a domain allowed by the policy, then any malicious content running on that domain can potentially retrieve content from the application, and sometimes carry out actions within the security context of the logged in user.

Even if an allowed domain is not overtly malicious in itself, security vulnerabilities within that domain could potentially be leveraged by an attacker to exploit the trust relationship and attack the application that allows access. CORS policies on pages containing sensitive information should be reviewed to determine whether it is appropriate for the application to trust both the intentions and security posture of any domains granted access.

Issue remediation:

Any inappropriate domains should be removed from the CORS policy.

References

Vulnerability classifications

Request:

GET /m/v3/translations/locales?category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Origin: https://instance.example.com

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:09:09 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing: arbitrary origin trusted

/m/v3/actions/action-log

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request that allows access from any domain.

The application allowed access from the requested origin https://aazpkgamubbk.com

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way interaction by third-party web sites. Unless the response consists only of unprotected public content, this policy is likely to present a security risk.

If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be able to carry out privileged actions and retrieve sensitive information. Even if it does not, attackers may be able to bypass any IP-based access controls by proxying through users' browsers.

Issue remediation:

Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of trusted domains.

References

Vulnerability classifications

Request:

POST /m/v3/actions/action-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.705270236.1730844023; _ga_0CGDK6Q0X4=GS1.1.1730844022.1.0.1730844028.0.0.0 Origin: https://aazpkgamubbk.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 118 {"name":"mLoginAttempt","category":"mConsolefe","data":{"deviceType":"Desktop","mName":""}}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:08:15 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing: arbitrary origin trusted

/m/v3/actions/event-log

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request that allows access from any domain.

The application allowed access from the requested origin https://nyc.com

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way interaction by third-party web sites. Unless the response consists only of unprotected public content, this policy is likely to present a security risk.

If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be able to carry out privileged actions and retrieve sensitive information. Even if it does not, attackers may be able to bypass any IP-based access controls by proxying through users' browsers.

Issue remediation:

Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of trusted domains.

References

Vulnerability classifications

Request:

POST /m/v3/actions/event-log HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.567957676.1730844025; _ga_0CGDK6Q0X4=GS1.1.1730844024.1.0.1730844029.0.0.0 Origin: https://nyc.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 279 {"name":"ForgotPasswordButtonClicked","category":"mConsoleEvents","timestamp":1730844029,"data":{"currentURL":"https://instance.example.com/fe/m3/m-login","previou
Snip

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:08:55 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing: arbitrary origin trusted

/m/v3/actions/login-m-by-name

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request that allows access from any domain.

The application allowed access from the requested origin https://zwa.com

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way interaction by third-party web sites. Unless the response consists only of unprotected public content, this policy is likely to present a security risk.

If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be able to carry out privileged actions and retrieve sensitive information. Even if it does not, attackers may be able to bypass any IP-based access controls by proxying through users' browsers.

Issue remediation:

Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of trusted domains.

References

Vulnerability classifications

Request:

POST /m/v3/actions/login-m-by-name HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Authorization: Bearer undefined Cookie: _ga=GA1.1.766182157.1730844017; _ga_0CGDK6Q0X4=GS1.1.1730844017.1.0.1730844022.0.0.0 Origin: https://zwa.com Referer: https://instance.example.com/fe/m3/m-login Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 33 {"mName":"","password":""}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:08:00 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing: arbitrary origin trusted

/m/v3/actions/request-m-password-reset

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request that allows access from any domain.

The application allowed access from the requested origin https://wsparhyjqvka.com

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way interaction by third-party web sites. Unless the response consists only of unprotected public content, this policy is likely to present a security risk.

If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be able to carry out privileged actions and retrieve sensitive information. Even if it does not, attackers may be able to bypass any IP-based access controls by proxying through users' browsers.

Issue remediation:

Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of trusted domains.

References

Vulnerability classifications

Request:

POST /m/v3/actions/request-m-password-reset HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.496830287.1730844017; _ga_0CGDK6Q0X4=GS1.1.1730844017.1.1.1730844022.0.0.0 Origin: https://wsparhyjqvka.com Referer: https://instance.example.com/fe/m3/request-reset-password Content-Type: application/json Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Content-Length: 94 {"mName":"BoSUhm","mEmail":"BoSUhmuz@burpcollaborator.net","mPhone":null}

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:08:21 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing: arbitrary origin trusted

/m/v3/translations

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request that allows access from any domain.

The application allowed access from the requested origin https://tjelewarvblp.com

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way interaction by third-party web sites. Unless the response consists only of unprotected public content, this policy is likely to present a security risk.

If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be able to carry out privileged actions and retrieve sensitive information. Even if it does not, attackers may be able to bypass any IP-based access controls by proxying through users' browsers.

Issue remediation:

Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of trusted domains.

References

Vulnerability classifications

Request:

GET /m/v3/translations?locale=en_US&category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Cookie: _ga=GA1.1.2145941182.1730844052; _ga_0CGDK6Q0X4=GS1.1.1730844051.1.1.1730844054.0.0.0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Origin: https://tjelewarvblp.com

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:04:37 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Cross-origin resource sharing: arbitrary origin trusted

/m/v3/translations/locales

Issue detail:

The application implements an HTML5 cross-origin resource sharing (CORS) policy for this request that allows access from any domain.

The application allowed access from the requested origin https://pduoenagjukk.com

The response uses a wildcard in the Access-Control-Allow-Origin header and also specifies that credentials are allowed. Note that browsers do not allow this combination, and the Access-Control-Allow-Credentials header will be ignored.

Since the Vary: Origin header was not present in the response, reverse proxies and intermediate servers may cache it. This may enable an attacker to carry out cache poisoning attacks.

Issue background:

An HTML5 cross-origin resource sharing (CORS) policy controls whether and how content running on other domains can perform two-way interaction with the domain that publishes the policy. The policy is fine-grained and can apply access controls per-request based on the URL and other features of the request.

Trusting arbitrary origins effectively disables the same-origin policy, allowing two-way interaction by third-party web sites. Unless the response consists only of unprotected public content, this policy is likely to present a security risk.

If the site specifies the header Access-Control-Allow-Credentials: true, third-party sites may be able to carry out privileged actions and retrieve sensitive information. Even if it does not, attackers may be able to bypass any IP-based access controls by proxying through users' browsers.

Issue remediation:

Rather than using a wildcard or programmatically verifying supplied origins, use a whitelist of trusted domains.

References

Vulnerability classifications

Request:

GET /m/v3/translations/locales?category=m-fe HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: application/json, text/plain, */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Referer: https://instance.example.com/fe/m3/m-login Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0 Origin: https://pduoenagjukk.com

Response:

HTTP/2 500 Internal Server Error Date: Tue, 05 Nov 2024 22:09:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Max-Age: 86400

Robots.txt file

/robots.txt

Issue detail:

The web server contains a robots.txt file.

Issue background:

The file robots.txt is used to give instructions to web robots, such as search engine crawlers, about locations within the web site that robots are allowed, or not allowed, to crawl and index.

The presence of the robots.txt does not in itself present any kind of security vulnerability. However, it is often used to identify restricted or private areas of a site's contents. The information in the file may therefore help an attacker to map out the site's contents, especially if some of the locations identified are not linked from elsewhere in the site. If the application relies on robots.txt to protect access to these areas, and does not enforce proper access control over them, then this presents a serious vulnerability.

Issue remediation:

The robots.txt file is not itself a security threat, and its correct use can represent good practice for non-security reasons. You should not assume that all web robots will honor the file's instructions. Rather, assume that attackers will pay close attention to any locations identified in the file. Do not rely on robots.txt to provide any kind of protection over unauthorized access.

Vulnerability classifications

Request:

GET /robots.txt HTTP/1.1 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: */* Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0

Response:

HTTP/1.1 200 OK Date: Tue, 05 Nov 2024 21:59:51 GMT Content-Type: text/plain Content-Length: 195 Connection: close Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com Last-Modified: Tue, 15 Oct 2024 15:56:17 GMT ETag: "c3-62485fe5f1553-gzip" Accept-Ranges: bytes Vary: Accept-Encoding User-agent: * Disallow: /app Disallow: /apidocs/example-app-install.pdf Disallow: /dashboard/ Disallow: /m2/ Disallow: /m/ Disallow: /js/ Disallow: /modules/api/fetch-dictionary.php

Cacheable HTTPS response

/fe/m3/m-login

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:

Applications 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:

  • Cache-control: no-store
  • Pragma: no-cache

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

DOM data manipulation (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based DOM data manipulation. Data is read from location.pathname and passed to history.replaceState.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM data manipulation arises when a script writes controllable data to a field within the DOM that is used within the visible UI or client-side application logic. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will modify the appearance or behavior of the client-side UI. An attacker may be able to leverage this to perform virtual defacement of the application, or possibly to induce the user to perform unintended actions.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to dynamically write to DOM data fields any data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from being stored. In general, this is best achieved by using a whitelist of permitted values.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.pathname and passed to history.replaceState.

  • The following value was injected into the source:

    ///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&
  • The previous value reached the sink:

    https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get pathname (<anonymous>:1:249642)
    at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:13)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)
    at https://instance.example.com/fe/js/app.js:994:18
  • The stack trace at the sink was:

    at Object.dXSzc (<anonymous>:1:107608)
    at Object.skeuk (<anonymous>:1:548616)
    at History.replaceState (<anonymous>:1:548864)
    at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218154:9)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)

DOM data manipulation (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based DOM data manipulation. Data is read from location.search and passed to history.replaceState.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM data manipulation arises when a script writes controllable data to a field within the DOM that is used within the visible UI or client-side application logic. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will modify the appearance or behavior of the client-side UI. An attacker may be able to leverage this to perform virtual defacement of the application, or possibly to induce the user to perform unintended actions.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to dynamically write to DOM data fields any data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from being stored. In general, this is best achieved by using a whitelist of permitted values.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.search and passed to history.replaceState.

  • The following value was injected into the source:

    ?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&
  • The previous value reached the sink:

    https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get search (<anonymous>:1:248279)
    at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:23)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)
    at https://instance.example.com/fe/js/app.js:994:18
  • The stack trace at the sink was:

    at Object.dXSzc (<anonymous>:1:107608)
    at Object.skeuk (<anonymous>:1:548616)
    at History.replaceState (<anonymous>:1:548864)
    at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218154:9)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)

DOM data manipulation (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based DOM data manipulation. Data is read from location.hash and passed to history.replaceState.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM data manipulation arises when a script writes controllable data to a field within the DOM that is used within the visible UI or client-side application logic. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will modify the appearance or behavior of the client-side UI. An attacker may be able to leverage this to perform virtual defacement of the application, or possibly to induce the user to perform unintended actions.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to dynamically write to DOM data fields any data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from being stored. In general, this is best achieved by using a whitelist of permitted values.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.hash and passed to history.replaceState.

  • The following value was injected into the source:

    #hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&
  • The previous value reached the sink:

    https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get hash (<anonymous>:1:249429)
    at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:31)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)
    at https://instance.example.com/fe/js/app.js:994:18
  • The stack trace at the sink was:

    at Object.dXSzc (<anonymous>:1:107608)
    at Object.skeuk (<anonymous>:1:548616)
    at History.replaceState (<anonymous>:1:548864)
    at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218154:9)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)

DOM data manipulation (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based DOM data manipulation. Data is read from location.pathname and passed to history.replaceState.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM data manipulation arises when a script writes controllable data to a field within the DOM that is used within the visible UI or client-side application logic. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will modify the appearance or behavior of the client-side UI. An attacker may be able to leverage this to perform virtual defacement of the application, or possibly to induce the user to perform unintended actions.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to dynamically write to DOM data fields any data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from being stored. In general, this is best achieved by using a whitelist of permitted values.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.pathname and passed to history.replaceState.

  • The following value was injected into the source:

    ///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&
  • The previous value reached the sink:

    https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get pathname (<anonymous>:1:249642)
    at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:13)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)
    at https://instance.example.com/fe/js/app.js:994:18
  • The stack trace at the sink was:

    at Object.dXSzc (<anonymous>:1:107608)
    at Object.skeuk (<anonymous>:1:548616)
    at History.replaceState (<anonymous>:1:548864)
    at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60)
    at Object.replace (https://instance.example.com/fe/js/cv-script.js:218201:9)
    at finalizeNavigation (https://instance.example.com/fe/js/cv-script.js:220844:31)
    at https://instance.example.com/fe/js/cv-script.js:220724:27
  • This was triggered by a loadend event.

DOM data manipulation (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based DOM data manipulation. Data is read from location.search and passed to history.replaceState.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM data manipulation arises when a script writes controllable data to a field within the DOM that is used within the visible UI or client-side application logic. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will modify the appearance or behavior of the client-side UI. An attacker may be able to leverage this to perform virtual defacement of the application, or possibly to induce the user to perform unintended actions.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to dynamically write to DOM data fields any data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from being stored. In general, this is best achieved by using a whitelist of permitted values.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.search and passed to history.replaceState.

  • The following value was injected into the source:

    ?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&
  • The previous value reached the sink:

    https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get search (<anonymous>:1:248279)
    at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:23)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)
    at https://instance.example.com/fe/js/app.js:994:18
  • The stack trace at the sink was:

    at Object.dXSzc (<anonymous>:1:107608)
    at Object.skeuk (<anonymous>:1:548616)
    at History.replaceState (<anonymous>:1:548864)
    at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60)
    at Object.replace (https://instance.example.com/fe/js/cv-script.js:218201:9)
    at finalizeNavigation (https://instance.example.com/fe/js/cv-script.js:220844:31)
    at https://instance.example.com/fe/js/cv-script.js:220724:27
  • This was triggered by a loadend event.

DOM data manipulation (DOM-based)

/fe/m3/m-login

Issue detail:

The application may be vulnerable to DOM-based DOM data manipulation. Data is read from location.hash and passed to history.replaceState.

Issue background:

DOM-based vulnerabilities arise when a client-side script reads data from a controllable part of the DOM (for example, the URL) and processes this data in an unsafe way.

DOM data manipulation arises when a script writes controllable data to a field within the DOM that is used within the visible UI or client-side application logic. An attacker may be able to use the vulnerability to construct a URL that, if visited by another application user, will modify the appearance or behavior of the client-side UI. An attacker may be able to leverage this to perform virtual defacement of the application, or possibly to induce the user to perform unintended actions.

Burp Suite automatically identifies this issue using dynamic and static code analysis. Static analysis can lead to false positives that are not actually exploitable. If Burp Scanner has not provided any evidence resulting from dynamic analysis, you should review the relevant code and execution paths to determine whether this vulnerability is indeed present, or whether mitigations are in place that would prevent exploitation.

Issue remediation:

The most effective way to avoid DOM-based DOM data manipulation vulnerabilities is not to dynamically write to DOM data fields any data that originated from any untrusted source. If the desired functionality of the application means that this behavior is unavoidable, then defenses must be implemented within the client-side code to prevent malicious data from being stored. In general, this is best achieved by using a whitelist of permitted values.

References

Vulnerability classifications

Request:

GET /fe/m3/m-login HTTP/2 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/2 200 OK Date: Tue, 05 Nov 2024 21:59:12 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 1906 Server: Apache/2.4.62 (Ubuntu) X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self' https://staging.example.com X-Powered-By: Express Accept-Ranges: bytes Etag: W/"772-nTX2V1HNhmftVEdlcx8ktFJUONI-gzip" Vary: Accept-Encoding <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1.0
Snip

Dynamic analysis:

Data is read from location.hash and passed to history.replaceState.

  • The following value was injected into the source:

    #hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&
  • The previous value reached the sink:

    https://instance.example.com/fe///fe/m3/m-login//elcs7kifmd%27%22%60'%22/elcs7kifmd/%3E%3Celcs7kifmd//%3Egkr4l404dv&?g49p4yw5cy=g49p4yw5cy%27%22`'"/g49p4yw5cy/><g49p4yw5cy/\>zgrotg0z2s&#hj8js9yzmu=hj8js9yzmu%27%22`'"/hj8js9yzmu/><hj8js9yzmu/\>ea3izlhk1m&
  • The stack trace at source was:

    at Object._0x165f99 [as proxiedGetterCallback] (<anonymous>:1:557377)
    at get hash (<anonymous>:1:249429)
    at createCurrentLocation (https://instance.example.com/fe/js/cv-script.js:218038:31)
    at useHistoryStateNavigation (https://instance.example.com/fe/js/cv-script.js:218149:16)
    at createWebHistory (https://instance.example.com/fe/js/cv-script.js:218239:31)
    at ./src/router/index.ts (https://instance.example.com/fe/js/app.js:166430:79)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/apiClient/apiClient.ts (https://instance.example.com/fe/js/app.js:142756:65)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/apps/m3/services/m.login.service.ts (https://instance.example.com/fe/js/app.js:144223:102)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:1121:105)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue?vue&type=script&lang=ts (https://instance.example.com/fe/js/app.js:106648:313)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/App.vue (https://instance.example.com/fe/js/app.js:106604:90)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at ./src/main.ts (https://instance.example.com/fe/js/app.js:166283:66)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at fn (https://instance.example.com/fe/js/app.js:151:20)
    at 1 (https://instance.example.com/fe/js/app.js:172609:18)
    at __webpack_require__ (https://instance.example.com/fe/js/app.js:854:30)
    at checkDeferredModules (https://instance.example.com/fe/js/app.js:46:23)
    at https://instance.example.com/fe/js/app.js:994:18
  • The stack trace at the sink was:

    at Object.dXSzc (<anonymous>:1:107608)
    at Object.skeuk (<anonymous>:1:548616)
    at History.replaceState (<anonymous>:1:548864)
    at changeLocation (https://instance.example.com/fe/js/cv-script.js:218185:60)
    at Object.replace (https://instance.example.com/fe/js/cv-script.js:218201:9)
    at finalizeNavigation (https://instance.example.com/fe/js/cv-script.js:220844:31)
    at https://instance.example.com/fe/js/cv-script.js:220724:27
  • This was triggered by a loadend event.

More details for http://instance.example.com

Input returned in response (reflected)

/fe/m3/m-login

Issue detail:

The value of the URL path folder 1 is copied into the application's response.

Issue background:

Reflection of input arises when data is copied from a request and echoed into the application's immediate response.

Input being returned in application responses is not a vulnerability in its own right. However, it is a prerequisite for many client-side vulnerabilities, including cross-site scripting, open redirection, content spoofing, and response header injection. Additionally, some server-side vulnerabilities such as SQL injection are often easier to identify and exploit when input is returned in responses. In applications where input retrieval is rare and the environment is resistant to automated testing (for example, due to a web application firewall), it might be worth subjecting instances of it to focused manual testing.

Vulnerability classifications

Request:

GET /fes56j3607g3/m3/m-login HTTP/1.1 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/1.1 301 Moved Permanently Server: awselb/2.0 Date: Tue, 05 Nov 2024 22:04:46 GMT Content-Type: text/html Content-Length: 134 Connection: close Location: https://instance.example.com:443/fes56j3607g3/m3/m-login <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> </body> </html>

Input returned in response (reflected)

/fe/m3/m-login

Issue detail:

The value of the URL path folder 2 is copied into the application's response.

Issue background:

Reflection of input arises when data is copied from a request and echoed into the application's immediate response.

Input being returned in application responses is not a vulnerability in its own right. However, it is a prerequisite for many client-side vulnerabilities, including cross-site scripting, open redirection, content spoofing, and response header injection. Additionally, some server-side vulnerabilities such as SQL injection are often easier to identify and exploit when input is returned in responses. In applications where input retrieval is rare and the environment is resistant to automated testing (for example, due to a web application firewall), it might be worth subjecting instances of it to focused manual testing.

Vulnerability classifications

Request:

GET /fe/m3mx6wpfgqge/m-login HTTP/1.1 Host: instance.example.com Accept-Encoding: gzip, deflate, br Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Language: en-US;q=0.9,en;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36 Connection: close Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Sec-CH-UA: ".Not/A)Brand";v="99", "Google Chrome";v="130", "Chromium";v="130" Sec-CH-UA-Platform: Windows Sec-CH-UA-Mobile: ?0

Response:

HTTP/1.1 301 Moved Permanently Server: awselb/2.0 Date: Tue, 05 Nov 2024 22:05:07 GMT Content-Type: text/html Content-Length: 134 Connection: close Location: https://instance.example.com:443/fe/m3mx6wpfgqge/m-login <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> </body> </html>