Add SMB module NTLM MIC bypass (CVE‑2025‑54918)#1086
Add SMB module NTLM MIC bypass (CVE‑2025‑54918)#1086pol4ir wants to merge 5 commits intoPennyw0rth:mainfrom
Conversation
add SMB module NTLM MIC bypass Signed-off-by: polair <p0l4ir@gmail.com>
Signed-off-by: polair <p0l4ir@gmail.com>
Signed-off-by: polair <p0l4ir@gmail.com>
|
Thanks for the PR! Please take a look at the discussion in #978 regarding exactly this. |
Signed-off-by: polair <p0l4ir@gmail.com>
Signed-off-by: polair <p0l4ir@gmail.com>
|
Thank you @NeffIsBack I reviewed the PR and consolidated all CVE checks into a unified logic. Below are the screenshots, which you can also use for the documentation if needed.
|
|
Hi, nice improvement! there are a few points that could be improved, in my opinion:
Anyway, that’s just how I see it, probably best to wait for NeffIsBack’s thoughts as well. |
|
Thank you for your interest.
That said, I appreciate your opinion, and we can wait to hear NeffIsBack. |
|
Thanks @pol4ir , I’d been looking for this for a while. I used it in a security assessment and it worked like a charm. I also agree that separating them into different modules would be the better approach |
|
Pretty much everything @Mauriceter said. This should aim at querying the UBR via winreg once and then display all unpatched vulnerabilities. Then you can just scan a large subnet and every CVE (that actually has an impact on pentesting not just random boring ones) is displayed. E.g. we could also add drop-the-mic (although pretty old) and other interesting vulns. My thoughts on the bullet points:
cve = {
"cve1":{"patches":{...}, "message":"vuln to cve1!", "signing_msg": "SMB-Signing enforced, try cross-protocol relaying to e.g. WinRM"},
"cve2":{"patches":{...}, "message":"..."},
"cve3":...
}
...
for cvetocheck in cve.keys():
if vulnerable(...,cve[cvetocheck]["patches"]):
if conn.signing and hasattr(cve, signing_msg):
print(f"{cve} - {alias} - {signing_msg}")
else:
print(f"{cve} - {alias} - {message}") |
|
A few additions/notes:
|



Description
This PR introduces a new NetExec module designed to detect systems vulnerable to the NTLM LDAP Authentication Bypass (CVE‑2025‑54918). The module performs reconnaissance via Remote Registry to identify Domain Controllers that may allow NTLM authentication to be reflected to LDAP/LDAPS even when signing and channel binding are enabled.
Since this CVE relies on NTLM reflection, I would recommend grouping all NTLM reflection reconnaissance logic into a single module to avoid creating multiple modules.
Type of change
Screenshots (if appropriate):
Checklist:
poetry run python -m ruff check . --preview, use--fixto automatically fix what it can)tests/e2e_commands.txtfile if necessary (new modules or features are required to be added to the e2e tests)