9-远程代码执行漏洞
Remote Code/Command Execute, RCE
危害:
- 获取服务器权限
- 获取敏感数据文件
- 写入恶意文件 getshell
- 植入木马病毒勒索软件等
相关函数
命令 command 注入
| 函数 | 作用 |
|---|---|
| system () | 执行外部程序并显示输出 |
| exec (), shell_exec () | 通过 shell 环境执行命令,并将完整的输出返回为字符串 |
| pcntl_exec () | 在当前进程空间执行指定程序 |
| passthru () | 执行外部程序并显示原始输出 |
| popen () | 打开进程文件指针 |
| proc_open () | 执行一个命令,并打开用来输入/输出的文件指针 |
代码 code 注入
| 函数 | 作用 |
|---|---|
| eval () | 把字符串 code 作为 PHP 代码执行 |
| assert () | 检查一个断言是否为 false |
| preg_replace () | 执行一个正则表达式的搜索和替换 |
| create_function () | 创建一个匿名函数并返回函数名 |
| call_user_func (), call_user_func_array () | 把第一个参数作为回调函数调用 |
| usort (), uasort () | 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 |
命令拼接符号
Windows:
&&: 左边的命令执行成功,右边才执行
&: 拼接
|: 上一条命令的输出作为下一条命令的参数
||: 左边的命令执行失败,右边才执行
Linux:
;: 没有逻辑关系的连接符
&&: 左边的命令执行成功,右边才执行
|: 上一条命令的输出作为下一条命令的参数
||: 左边的命令执行失败,右边才执行
&: 任务后台执行,类似 nohup 命令,如java -jar test.jar > log.txt &
绕过过滤
过滤 cat:
c’’at, c””at, ca$@t, tac 倒序输出,more 和 less 按窗口大小输出,head 只显示前几行,tail 只显示后几行,nl 类似 cat -n, 显示时输出行号,tailf 类似 tail -f
过滤目录分隔符:
用 cd 进入目录
过滤空格:
${IFS}, <, <>, %20, %09, $IFS$9, $IFS
过滤关键词:
通配符
过滤运算符:
url 编码,%0a 回车,%0d 换行