命令执行漏洞
目前已爆出的命令执行漏洞
漏洞原理
web应用程序给用户提供指定的远程命令操作接口,在调用这些函数时,将用户的输入作为系统命令参数拼接到命令行中,如果对用户输入的参数过滤不严格,就到造成命令执行漏洞。
漏洞危害
1. 以当前网站的权限去执行系统命令。
2. 继承web服务程序权限,向服务器写文件,读取敏感数据等。
3. 反弹shell,进一步提权,进一步控制整个服务器。
命令执行漏洞函数
php中命令执行函数
system() #自带输出
passthru() #有回显
system()和passthru() 都是将用户输入的字符串当做命令去执行。
exec() #本身无回显,需要echo输出,
shell_exec() #本身无回显,需要echo输出
反引号 #本身无回显,需要echo输出
popen() #无回显,返回一个指针文件
漏洞利用
1. 利用 | && & || 来拼接其他命令。
| 是直接执行| 后面的命令,
|| 是前面的语句出错,才执行|| 后面的命令
& 是不论前面语句是否正确,都执行后面的命令。
&& 是前面的命令执行正确,才执行后面的命令。
2. Linux系统还支持分号,来隔开两个命令。
漏洞防御
1. 尽量不适用命令执行函数,并且在disable_funtions中禁用。
2. 使用命令执行函数时,对用户输入的参数进行过滤和检测。
3. 参数的值尽量使用引号包裹,并在拼接前对特殊字符进行转义。
4. 要避免任意代码执行漏洞的发生,攻击者可以直接利用代码执行漏洞,来使用代码执行系统命令。