User-Agent header Web access log Triage: medium

l9explore and l9scan in Your Access Log: LeakIX Scanning for Leaks

Published

LeakIX's open-source scanners, which probe internet-facing servers for exposed files, misconfigurations and vulnerable services and index what they find on the LeakIX search engine.

What it looks like

l9explore/1.2.2
Mozilla/5.0 (l9scan/2.0.0000000000000000; +https://leakix.net)
l9tcpid/v1.1.0

The User-Agent header as an access log records it — in nginx's and Apache's combined format, the last quoted field.

On our own server, the 30 days to 1 November 2026

1,499

requests · about 50 a day

10

source addresses

Most requested pathsRequests
/41
/.git/config22
/.env18
/config.json18
/.vscode/sftp.json18
/files/.git/config17
/app/.git/config17
/cms/.git/config17

LogTriage's production API server (Hetzner, Germany): port 22 open to the internet, key-only since 6 October 2026 (password and keyboard-interactive authentication off); nginx in front of the API on ports 80 and 443. Requests nobody asked for (API traffic and our own monitoring left out); paths as requested, query strings dropped and identifiers redacted; counted weekly from the nginx access log. Linked paths are scanner probes explained on their own pages. More in the monthly attack report, and you can check the addresses in your own log against free blocklists.

Sources on who sends it

The operator's or the researchers' own pages; what this page says about the sender comes from them.

What it is

l9explore, l9scan and l9tcpid are the scanners of LeakIX, a search engine for exposed services and data leaks. They are open source: the l9explore README describes it as “a plugin based tool doing deep exploration on a wide range of protocols” that “can be used to expose leaks, misconfigurations and vulnerabilities on any IP network”, the last layer of LeakIX’s l9 tool suite. Its plugins look for exposed .env files, Laravel debug pages, phpinfo output and Apache status pages on web servers, and for open MySQL, MongoDB, Elasticsearch, Redis, CouchDB and Kafka services.

On our own server, LeakIX’s scanners sent well over a thousand requests in the last 30 days from about a dozen addresses (counts above). After /, the paths they asked for most were /.git/config, /files/.git/config and /.env — exactly the leaks the tool is built to find.

Who sends it

LeakIX, from its own scanning infrastructure. The l9scan user agent names https://leakix.net and carries a long hexadecimal suffix that varied between requests on our server; l9explore and l9tcpid send their name and version only. Because the tools are open source, anyone can run them, so a request with these headers is most likely, but not certainly, from LeakIX itself.

Is it a threat?

The scan is reconnaissance (MITRE ATT&CK T1595.002, vulnerability scanning) by a service whose business is finding leaks. It becomes serious when a probe succeeds: a .git/config or .env that returns 200 has exposed source code or secrets, and LeakIX’s search site indexes the leaks its scans find. Plenty of attackers ask for the same files without saying who they are, so a successful LeakIX probe means the file was exposed to everyone.

How to handle it

  1. Find LeakIX’s requests and check their status codes; anything other than 404 or 403 for a .git or .env path is a leak to fix now.
  2. Move secrets and repositories out of the web root, deny dot-files in the web server, and rotate any secret that was served.
  3. If you want fewer scans, refuse the user agents, or use LeakIX’s take-down and blacklist process ([email protected]) to exclude your networks.

Find the requests and the ones that were answered:

grep -Ei 'l9explore|l9scan|l9tcpid|leakix\.net' /var/log/nginx/access.log | awk '{print $9, $7}' | sort | uniq -c | sort -rn | head

Deny dot-files for everyone, and refuse LeakIX’s scanners by name (server block):

location ~ /\.(?!well-known/) {
    deny all;
}
if ($http_user_agent ~* "(l9explore|l9scan|l9tcpid)/") {
    return 403;
}

The free log analyzer flags any secret-file probe in an access log that got a 200 back.

Probes it sends

Other user agents in the same logs

Detect it

MITRE ATT&CK: T1595.002

Frequently Asked Questions

What is l9explore?
It is one of LeakIX's open-source scanning tools. Its README calls it a plugin based tool doing deep exploration on a wide range of protocols, which can be used to expose leaks, misconfigurations and vulnerabilities on any IP network. Its plugins check web servers for .env files, debug pages and phpinfo, and databases such as Elasticsearch, MongoDB and Redis for open access.
What does the long hex string in an l9scan user agent mean?
LeakIX does not document it on the pages we checked. On our server the hexadecimal suffix after l9scan/2.0. varied between requests, so do not write blocking rules that match the whole string; match the l9scan, l9explore and l9tcpid names, or the leakix.net address in the header, instead.
How do I stop LeakIX from scanning my server?
LeakIX's site lists a take-down and blacklist process, with the address [email protected], for removing results and excluding networks. You can also refuse its user agents in nginx. Neither protects an exposed file from the many scanners that do not identify themselves, so fixing the exposure matters more than the block.
Is a LeakIX scan an attack?
It is reconnaissance by a search engine for leaks, not exploitation. The concern is what it finds: an exposed .git directory or .env file that answers its request is the same exposure an attacker would use, and LeakIX's search site indexes the services and leaks its scans find, so treat any 200 response to its probes as an incident.

See which scanners are hitting your server

Drop an nginx or Apache access log into the free browser analyzer: scanners and probes are grouped by source with the evidence lines, any probe that got a 200 back is flagged, and known user agents and probes link back here. Nothing is uploaded.

Investigating something right now? LogTriage checks every address in the file against threat intelligence and writes the incident report: 10 analyses a month free. The incident pack adds the in-depth AI analysis and files up to 100 MB: 25 analyses for $19, one payment, no subscription. Pricing