命令执行漏洞

 

什么是命令执行漏洞

命令执行漏洞是指攻击者能够随意执行系统命令。php

命令执行漏洞的原理

脚本语言有点事简洁,方便,但也伴随一些问题,好比运行速度慢,没法接触系统底层,若是咱们开发的应用(特别是企业级的一些应用)须要除去web的特殊功能时,就须要调用一些外部程序。在应用须要去调用外部程序去处理的状况下,就会用到一些执行系统命令的函数。如php中的system,exec,shell_exec等,当用户能够控制命令执行的函数时,能够恶意注入系统命令到正常命令中,形成命令执行web

命令执行漏洞的分类

代码过滤不严或无过滤

系统漏洞形成的命令执行

调用第三方组件

PHP命令执行函数

exec(): 执行一个外部程序,该函数可执行系统命令,命令执行结果的最后一行内容。shell

passthru() :执行外部程序而且显示原始输出安全

system(): 执行外部程序,而且显示输出,成功则返回命令输出的最后一行,失败则返回FALSE框架

shell_exec(): 经过shell环境执行命令,而且将完整的输出以字符串的方式返回命令执行的输出,若是执行过程当中发生错误或者进程不产生输出,则返回NULL.less

Java命令执行

structs2框架,Java的三大框架之一。函数

Linux特殊命令

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

 

 

接下来咱们试试能不能直接执行其它

 

既然不能直接执行,那咱们换个方式试试吧

 

 

在这里咱们用了管道符,就能够输出咱们想要的东西了

 

这就是一个简单的命令执行漏洞的利用了。

相关文章
相关标签/搜索