Releases: MarkTauber/evalsploit
Releases · MarkTauber/evalsploit
Evalsploit [3.1.0]
[v3.1.0] - 2026-03-02
Changelog
Notable changes compared to the previous codebase (evalsploit, 3.0.0).
[3.1.0]
New commands
- sql - Interactive SQL console via PDO. Supports MySQL and PostgreSQL in one command (
sql user:pass@host[:port][/db]). Verifies connection before entering the REPL.USE dbnameis handled client-side by rebuilding the PDO DSN - no extra HTTP request. DSN auto-saved tosettings.inion successful connect. - grep - Recursive file content search using
RecursiveIteratorIterator. Accepts PHP regex with optional-iflag. No exec required. - find - Recursive filename search using
RecursiveIteratorIterator. PHP regex, case-insensitive by default. No exec required.
New plugin
- clearlog - Removes matching lines from server log files. Three modes:
clearlog detect- scans common log paths viaglob(), shows[rw]/[r-]write status for each file.clearlog all [pattern]- cleans all writable logs; skips read-only files; requires confirmation.clearlog <path> [pattern]- cleans a single file.- Default pattern: URL path from session config (e.g.
/shell.php).
Chunked download
- Added
dl_chunked.phpsnippet: usesfseek/freadto transfer files in 1 MB blocks per request. PHPmemory_limitno longer limits download size. - Live progress bar:
45.0 MB / 512.0 MB (8%), updated per chunk. - Switch with
set download chunked/set download dl(default). - Detection is automatic:
dl_mod.pyuses chunked logic whenever the loaded snippet contains$_OFFSET.
PHP 8 improvements
- mutate - Now auto-detects PHP version before generating the replacement backdoor. PHP ≥ 8: uses
generate_php8_backdoor()(eval-based, nocreate_function). PHP < 8: usesgenerate_polymorphic_backdoor()(create_function via variable, obfuscated). Version and mutator type printed before rewriting the file. - gen / payload menu - The
create_functionbypass variant is now labeled "Function bypass (PHP < 8 only)" to prevent accidentally deploying it on PHP 8 targets.
Bug fixes
- rename.php - Previously produced no output; the Python module always printed "Renamed" regardless of success. Snippet now outputs
OKon success andERRon failure;ren_mod.pychecks the result. - stat.php -
stat()return value was not checked. On a missing or unreadable path, the code crashed trying to access$stat['size']onfalse. Added@stat()with a=== falseguard and anERR: cannot statmessage. Also fixed alog(0)division-by-zero on zero-size files. - sql_query_php.php - With
PDO::ERRMODE_EXCEPTION,query()throws on failure and never returnsfalse. Theif (!$_stmt)branch was unreachable dead code. Removed; the result-display path now runs unconditionally. - mf.php / create -
createreported "File created" even when the file already existed (the snippet silently did nothing). Snippet now outputsEXISTSwhen the file is present;mkf_mod.pyreports "File already exists".
Evalsploit [3.0.0]
[v3.0.0] - 2026-03-01
Changelog
Notable changes compared to the previous codebase (evalsploit 2.7.x).
[3.0.0]
Architecture and install
- Package layout – Single script and flat
modules/replaced by installable packageevalsploit(pyproject.toml,pip install -e .). Entry point:evalsploitorpython -m evalsploit. - Startup menu – On start: choose Payload / Session / URL / Last connection / Proxies / Exit. No more single URL + proxy prompts; session can be restored or new URL entered.
- Data layout – Settings, sessions, and useragents live under
data/(e.g.data/settings.ini,data/sessions/,data/useragents)..gitignoreadded for local data and build/IDE artifacts.
Sessions and config
- Sessions – Save current connection (URL, Z, V, send_mode) with
save <name>; list withsessions; switch withconnect <name>or by number at startup. Replaces “leave URL empty to restore last” with explicit named sessions. - Config – Single config object (dataclass) with load/save for global settings and per-session overrides. No config file read on every send.
- set – Unified
set <module> <value>andset <module> helpfor run, ls, cat, send, silent, reverse, confirm, proxy. Messages in English.
Transport and payload
- Send modes – Same modes (bypass, classic, simple); Z and V taken from config (no hardcoded
Zin classic). On connect, client tries each mode and stores the working one (unless silent). - Polymorphic payloads – Backdoor generation with multiple shapes (if/do/while/for), obfuscated create_function, str_replace/strtr/preg_replace (including XOR). PHP 8 variant without create_function.
genprints payloads for current send mode and Z, V. - Mutation – Replaces the backdoor line in the infected file on the server with a new polymorphic payload and updates local Z, V. No separate “reset”;
Proxy
- Proxy list – Proxies loaded from
data/proxies.txt(onehost:portper line). Validation via HTTP request; list of validated indices. One proxy per session (random or by index). - proxy_switch – Change current proxy without leaving the shell: no args (new random), N (proxy #), or
random.
Commands and UX
- Exploit – Single
exploitcommand: no args → menu by ID (1–N fromEXPLOIT_DIRS, Enter = default 7.3–8.1, 0 = back); with arg (e.g.exploit 7.0-7.4) use that bypass directly. Replaces four separate exploit functions and fixed prompt. - Paths – Two-path commands (cp, ren/mv, upload with remote path, download to path) use
:as separator; paths may contain spaces. - Confirm – Optional confirmation for dangerous actions (rm/del, upload, mutate, edit);
set confirm 0/1. - try / detect – Check which run variants (exec, shell_exec, etc.) work on the server.
- help – In-session help for commands; no banner dump.
Plugins and snippets
- Plugins – Custom commands via Python modules in
evalsploit/plugins/(registry, no core edits). - Snippets – Command behaviour (rm, dl, upload, rename, stat, touch, mkdir, create, copy) configurable via
evalsploit/modules/snippets/snippets.iniandset <cmd> <style>.
Removed / simplified
- Language – CLI and built-in messages in English; README in EN, RU, ZH.
- reset – Removed; use new session or change Z, V via mutate/gen and config.
- Banner – No long ASCII banner at start; minimal startup menu.
Technical
- Python – Requires Python 3.10+.
- Dependencies –
requests; no configparser in hot path. - Send – Centralized in
evalsploit.transport.send; marker-based output parsing (ignore everything before marker).
Evalsploit [2.6.0]
[v2.6.1] - 2023-08-15