COMMIX(1)

πŸ“¦ version 4.1, in ubuntu stonking

πŸ’– NAME πŸ’– β€” commix(1)

bestie, welcome to the commix(1) page from the User Commands section. commix β€” Automated All-in-One OS Command Injection Exploitation Tool. periodt. πŸ’…


🌈 SYNOPSIS 🌈

commix [OPTIONS]

πŸ’… DESCRIPTION πŸ’…

okay so commix (aka COMmand MIXer) is an open-source penetration testing tool that automates the detection and exploitation of OS command injection vulnerabilities in web applications. it's giving automation queen, no cap. πŸ‘‘

It supports multiple injection techniques, HTTP request formats, authentication methods, session management, and payload tampering. Optional integration with the Metasploit Framework is available via the --msf-path option. iykyk 😌

⚠️ commix is intended for security researchers, penetration testers, and administrators performing authorized security assessments only. bestie, do not be out here testing random websites, that is NOT the vibe. 🚨

πŸŽ€ OPTIONS πŸŽ€

✨ General ✨

  • -h, --help β€” shows help and exits. the classic β€œhelp me help you” button. πŸ‘‹πŸ’–
  • -v VERBOSE β€” verbosity level (0-4, Default: 0). Level 1 enables basic debug info; level 2 shows all HTTP requests; level 3 adds HTTP response headers; level 4 shows full request and response bodies. the way this escalates... πŸ’€
  • --install β€” installs commix system-wide, making it accessible from any location. Requires administrator privileges. so, sudo energy. πŸ”
  • --version β€” shows the version number and exits. simple, iconic, done. ⭐
  • --update β€” checks for updates (applies them if there are any) and exits. Requires installation via git clone from the official repository. git bestie behaviour. 🧚
  • --output-dir=OUTDIR β€” sets a custom output directory path. The directory is created if it does not exist. auto-magic folder creation ✨
  • -s SESSION_FILE β€” loads session from a stored (.sqlite) file. save your progress, main character. πŸ’Ύ
  • --flush-session β€” flushes session files for the current target. Forces a fresh scan from scratch. blank slate era. 🧼
  • --ignore-session β€” ignores results stored in the session file without deleting them. Useful for re-validating findings without losing historical data. best of both worlds. πŸ¦‹
  • -t TRAFFIC_FILE β€” logs all HTTP traffic into a textual file. tea, but make it forensic. 🍡
  • --time-limit=SECONDS β€” runs with a time limit in seconds (e.g. 3600). Useful in automated environments such as CI/CD pipelines. automation girlies rise. πŸ€–
  • --batch β€” never asks for user input, uses the default behaviour. Ideal for automation and headless environments. no thoughts, just defaults. πŸ˜Άβ€πŸŒ«οΈ
  • --skip-heuristics β€” skips heuristic detection for code injection. skip! 🦘
  • --codec=CODEC β€” forces codec for character encoding (e.g. 'ascii'). encoding but make it decisive. πŸ”€
  • --charset=CHARSET β€” time-related injection charset (e.g. '0123456789abcdef'). Useful for bypassing input filters or WAFs that block certain characters. sneaky link πŸ‘€
  • --check-internet β€” checks internet connection before assessing the target. bestie we gotta make sure the wifi is wifi-ing. πŸ“Ά
  • --answers=ANSWERS β€” sets predefined answers (e.g. 'quit=N,follow=N'). Enables automation by pre-defining responses to interactive prompts. scripted responses, slay. πŸ’¬

🎯 Target 🎯

  • -u URL, --url=URL β€” target URL. This option is mandatory unless the target is defined through alternative methods such as log files or bulk input files. the main character option. 🌟
  • --url-reload β€” reloads target URL after command execution. Useful when the application state changes after each injection attempt. refresh refresh refresh. πŸ”„
  • -l LOGFILE β€” parses target from HTTP proxy log file. forensics era. πŸ”
  • -m BULKFILE β€” scans multiple targets given in a textual file. not one, not two, but many. πŸ‘―
  • -r REQUESTFILE β€” loads HTTP request from a file. The file must contain the full raw HTTP request as sent to the server. copy-paste realness. πŸ“‹
  • --crawl=CRAWLDEPTH β€” crawls the website starting from the target URL (Default: 1). Higher depths increase scan duration and server load. go deeper, but respectfully. πŸ•·οΈ
  • --crawl-exclude=REGEXP β€” regexp to exclude pages from crawling (e.g. 'logout'). not that page, bestie. 🚫
  • -x SITEMAP_URL β€” parses target(s) from remote sitemap(.xml) file. xml girlies understand. πŸ—ΊοΈ
  • --method=METHOD β€” forces usage of a given HTTP method (e.g. 'PUT'). Useful for testing RESTful APIs or non-standard endpoints. RESTful realness. πŸ› οΈ

πŸ“¨ Request πŸ“¨

  • -d DATA, --data=DATA β€” data string to be sent through POST. When provided, commix automatically switches from GET to POST. glow-up from GET to POST. ✨
  • --host=HOST β€” HTTP Host header. Tested if --level is set to 3. header homework. πŸ“š
  • --referer=REFERER β€” HTTP Referer header. Tested if --level is set to 3. where did you come from, where did you go. πŸ•΅οΈ
  • --user-agent=AGENT β€” HTTP User-Agent header. Tested if --level is set to 3. identity crisis, but on purpose. 🎭
  • --random-agent β€” uses a randomly selected HTTP User-Agent header from a built-in list. Useful for evading basic WAF or CDN filtering. randomize me. 🎲
  • --param-del=PDEL β€” sets character for splitting parameter values (default: '&'). the & stays undefeated. πŸ’ͺ
  • --cookie=COOKIE β€” HTTP Cookie header (e.g. 'key1=value1; key2=value2'). cookie monster behaviour. πŸͺ
  • --cookie-del=CDEL β€” sets character for splitting cookie values (default: ';'). semicolon stans rise. ⁉️
  • --http1.0 β€” forces requests to use the HTTP/1.0 protocol. Useful for legacy servers. old-school cool. πŸ‘΅
  • -H HEADER, --header=HEADER β€” extra header (e.g. 'X-Forwarded-For: 127.0.0.1'). For multiple headers use --headers. header drip. πŸ’…
  • --headers=HEADERS β€” extra headers separated by '\n' (e.g. 'Accept-Language: fr\nETag: 123'). newline girlies know. πŸ“
  • --proxy=PROXY β€” uses an HTTP proxy to connect to the target URL (e.g. 'http://127.0.0.1:8080'). For SOCKS proxies, use proxychains. proxy princess. πŸ‘‘
  • --tor β€” uses the Tor network. Requires the Tor service to be running. anonymity era. πŸ§…
  • --tor-port=PORT β€” sets Tor proxy port (Default: 8118). Use 9050 for the native Tor SOCKS port when combined with proxychains. port check, bestie. πŸ”Œ
  • --auth-url=URL β€” login panel URL. Use with --auth-data to enable automated authentication. login automation slay. πŸ”‘
  • --auth-data=DATA β€” login parameters and data (e.g. 'user=admin&pass=1234'). credentials but make them parameters. πŸ”
  • --auth-type=TYPE β€” HTTP authentication type (Basic, Digest, Bearer). pick your fighter. πŸ₯Š
  • --auth-cred=CRED β€” HTTP authentication credentials (e.g. 'admin:admin'). the classic admin/admin moment. πŸ™ˆ
  • --abort-code=CODE β€” aborts on (problematic) HTTP error code(s) (e.g. '401,403'). stop right there. πŸ›‘
  • --ignore-code=CODE β€” ignores (problematic) HTTP error code(s) (e.g. '404,403'). not today, error code. πŸ™…
  • --force-ssl β€” forces usage of SSL/HTTPS regardless of the URL scheme. secure the bag. πŸ”’
  • --ignore-proxy β€” ignores system default proxy settings. proxy? never heard of her. πŸ’
  • --ignore-redirects β€” ignores redirection attempts (HTTP 3xx). no detours. 🚧
  • --timeout=SECONDS β€” seconds to wait before timeout connection (Default: 30). patience is a virtue. ⏳
  • --retries=RETRIES β€” retries when the connection timeouts (Default: 3). try, try, try again. πŸ”
  • --drop-set-cookie β€” ignores Set-Cookie header from response. Useful for maintaining a stable session throughout the scan. session stability queen. πŸͺ🚫

πŸ” Enumeration πŸ”

  • --all β€” retrieve everything. gimme the whole lore. πŸ“š
  • --current-user β€” retrieves current user name. who dis? πŸ‘€
  • --hostname β€” retrieves current hostname. hello, my name is... 🏷️
  • --is-root β€” checks if the current user has root privileges (Unix/Linux). root check. πŸ‘‘
  • --is-admin β€” checks if the current user has admin privileges (Windows). admin check. πŸͺŸ
  • --sys-info β€” retrieves system information (OS version, kernel, architecture). tell me everything. πŸ’»
  • --users β€” retrieves system users. the whole guest list. πŸ‘₯
  • --passwords β€” retrieves system users password hashes. hash girlies, this one’s for you. πŸ”
  • --privileges β€” retrieves system users privileges. who can do what. 🎟️
  • --ps-version β€” retrieves PowerShell's version number (Windows targets). PowerShell bestie check. ⚑

πŸ“‚ File Access πŸ“‚

  • --file-read=FILEPATH β€” reads a file from the target host (e.g. '/etc/passwd'). file reading era. πŸ“–
  • --file-write=FILEPATH β€” writes a local file to the target host. Use with --file-dest. upload but make it specific. πŸ“€
  • --file-dest=FILEPATH β€” host's absolute filepath to write and/or upload to. destination, not suggestion. πŸ“

🧩 Modules 🧩

  • --shellshock β€” enables the Shellshock (CVE-2014-6271) injection module. Tests CGI scripts that rely on Bash, where injected payloads in HTTP headers (User-Agent, Referer, Cookie) may be executed. vintage vulnerability, still iconic. 🐚πŸ’₯

πŸ’‰ Injection πŸ’‰

  • -p PARAMETER β€” testable parameter(s). Multiple parameters can be specified as a comma-separated list. pick your targets. 🎯
  • --skip=PARAMETER β€” skips testing for given parameter(s). not this one, bestie. ⏭️
  • --suffix=SUFFIX β€” injection payload suffix string. Useful for closing quotes or syntax elements in the injection context. closing the vibe. πŸ”š
  • --prefix=PREFIX β€” injection payload prefix string. Useful for opening quotes or syntax elements in the injection context. opening the vibe. πŸ”›
  • --technique=TECH β€” specify injection technique(s) to use. Available techniques:
    • C β€” Classic - results-based injection; output is reflected directly in the HTTP response. reflected realness. πŸͺž
    • E β€” Dynamic Code Evaluation - targets eval() or similar functions (e.g. assert(), preg_replace() with /e in PHP). eval era. 🧠
    • T β€” Time-based - blind injection via conditional response delays (e.g. sleep, timeout). Useful when output is suppressed. wait for it... ⏱️
    • F β€” File-based - semi-blind injection that writes command output to a file on the server and reads it back. write, read, slay. πŸ“

Multiple techniques can be combined (e.g. --technique='ctf'). combo meal 🍟

  • --skip-technique=TECH β€” specifies injection technique(s) to skip (e.g. --skip-technique='tf'). not those techniques. 🚫
  • --maxlen=MAXLEN β€” sets the max length of output for time-related injection techniques (Default: 10000 chars). character limit, but make it hacker. πŸ”’
  • --delay=SECONDS β€” seconds to delay between each HTTP request. Helps evade rate-limiting and WAF mechanisms. slow down to speed up. 🐒
  • --time-sec=SECONDS β€” seconds to delay the OS response in time-based techniques (Default: 1). one second of suspense. ⏲️
  • --tmp-path=PATH β€” sets the absolute path of web server's temp directory. temp folder, but fancy. πŸ“
  • --web-root=PATH β€” sets the web server document root directory (e.g. '/var/www'). root directory realness. 🌐
  • --alter-shell=SHELL β€” uses an alternative os-shell (e.g. 'Python'). Useful when the default shell is restricted. plan B slay. 🐍
  • --os-cmd=COMMAND β€” executes a single operating system command and displays the output. one command, one moment. ⚑
  • --os=OS β€” forces back-end operating system (e.g. 'Windows' or 'Unix'). Overrides automatic OS detection. OS but make it manual. πŸ–₯️
  • --tamper=SCRIPT β€” uses given script(s) for tampering injection data. Useful for bypassing WAFs and input filters. See --list-tampers for available scripts. tamper tantrum. 🎭
  • --msf-path=PATH β€” sets a local path where Metasploit Framework is installed (e.g. '/opt/metasploit-framework'). Enables post-exploitation integration with MSF modules. MSF crossover episode. πŸš€

πŸ•΅οΈ Detection πŸ•΅οΈ

  • --level=LEVEL β€” level of tests to perform (1-3, Default: 1).
    • 1 β€” Tests URL parameters and POST data only. starter pack. 🍼
    • 2 β€” Includes level 1 plus injection testing in HTTP cookies. cookies get tested too. πŸͺ
    • 3 β€” Includes level 2 plus injection testing in HTTP headers (User-Agent, Referer, Host, etc.). headers join the party. πŸŽ‰
  • --skip-calc β€” skips the mathematic calculation during the detection phase. math? skipped. βž—πŸš«
  • --skip-empty β€” skips testing the parameter(s) with empty value(s). empty? not today. πŸ•³οΈ
  • --failed-tries=N β€” sets a number of failed injection tries before aborting, in file-based technique. know when to fold 'em. πŸƒ
  • --smart β€” does the full thorough test only when there's a positive heuristic to go on. Basically: it waits for a vibe check before going all in. πŸ’… Fewer false positives, shorter scan time. Win-win.

✨ Miscellaneous ✨

  • --ignore-dependencies β€” ignores every single required third-party library dependency. 🫢 Careful though, bestie β€” the manpage literally says use with caution, because it may reduce functionality. Not everything survives when you cut the side quests.
  • --list-tampers β€” shows you the list of tamper scripts that are available. Window shopping, but for payload mutators. πŸ›οΈ
  • --alert=COMMAND β€” runs host OS command(s) the moment an injection point is found. Perfect for triggering alerts or hooking into external monitoring tools. πŸ“£ Like a little "we found it!!" bat signal.
  • --no-logging β€” turns off logging to a file. Results show up in the console only. πŸ™ˆ
  • --purge β€” safely removes all content from the commix data directory β€” that's cache, sessions, and logs. A full reset, no crumbs left. 🧹
  • --skip-waf β€” skips the heuristic detection of WAF/IPS/IDS protection. πŸšͺ Just walks right past the bouncer.
  • --mobile β€” imitates a smartphone via the HTTP User-Agent header. Handy for testing mobile-specific application interfaces. πŸ“±
  • --offline β€” offline mode, baby: no update checks, no internet requirements. ✈️
  • --wizard β€” a simple wizard interface, made for beginner users. πŸ§™β€β™€οΈ Everyone starts somewhere, and that's iconic.
  • --disable-coloring β€” kills the console output coloring. Great when you're logging to files or stuck in a terminal with no color support. 🎨🚫

πŸ“ EXAMPLES πŸ“

Ok bestie, this is the part where it all clicks. Here's how people actually run it:

Test a URL for command injection vulnerabilities:

commix -u http://example.com/search.php?query=test

Test a POST request:

commix -u http://example.com/login.php -d user=admin&pass=test

Test with a specific parameter and higher verbosity:

commix -u http://example.com/page.php?id=1&name=test -p name -v 3

Test using a saved HTTP request file:

commix -r /tmp/request.txt

Test through a proxy (e.g. Burp Suite):

commix -u http://example.com/?id=1
--proxy="http://127.0.0.1:8080"

Test through the Tor network:

commix -u http://example.com/?id=1 --tor --tor-port=9050

Use only Classic and Time-based techniques:

commix -u http://example.com/?id=1 --technique=ct

Test at level 3 (includes HTTP headers):

commix -u http://example.com/?id=1 --level=3 --random-agent

Test for Shellshock in a CGI endpoint:

commix -u http://example.com/cgi-bin/status/ --shellshock

Retrieve current user and system information upon successful injection:

commix -u http://example.com/?id=1 --current-user --sys-info

Read a remote file from the target host:

commix -u http://example.com/?id=1 --file-read="/etc/passwd"

Write a local file to the target host:

commix -u http://example.com/?id=1 --file-write="shell.php"
--file-dest="/var/www/html/shell.php"

Run in batch mode with time limit:

commix -u http://example.com/?id=1 --batch --time-limit=120

Use a tamper script to bypass WAF filtering:

commix -u http://example.com/?id=1 --tamper=space2plus

Scan multiple targets from a file:

commix -m /tmp/targets.txt --batch

Pipeline with waybackurls for automated target discovery:

echo example.com | waybackurls | grep vuln.php | commix
--data="addr=1" --os-cmd="whoami" --batch

Ok so this part is not a joke, bestie, and I need you to actually read it. πŸ’€

Using commix to attack targets without prior mutual consent is illegal. Periodt. It is the end user's responsibility to obey all applicable local, state, and federal laws. The developers assume no liability and are not responsible for any misuse or damage caused by this program.

So: consent first, always. Don't be that person. πŸ™


🌈 SEE ALSO 🌈

πŸ‘‘ AUTHOR πŸ‘‘

Anastasios Stasinopoulos <ancst@commixproject.com>

This manual page was written by Josenilson Ferreira da Silva <nilsonfsilva@hotmail.com> for the Debian project (but may be used by others). 🫢


And that's the whole page, bestie!! πŸ’– This is commix version 4.1, dated 2026-06, filed under COMMIX(1). Go forth, be curious, stay legal, and slay responsibly. πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from