Security research tool
you've been INCLUDED.
A modular File Inclusion (LFI/RFI) scanner built around modern exploitation techniques that older tools like LFISuite, liffy, and kadimus never picked up — filter chains, two-phase log/session poisoning, and a full set of filter bypass variants.
A php://filter chain generator builds a PHP payload
byte-by-byte from an empty stream, giving RCE with no file upload
at all — a technique most existing LFI tools don't implement.
One INCLUDE marker in the URL, match/filter flags
(-mc/-fc/-ms/-fs/-mr/-fr),
and profiles (read/rce/all)
for anyone used to ffuf or nmap.
Results are deduplicated to the first confirmed hit per file, and traversal depth is auto-detected instead of brute-forced — measured 94% fewer requests for the same result.
Point it at a target with --lhost/--lport
and it stands up a minimal HTTP server on the spot to serve the
web shell, no separate infrastructure required.
# clone, then let the script figure out pipx vs a local venv
git clone https://github.com/JJuly02/INCLUDED.git
cd INCLUDED
./install.sh
included --help
No git on the box (e.g. a locked-down pwnbox)? Grab the
archive directly instead:
wget https://github.com/JJuly02/INCLUDED/archive/refs/heads/main.tar.gz
tar xzf main.tar.gz
cd INCLUDED-main
./install.sh
The INCLUDE marker in the URL marks the injection point,
the same way FUZZ works in ffuf.
# basic scan with all modules
included -w "http://host/index.php?language=INCLUDE"
# target a specific file, verbose output
included -w "http://host/?p=INCLUDE" -f /etc/passwd -v
# RCE techniques only, with a command and session
# (a PHPSESSID cookie also enables session poisoning)
included -w "http://host/?p=INCLUDE" --profile rce --cmd "id" -b PHPSESSID=abc123
# fuzz, filter out noise, write results to JSON
included -w "http://host/img.php?p=INCLUDE" -fs 0 -mc 200 -o out.json -of json
# use an external wordlist, e.g. SecLists, instead of the bundled defaults
included -w "http://host/?view=INCLUDE" -W /usr/share/SecLists/Fuzzing/LFI/LFI-Jhaddix.txt -fs 1935
Output stays quiet by default — confirmed findings and a summary only. Each finding gets one isolated re-fetch after the main scan to confirm it reproduces and to capture full evidence.
| Module | Group | What it does |
|---|---|---|
traversal |
read | ../ plus filter bypasses (....//, ..././, prefixes, encoding); traversal depth is auto-detected |
filter_read |
read | php://filter — dumps source files as base64 |
data |
rce | data:// web shell (requires allow_url_include) |
input |
rce | php://input — web shell in the POST body |
expect |
rce | expect:// — direct command execution |
zip_phar |
rce | zip:// / phar:// from an uploaded archive (--file) |
log_poison |
rce | Two-phase: poison access.log or a PHP session, then include it |
filter_chain_rce |
rce |
php://filter chain — builds a PHP web shell in-flight with no
file upload at all, adapted from
Synacktiv's technique.
Requires glibc iconv on the target (typical on Linux).
|
rfi |
rce |
Remote File Inclusion; with --lhost/--lport it auto-hosts
the web shell over HTTP for the target to fetch. ftp:// and UNC
payloads are generated too, but need your own FTP/SMB server.
|
Profiles group modules for quick selection: --profile read|rce|all.