不能。commix不扫描PHP源码,仅对已知HTTP参数(如GET/POST/Cookie)探测命令注入,前提是目标PHP脚本服务端拼接并执行了这些参数,否则无法利用。

commix 能不能直接挖 PHP 命令执行漏洞?
不能。commix 本身不扫描 PHP 源码,也不解析 eval()、system() 等函数调用;它只对**已知可注入的 HTTP 参数**(如 GET/POST/Cookie)做命令注入探测,前提是目标 PHP 脚本在服务端拼接并执行了这些参数——比如 shell_exec("ping " . $_GET['host']) 这类写法。如果你没找到可控参数入口,commix 就无从下手。
怎么确认目标存在 commix 可利用的命令注入点?
先手工验证是否真能执行系统命令,别急着开 commix。常见线索包括:
- URL 中出现
page=、cmd=、dir=、ip=等明显用于拼接命令的参数 - 响应中返回类似
PING 127.0.0.1 (127.0.0.1)或空响应但 HTTP 状态码为 200(可能命令执行了但没回显) - 尝试加简单 payload:访问
?ip=127.0.0.1%26%26id,看响应里有没有uid=字样 - 注意 Web 服务器是否过滤空格——若
&&不生效,换用%09(Tab)、${IFS}或;
commix 基础命令和关键参数怎么设?
commix 默认行为偏保守,很多真实场景要手动调参才能打穿:
- 指定目标 URL 和参数:
commix -u "http://target.com/ping.php?ip=127.0.0.1" - 强制检测所有参数(含 POST):
--all;只测某字段加-p ip - 绕过空格过滤:
--space-replacement="${IFS}"或--prefix=";" --suffix=";" - 启用带外交互式 shell:
--os-shell(依赖目标能出网且nc/python可用) - 避免被 WAF 误杀:
--random-agent+--delay=2控制发包节奏
注意:--os-pwn 在新版 commix 中已弃用,交互式 shell 全靠 --os-shell 实现。
立即学习“PHP免费学习笔记(深入)”;
为什么 commix 扫出来“疑似漏洞”却拿不到 shell?
常见原因不是工具问题,而是环境限制太死:
- PHP 配置禁用了危险函数:
disable_functions = system,exec,passthru,shell_exec,proc_open—— 此时 commix 可能连基础回显都收不到 - Web 服务器(如 Nginx)或 WAF 对分号、反引号、$() 等做了严格正则拦截,得手动构造更隐蔽 payload 测试
- 目标主机无 Python/Perl/PHP CLI 环境,
--os-shell会卡在上传 stage 阶段 - commix 默认用
whoami探测,但某些内网环境该命令无输出,建议用echo test123替代验证
真正卡住的地方往往不在 commix 本身,而在你没看清 PHP 的执行上下文——是 system()?passthru()?还是 exec() 加了 $output 数组?不同函数对错误、回显、截断的处理差异极大。











