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 换行