命令行执行漏洞介绍
应用程序钟又是需要调用一些执行系统命令的函数,如Python的os模块提供了很多函数来执行系统命令。
当黑客能够控制这些函数时,就可以将恶意的系统命令拼接到正常的命令钟,从而造成命令行攻击。
命令行攻击
如图,页面提供了一个输入IP地址后程序执行ping命令,然后将ping命令返回到页面上,
当输入127.0.0.1&&cat /ect/passwd则获取到了系统中的passwd文件的内容,这里利用了
Linux利用管道符"&&"连接多行命令来执行了cat /ect/passwd命令,从而得到了passwd文件内容
常用管道符
Windows
| :直接执行后面语句 例如:ping 127.0.0.1 | who am i
|| :如果前面执行的语句执行出错,则执行后面的语句,前面只能为假,例如:ping 2 || whoami
&:如果前面的语句为假则执行后面的语句,前面可真可假,后面语句都会执行。例如:ping 127.0.0.1& whoami
&&:如果前面语句为假则直接出错,也不执行后面的语句,前面的语句只能为真。例如ping 127.0.0.1&& whoami
Linux
;:执行完前面语句再执行后面的。例如:ping 127.0.0.1;whoami
| :显示后面语句的执行结果。
||:当前面语句出错是执行后面的语句
&:如果前面前面的语句为假则执行后面的语句,前面的语句可真可假
&&:如果前面的语句为假则直接出错,也不执行后面的语句。
命令行漏洞代码分析
命令行执行漏洞代码分析
多少因为直接拼接入参给执行函数,未对参数进行过滤处理
命令行执行漏洞修复建议
1)尽量不要使用命令执行函数
2)客户提交的变量要做好过滤与检测
3)在使用动态函数之前,确保使用的函数是指定的函数之一
4)不能完全控制的危险函数最后不要使用