RCE
原理
应用有时需要调用一些执行系统命令的函数,如 PHP 中的 system、exec、shell_exec、passthru、popen、proc_popen 等,当用户能控制这些函数的参数,并且开辟人员对这个参数没有严格的过滤时就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行毛病。
利用系统函数实现命令执行的函数
- eval()、assert()、preg_replace()、call_user_func()、ob_start()、unserialize()、creat_function() 、usort()、uasort()、uksort()、 array_filter()、 array_reduce()、 array_map()
复制代码 直接执行系统命令的代码函数
- system(),exec(),shell_exec(),passthru(), pcntl_exec(), popen(), proc_open(),反引号
复制代码 命令毗连符:
- Windows和Linux都支持的命令连接符:
- cmd1 | cmd2 只执行cmd2
- cmd1 || cmd2 只有当cmd1执行失败后,cmd2才被执行
- cmd1 & cmd2 先执行cmd1,不管是否成功,都会执行cmd2
- cmd1 && cmd2 先执行cmd1,cmd1执行成功后才执行cmd2,否则不执行cmd2
- Linux还支持分号(;),cmd1;cmd2 按顺序依次执行,先执行cmd1再执行cmd2
复制代码 过滤绕过
参考文章:
总结rce(远程代码执行各种sao姿势)绕过bypass_远程命令执行绕过-CSDN博客
渗出测试——命令执行毛病(RCE)详解 - 知乎 (zhihu.com)
空格过滤绕过
[code]$IFS$9,${IFS},$IFS,%09, |