Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2021-44228 PoC — Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints

Source
Associated Vulnerability
Title:Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints (CVE-2021-44228)
Description:Apache Log4j2 2.0-beta9 through 2.15.0 (excluding security releases 2.12.2, 2.12.3, and 2.3.1) JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. From version 2.16.0 (along with 2.12.2, 2.12.3, and 2.3.1), this functionality has been completely removed. Note that this vulnerability is specific to log4j-core and does not affect log4net, log4cxx, or other Apache Logging Services projects.
Description
Static detection of vulnerable log4j librairies on Windows servers, members of an AD domain.
Readme
# PS-CVE-2021-44228
Static detection of vulnerable log4j librairies on Windows members of an AD domain.
Uses detection tool binary provided by @1lann : https://github.com/1lann/log4shelldetect

# Prerequisites
- Administrator privileges on targeted computers.
- Active Directory PowerShell module.
- WindowsManagementFramwork 5.1 (PS 5.1) on targeted computers.

# Configuration
The script starts by creating a .csv list of your domain-joined servers, in the script folder.
Just run it, if that file doesn't exist yet, it will ask you for create it.

`./log4shelldetect.ps1`

You can use a search pattern to fulfill that list and target specific servers names.
That pattern will be added to the "Get-AdComputer -Filter". Example:

`./log4shelldetect.ps1 -searchPattern '*tst*'` 

# Usage
Simply launch the script without arguments. It will create PSJob foreach entries in the server list.
These PSJobs will create scheduled tasks remotely on every AD computer targeted, for each local drive detected.
Then, the scan binary will be executed to scan the filesystem, searching for vulnerable libraries.

`./log4shelldetect.ps1`

Finally, you need to retrieve the job outputs to update the server list with status (vulnerable, not vulnerable, not reachable...)
If the server is detected vulnerable, a folder named with the concerned machine name will be created in the current folder, containing the output of the scan tool.
Each line of these text files represent a vulnerable log4j binary.

`./log4shelldetect.ps1 -update`

# Considerations
**Be careful with automation !**  
The scheduled tasks runs as 'NT AUTHORITY\SYSTEM' to access every directories on the local filesystem.
Use at your owns risks. Do not hesitate to review the script before using it.

# Thanks
**Special thanks for @1lann work**, for his early development of an effective tool to detect log4j vulnerabilities.
File Snapshot

[4.0K] /data/pocs/8076fcac537ae5870f7a7a4a0ab03e80272e2f0b ├── [1.8M] log4shelldetect.exe ├── [ 13K] log4shelldetect.ps1 └── [1.8K] README.md 0 directories, 3 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →