命令执行漏洞是指攻击者能够随意执行系统命令。php
脚本语言有点事简洁,方便,但也伴随一些问题,好比运行速度慢,没法接触系统底层,若是咱们开发的应用(特别是企业级的一些应用)须要除去web的特殊功能时,就须要调用一些外部程序。在应用须要去调用外部程序去处理的状况下,就会用到一些执行系统命令的函数。如php中的system,exec,shell_exec等,当用户能够控制命令执行的函数时,能够恶意注入系统命令到正常命令中,形成命令执行web
exec(): 执行一个外部程序,该函数可执行系统命令,命令执行结果的最后一行内容。shell
passthru() :执行外部程序而且显示原始输出安全
system(): 执行外部程序,而且显示输出,成功则返回命令输出的最后一行,失败则返回FALSE框架
shell_exec(): 经过shell环境执行命令,而且将完整的输出以字符串的方式返回命令执行的输出,若是执行过程当中发生错误或者进程不产生输出,则返回NULL.less
structs2框架,Java的三大框架之一。函数
1) >重定向输出符号。测试
2) >>重定向输出符号,但有追加的功能。spa
3) 2>错误重定向输出符号,覆盖原文件内容。操作系统
4) 2>>错误重定向输出符号,有文件内容追加的功能。重定向:I/O。Linux Shell 环境中支持输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,能够用来指定须要重定向的标准输入或输出,好比 2>a.txt 表示将错误信息输出到文件a.txt中。
5) *匹配任意字符。
6) ?匹配任意一个字符。
7) |管道符号。解释:command1|command2,将command1的输出做为command2的输入,好比ls -al|less,表示将ls -al的输出做为less的输入,即将la -al的输出分页。管道命令只接受标准输入(standoutput)。
8) &后台运行符。
9) && 逻辑与符号。用法:命令1 && 命令2 表示若是命令1执行成功,继续执行命令2。
10) ||逻辑或符号。用法:命令1 | | 命令2 表示若是命令1执行成功,不执行命令2;但若是命令1执行失败才执行命令2。
实验环境DVWA, Linux操做系统
安全级别LOW
接下来咱们试试能不能直接执行其它
既然不能直接执行,那咱们换个方式试试吧
在这里咱们用了管道符,就能够输出咱们想要的东西了
这就是一个简单的命令执行漏洞的利用了。