命令执行及代码执行漏洞原理
命令执行和代码执行漏洞是因为在代码中有进行执行的函数,但是有没有对用户可控数据进行过滤,所以形成了这个漏洞。
在执行时的连接符
command1&command2 两个命令同时执行
command1&&command2 只有前面命令执行成功,后面命令才继续执行
command1;command2 不管前面命令执行成功没有,后面的命令继续执行
command1||command2 顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令
命令执行常见函数
。
- system:执行一个外部的应用程序并显示输出的结果。
- exec:执行一个外部的应用程序。
- shell_exec:执行shell命令并返回输出的结果的字符串。
- passthru:执行一个UNIX系统命令并显示原始的输出。
- popen():打开到命令参数中指定的程序的管道,如果发生错误,则返回false。
- proc_open: 执行一个命令,并且打开用来输入/输出的文件指针。
代码执行常见函数
- eval() :把字符串按照 PHP 代码来计算。
- assert():判断是否为字符串,是则当成代码执行。php官方在php7中更改了assert函数。在php7.0.29之后的版本不支持动态调用。
- call_user_fuc():调用函数。
- call_user_fuc_array():调用函数,参数为数组。
判断注入点
1.找到网页命令执行的功能区。
比如这里就是一个ping的功能区。
2.如果说有源码就在我们上面的常见函数中进行查找,看是否使用了函数。
3.基于各种框架的漏洞,如strut2框架的远程代码执行漏洞。利用exp进行利用。
参考文章
版权声明:本文为m0_51822230原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。