Path traversal lfi rfi testing
Skill xAmirHamza77/PenKit51/skills/path-traversal-lfi-rfi-testing
Path traversal and file inclusion testing for local/remote file access and code executionFrom its SKILL.md
npx -y skills add xAmirHamza77/PenKit51 --skill path-traversal-lfi-rfi-testingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
16.2 KB, ~3.8k tokens by cl100k_base, as published. Nobody here has run it
Path Traversal Lfi Rfi Testing
penkit51 AI — professional penetration testing skill pack. Authorized testing only.
Deep Exploitation Guide
Path Traversal / LFI / RFI
Improper file path handling and dynamic inclusion enable sensitive file disclosure, config/source leakage, SSRF pivots, and code execution. Treat all user-influenced paths, names, and schemes as untrusted; normalize and bind them to an allowlist or eliminate user control entirely.
Attack Surface
Path Traversal
- Read files outside intended roots via
../, encoding, normalization gaps
Local File Inclusion (LFI)
- Include server-side files into interpreters/templates
Remote File Inclusion (RFI)
- Include remote resources (HTTP/FTP/wrappers) for code execution
Archive Extraction
- Zip Slip: write outside target directory upon unzip/untar
Normalization Mismatches
- Server/proxy differences (nginx alias/root, upstream decoders)
- OS-specific paths: Windows separators, device names, UNC, NT paths, alternate data streams
High-Value Targets
Unix
/etc/passwd,/etc/hosts, application.env/config.yaml- SSH keys, cloud creds, service configs/logs
Windows
C:\Windows\win.ini, IIS/web.config, programdata configs, application logs
Application
- Source code templates and server-side includes
- Secrets in env dumps, framework caches
Reconnaissance
Surface Map
- HTTP params:
file,path,template,include,page,view,download,export,report,log,dir,theme,lang - Upload and conversion pipelines: image/PDF renderers, thumbnailers, office converters
- Archive extract endpoints and background jobs; imports with ZIP/TAR/GZ/7z
- Server-side template rendering (PHP/Smarty/Twig/Blade), email templates, CMS themes/plugins
- Reverse proxies and static file servers (nginx, CDN) in front of app handlers
Capability Probes
- Path traversal baseline:
../../etc/hostsandC:\Windows\win.ini - Encodings:
%2e%2e%2f,%252e%252e%252f,..%2f,..%5c, mixed UTF-8 (%c0%2e), Unicode dots and slashes - Normalization tests:
..../,..\\,././, trailing dot/double dot segments; repeated decoding - Absolute path acceptance:
/etc/passwd,C:\Windows\System32\drivers\etc\hosts - Server mismatch:
/static/..;/../etc/passwd("..;"), encoded slashes (%2F), double-decoding via upstream
Detection Channels
Direct
- Response body discloses file content (text, binary, base64)
- Error pages echo real paths
Error-Based
- Exception messages expose canonicalized paths or
include()warnings with real filesystem locations
OAST
- RFI/LFI with wrappers that trigger outbound fetches (HTTP/DNS) to confirm inclusion/execution
Side Effects
- Archive extraction writes files unexpectedly outside target
- Verify with directory listings or follow-up reads
Key Vulnerabilities
Path Traversal Bypasses
Encodings
- Single/double URL-encoding, mixed case, overlong UTF-8, UTF-16, path normalization oddities
Mixed Separators
/and\\on Windows;//and\\\\collapse differences across frameworks
Dot Tricks
....//(double dot folding), trailing dots (Windows), trailing slashes, appended valid extension
Absolute Path Injection
- Bypass joins by supplying a rooted path
Alias/Root Mismatch
- nginx alias without trailing slash with nested location allows
../to escape - Try
/static/../etc/passwdand ";" variants (..;)
Upstream vs Backend Decoding
- Proxies/CDNs decoding
%2fdifferently; test double-decoding and encoded dots
LFI Wrappers and Techniques
PHP Wrappers
php://filter/convert.base64-encode/resource=index.php(read source)zip://archive.zip#file.txtdata://text/plain;base64expect://(if enabled)
Log/Session Poisoning
- Inject PHP/templating payloads into access/error logs or session files then include them
Upload Temp Names
- Include temporary upload files before relocation; race with scanners
Proc and Caches
/proc/self/environand framework-specific caches for readable secrets
Legacy Tricks
- Null-byte (
%00) truncation in older stacks; path length truncation
Template Engines
- PHP include/require; Smarty/Twig/Blade with dynamic template names
- Java/JSP/FreeMarker/Velocity; Node.js ejs/handlebars/pug engines
- Seek dynamic template resolution from user input (theme/lang/template)
RFI Conditions
Requirements
- Remote includes (
allow_url_include/allow_url_fopenin PHP) - Custom fetchers that eval/execute retrieved content
- SSRF-to-exec bridges
Protocol Handlers
- http, https, ftp; language-specific stream handlers
Exploitation
- Host a minimal payload that proves code execution
- Prefer OAST beacons or deterministic output over heavy shells
- Chain with upload or log poisoning when remote includes are disabled
Archive Extraction (Zip Slip)
- Files within archives containing
../or absolute paths escape target extract directory - Test multiple formats: zip/tar/tgz/7z
- Verify symlink handling and path canonicalization prior to write
- Impact: overwrite config/templates or drop webshells into served directories
Testing Methodology
- Inventory file operations - Downloads, previews, templates, logs, exports/imports, report engines, uploads, archive extractors
- Identify input joins - Path joins (base + user), include/require/template loads, resource fetchers, archive extract destinations
- Probe normalization - Separators, encodings, double-decodes, case, trailing dots/slashes
- Compare behaviors - Web server vs application behavior
- Escalate - From disclosure (read) to influence (write/extract/include), then to execution (wrapper/engine chains)
Validation
- Show a minimal traversal read proving out-of-root access (e.g.,
/etc/hosts) with a same-endpoint in-root control - For LFI, demonstrate inclusion of a benign local file or harmless wrapper output (
php://filterbase64 of index.php) - For RFI, prove remote fetch by OAST or controlled output; avoid destructive payloads
- For Zip Slip, create an archive with
../entries and show write outside target (e.g., marker file read back) - Provide before/after file paths, exact requests, and content hashes/lengths for reproducibility
False Positives
- In-app virtual paths that do not map to filesystem; content comes from safe stores (DB/object storage)
- Canonicalized paths constrained to an allowlist/root after normalization
- Wrappers disabled and includes using constant templates only
- Archive extractors that sanitize paths and enforce destination directories
Impact
- Sensitive configuration/source disclosure → credential and key compromise
- Code execution via inclusion of attacker-controlled content or overwritten templates
- Persistence via dropped files in served directories; lateral movement via revealed secrets
- Supply-chain impact when report/template engines execute attacker-influenced files
Pro Tips
- Compare content-length/ETag when content is masked; read small canonical files (hosts) to avoid noise
- Test proxy/CDN and app separately; decoding/normalization order differs, especially for
%2fand%2eencodings - For LFI, prefer
php://filterbase64 probes over destructive payloads; enumerate readable logs and sessions - Validate extraction code with synthetic archives; include symlinks and deep
../chains - Use minimal PoCs and hard evidence (hashes, paths). Avoid noisy DoS against filesystems
Summary
Eliminate user-controlled paths where possible. Otherwise, resolve to canonical paths and enforce allowlists, forbid remote schemes, and lock down interpreters and extractors. Normalize consistently at the boundary closest to IO.
Platform Methodology
Path Traversal Lfi Rfi Testing
penkit51 AI — professional penetration testing skill pack. Authorized testing only.
Deep Exploitation Guide
Path Traversal / LFI / RFI
Improper file path handling and dynamic inclusion enable sensitive file disclosure, config/source leakage, SSRF pivots, and code execution. Treat all user-influenced paths, names, and schemes as untrusted; normalize and bind them to an allowlist or eliminate user control entirely.
Attack Surface
Path Traversal
- Read files outside intended roots via
../, encoding, normalization gaps
Local File Inclusion (LFI)
- Include server-side files into interpreters/templates
Remote File Inclusion (RFI)
- Include remote resources (HTTP/FTP/wrappers) for code execution
Archive Extraction
- Zip Slip: write outside target directory upon unzip/untar
Normalization Mismatches
- Server/proxy differences (nginx alias/root, upstream decoders)
- OS-specific paths: Windows separators, device names, UNC, NT paths, alternate data streams
High-Value Targets
Unix
/etc/passwd,/etc/hosts, application.env/config.yaml- SSH keys, cloud creds, service configs/logs
Windows
C:\Windows\win.ini, IIS/web.config, programdata configs, application logs
Application
- Source code templates and server-side includes
- Secrets in env dumps, framework caches
Reconnaissance
Surface Map
- HTTP params:
file,path,template,include,page,view,download,export,report,log,dir,theme,lang - Upload and conversion pipelines: image/PDF renderers, thumbnailers, office converters
- Archive extract endpoints and background jobs; imports with ZIP/TAR/GZ/7z
- Server-side template rendering (PHP/Smarty/Twig/Blade), email templates, CMS themes/plugins
- Reverse proxies and static file servers (nginx, CDN) in front of app handlers
Capability Probes
- Path traversal baseline:
../../etc/hostsandC:\Windows\win.ini - Encodings:
%2e%2e%2f,%252e%252e%252f,..%2f,..%5c, mixed UTF-8 (%c0%2e), Unicode dots and slashes - Normalization tests:
..../,..\\,././, trailing dot/double dot segments; repeated decoding - Absolute path acceptance:
/etc/passwd,C:\Windows\System32\drivers\etc\hosts - Server mismatch:
/static/..;/../etc/passwd("..;"), encoded slashes (%2F), double-decoding via upstream
Detection Channels
Direct
- Response body discloses file content (text, binary, base64)
- Error pages echo real paths
Error-Based
- Exception messages expose canonicalized paths or
include()warnings with real filesystem locations
OAST
- RFI/LFI with wrappers that trigger outbound fetches (HTTP/DNS) to confirm inclusion/execution
Side Effects
- Archive extraction writes files unexpectedly outside target
- Verify with directory listings or follow-up reads
Key Vulnerabilities
Path Traversal Bypasses
Encodings
- Single/double URL-encoding, mixed case, overlong UTF-8, UTF-16, path normalization oddities
Mixed Separators
/and\\on Windows;//and\\\\collapse differences across frameworks
Dot Tricks
....//(double dot folding), trailing dots (Windows), trailing slashes, appended valid extension
Absolute Path Injection
- Bypass joins by supplying a rooted path
Alias/Root Mismatch
- nginx alias without trailing slash with nested location allows
../to escape - Try
/static/../etc/passwdand ";" variants (..;)
Upstream vs Backend Decoding
- Proxies/CDNs decoding
%2fdifferently; test double-decoding and encoded dots
LFI Wrappers and Techniques
PHP Wrappers
php://filter/convert.base64-encode/resource=index.php(read source)zip://archive.zip#file.txtdata://text/plain;base64expect://(if enabled)
Log/Session Poisoning
- Inject PHP/templating payloads into access/error logs or session files then include them
Upload Temp Names
- Include temporary upload files before relocation; race with scanners
Proc and Caches
/proc/self/environand framework-specific caches for readable secrets
Legacy Tricks
- Null-byte (
%00) truncation in older stacks; path length truncation
Template Engines
- PHP include/require; Smarty/Twig/Blade with dynamic template names
- Java/JSP/FreeMarker/Velocity; Node.js ejs/handlebars/pug engines
- Seek dynamic template resolution from user input (theme/lang/template)
RFI Conditions
Requirements
- Remote includes (
allow_url_include/allow_url_fopenin PHP) - Custom fetchers that eval/execute retrieved content
- SSRF-to-exec bridges
Protocol Handlers
- http, https, ftp; language-specific stream handlers
Exploitation
- Host a minimal payload that proves code execution
- Prefer OAST beacons or deterministic output over heavy shells
- Chain with upload or log poisoning when remote includes are disabled
Archive Extraction (Zip Slip)
- Files within archives containing
../or absolute paths escape target extract directory - Test multiple formats: zip/tar/tgz/7z
- Verify symlink handling and path canonicalization prior to write
- Impact: overwrite config/templates or drop webshells into served directories
Testing Methodology
- Inventory file operations - Downloads, previews, templates, logs, exports/imports, report engines, uploads, archive extractors
- Identify input joins - Path joins (base + user), include/require/template loads, resource fetchers, archive extract destinations
- Probe normalization - Separators, encodings, double-decodes, case, trailing dots/slashes
- Compare behaviors - Web server vs application behavior
- Escalate - From disclosure (read) to influence (write/extract/include), then to execution (wrapper/engine chains)
Validation
- Show a minimal traversal read proving out-of-root access (e.g.,
/etc/hosts) with a same-endpoint in-root control - For LFI, demonstrate inclusion of a benign local file or harmless wrapper output (
php://filterbase64 of index.php) - For RFI, prove remote fetch by OAST or controlled output; avoid destructive payloads
- For Zip Slip, create an archive with
../entries and show write outside target (e.g., marker file read back) - Provide before/after file paths, exact requests, and content hashes/lengths for reproducibility
False Positives
- In-app virtual paths that do not map to filesystem; content comes from safe stores (DB/object storage)
- Canonicalized paths constrained to an allowlist/root after normalization
- Wrappers disabled and includes using constant templates only
- Archive extractors that sanitize paths and enforce destination directories
Impact
- Sensitive configuration/source disclosure → credential and key compromise
- Code execution via inclusion of attacker-controlled content or overwritten templates
- Persistence via dropped files in served directories; lateral movement via revealed secrets
- Supply-chain impact when report/template engines execute attacker-influenced files
Pro Tips
- Compare content-length/ETag when content is masked; read small canonical files (hosts) to avoid noise
- Test proxy/CDN and app separately; decoding/normalization order differs, especially for
%2fand%2eencodings - For LFI, prefer
php://filterbase64 probes over destructive payloads; enumerate readable logs and sessions - Validate extraction code with synthetic archives; include symlinks and deep
../chains - Use minimal PoCs and hard evidence (hashes, paths). Avoid noisy DoS against filesystems
Summary
Eliminate user-controlled paths where possible. Otherwise, resolve to canonical paths and enforce allowlists, forbid remote schemes, and lock down interpreters and extractors. Normalize consistently at the boundary closest to IO.
Validation & Reporting
- Confirm every finding with reproducible PoC before reporting
- Document: severity (CVSS), affected asset, steps, evidence, remediation
- Use
record_vulnerabilitywhen running inside the penkit51 platform - Chain low-severity findings into higher-impact attack paths
- Never report without evidence — distinguish hypothesis from confirmed vuln
Validation & Reporting
- Confirm every finding with reproducible PoC before reporting
- Document: severity (CVSS), affected asset, steps, evidence, remediation
- Use
record_vulnerabilitywhen running inside the penkit51 platform - Chain low-severity findings into higher-impact attack paths
- Never report without evidence — distinguish hypothesis from confirmed vuln
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.