一、命令执行漏洞
命令执行漏洞是指可以随意执行系统命令,属于高危漏洞之一,也属于代码执行范围内就好比说一句话木马<?php @eval($_POST[cmd]);?>
二、分类
1、代码过滤不严或无过滤
2、系统漏洞可以构造环境变量的值来执行具有攻击力的脚本代码,会影响到bash交互的多种应用,例如:http、ssh、dhcp等
3、调用第三方组件,例如PHP — exec()、system()、popen()、passthru()、proc_open()、pcntl_exec()、shell_exec(),java — struts 2,thinkphp(老牌的PHP框架)
- system() 输出并返回最后一行shell结果。
- exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
- passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
- popen()、proc_open() 不会直接返回执行结果,而是返回一个文件指针
三、&&、&、|、||
windows支持:
- command1 && command2 #command1执行成功了才会执行command2
- command1 & command2 #不管command1是否执行成功,command2都会执行
- command1 | command2 #直接执行command2
- command1 || command2 #command1执行失败了,才会执行command2
Linux支持:
- command1 ; command2 #command1执行完执行command2
- command1 && command2 #command1执行成功了才会执行command2
- command1 & command2 #不管command1是否执行成功,command2都会执行
- command1 | command2 #将command1的输出结果作为command2的输入的内容(管道符)
- command1 || command2 #command1执行失败了,才会执行command2
四、实验环境
1、DVWA服务器:Windows Server 2003(192.168.247.129),启动phpStudy