命令注入
将用户输入拼接到命令行中执行 导致的任意命令执行问题
例子
这是一段简单的php代码 专门执行ping 命令并输出内容
正常输入: /xxx.php?ip=114.114.114.114
执行命令 ping -c 1 114.114.114.114
由于ip参数没有任何过滤限制
所以攻击者可以这样输入: /xxx.php?ip=114.114.114.114;whoami
执行命令 ping -c 1 114.114.114.114;whoami
这样就可以执行攻击者定义的命令 whoami
实际审计时输入常常不会非常简单 都有复杂的处理 慢慢追踪参数来源
遇到不会的函数可以在PHP手册查找对应的功能
命令执行基本语法不会的可以学习学习linux windows命令行语法基础
在审计时遇到输入可控时 要检查是否存在escapeshellarg escapeshellcmd 函数转义 或者是其他的处理方法(如 强制类型转换 替换字符 等)
常见bash shell 语法
一些常见的可以执行系统命令的函数/语法
最后更新于