Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
opnsense-lockout-factory-ip — OPNsense 26.7.6 - High - Remote - Privilege leftover - factory lockout IP | Kitploit
Tools/GitHubGitHub/abraxas/opnsense-lockout-factory-ip
Vulnerability AnalysisExploitationSecurity VirtualizationNetwork SecurityPenetration TestingPapers & ResearchLabs & Practice
GitHubabraxas/opnsense-lockout-factory-ip

opnsense-lockout-factory-ip

OPNsense 26.7.6 - High - Remote - Privilege leftover - factory lockout IP

View Repository
85 days agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Abraxas Labs - opnsense-lockout-factory-ip

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  opnsense-lockout-factory-ip

opnsense-lockout-factory-ip

Class: Privilege leftover Reach: Remote

OPNsense core 26.7.6 (a842fe48) - opnsense.org

Unauth WebGUI login still drives lockout_handler from a factory LOG_AUTH line that has no socket IP. GHSA-2v2x closed CRLF split and switched lockout IP pick to the last token so authgui.inc's trailing from REMOTE_ADDR wins. AuthenticationFactory::authenticate() still syslog()s the raw username with no address suffix. A username that matches a lockout False phrase plus an IPv4 token is the last (only) address on that line. After default 5 spaced attempts: pfctl -t sshlockout -T add and pfctl -k. Default: lockout on, LAN GUI.

IDno CVE yet
ClassPrivilege leftover
ReachRemote (unauthenticated WebGUI login POST)
CWECWE-117 / CWE-863
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProductOPNsense core (Deciso B.V.)
AffectedOPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) AuthenticationFactory / lockout_handler
AuthUnauth. CSRF cookie + token from GET /.
LicenseGNU Affero GPL v3.0
Lab127.0.0.1 only

I pinned tag 26.7.6. The lab is the pinned lockout_handler plus PATH stub pfctl, loopback identity 127.0.0.1:18800. This is not CRLF. One PHP syslog record stays one handler line. Last-IP was the right hardening for the authgui template and the wrong hardening for the factory template.

What an attacker can do

MethodSinkPrivilege
Unauth factory LOG_AUTH username with a lockout False phrase plus an IPv4 token (6 spaced lines)pin lockout_handler -> stub pfctl -t sshlockout -T add and pfctl -kIntegrity (lab-proven): table sshlockout plus state-kill argv. Lab: planted=203.0.113.77.
same plant, live pffilter.lib.inc:293-314 from <sshlockout> to (self) ports 22/GUIAvailability (inferred): drop new TCP 22/GUI from the planted host; pfctl -k tears down existing states from that IP.
same username with only the IPv4 (no False phrase)lockout_handlerNegative (lab-proven): no table add. negative-ip-only=no.
authgui line with trailing from REMOTE_ADDRlast-IP parserIntegrity of own IP (lab-proven): authgui last token stays 198.51.100.10.
Failed-login bodynoneRecon (lab-proven closed): existing "Wrong username or password." No user enum.

Lab-proven vs inferred: factory plant, username-only negative, and authgui last-IP are lab SUCCESS. Live pf blocking and live session kill are inferred. Pin lockout_handler copied unchanged; syslog-ng and WebGUI POST are stubbed.

Requires: Unauth WebGUI login POST. CSRF cookie + token from GET /. Lockout on (system.no_sshlockout unset). Default install.

Adjacent surface that stays closed

SurfaceLab
Unauth session / root / config.xml writeclosed
authgui line planting a foreign IPlast token is REMOTE_ADDR (authgui-last-ip=198.51.100.10)
CRLF extra readline()GHSA-2v2x rewrite; one record stays one line
Empty-password loginauthgui.inc requires non-empty password
CVE-2026-44195 success-keyword reset on the authgui linefailure rules first
26.7.6 Omar Habra pfctl -k str(ip) TypeErroralready on this pin
Planted IP as DNS/gateway destinationrules are from <sshlockout> to (self) ports 22/GUI only

No login skip. No RCE. No rewrite of config.xml. Does not mint a session.

Lab

cd lab
./run.sh

Loopback 127.0.0.1:18800. Compose project opnsense-lockout-factory-ip. Image tag opnsense-lockout-factory-ip:26.7.6. Witness OPNSENSE-LOCKOUT-FACTORY-IP-WITNESS. Last line:

SUCCESS opnsense-lockout-factory-ip planted=203.0.113.77 table=sshlockout negative-ip-only=no authgui-last-ip=198.51.100.10 OPNSENSE-LOCKOUT-FACTORY-IP-WITNESS

The fix

Append the socket IP to the factory syslog(LOG_AUTH) template, same trailing from REMOTE_ADDR as authgui.inc. Or ignore lockout IPs that did not come from the handler's own peer. Do not treat last-token as a substitute for "the client address."

References

  • github.com/opnsense/core a842fe48c21288d11a422cb944678e8eb308becf
  • AuthenticationFactory.php
  • lockout_handler
  • Named walk (not this leftover): GHSA-2v2x CRLF first-IP plant
  • CWE-117 / CWE-863
Download Tool