代码执行漏洞
原理
把用户提交的参数作为代码去执行。动态代码执行函数过滤参数不严格,导致用户输入数据作为服务端代码执行。
危害
执行脚本代码
产生
web源码,一些常见的cms
中间件漏洞
相关函数
- eval()
- assert()
- preg_replace()
- create_function()
- call_user_func()
- call_user_func_array()
- ….
eval,assert函数
eval(),php4, phjp 5,php 7把字符串当作php代码执行、当用户可以控制字符串那么此时就存在代码执行漏洞。
1 | #eval.php |
payload:
?cmd=phpinfo();
preg_replace函数
preg_replace()函数是执行一个正则表达式的搜索和替换、如果存在危险的/e修饰符,会使preg_replace()将替换的字符串当作php代码执行。
1 | #preg_replace.php |
payload:
?cmd=phpinfo();
动态函数调用
在php中可以把函数名通过字符串的方式传递给一个变量,然后通过此变量动态调用函数。在php语言中,可以通过动态函数调用来对代码进行执行。
1 | #function.php |
payload
?fun=phpinfo
call_user_func()
call_user_func()函数的作用是把第一个参数作为回调函数调用。
1 | call_user_func (callable $callback [, mixed $parameter[, mixed $...]]):mixed |
第一个参数callback是被调用的回调函数,其余参数是回调函数的参数
1 |
|
payload
?call=system&cmd=whoami