面试题答案
一键面试- 命令注入风险:
- 风险描述:用户输入的数据未经过严格过滤就直接拼接到命令中执行,恶意用户可借此注入恶意命令。例如:
command "$input"
,若input
为; rm -rf /
,可能导致系统文件被删除。 - 审计方法:检查脚本中是否存在直接使用用户输入构建命令的情况,特别是使用
eval
等危险函数。查看对输入的验证和过滤逻辑,是否限制输入字符范围、对特殊字符进行转义等。
- 风险描述:用户输入的数据未经过严格过滤就直接拼接到命令中执行,恶意用户可借此注入恶意命令。例如:
- 未验证的文件操作:
- 风险描述:直接对用户指定的文件进行操作,若用户指定恶意路径,可能导致重要文件被删除、修改等。比如
rm $file_path
,若file_path
为/etc/passwd
,会破坏系统重要配置文件。 - 审计方法:检查文件操作命令(如
rm
、mv
、cp
等)的参数来源,确认是否对文件路径进行合法性检查,如是否存在文件在预期目录内、路径是否为绝对路径且符合安全策略等判断逻辑。
- 风险描述:直接对用户指定的文件进行操作,若用户指定恶意路径,可能导致重要文件被删除、修改等。比如
- 弱密码使用:
- 风险描述:在脚本中硬编码密码或者使用简单易猜的密码,若脚本被泄露,密码就会暴露。例如在数据库连接脚本中直接写
mysql -u user -ppassword
。 - 审计方法:搜索脚本中是否有明显的密码形式字符串,对于需要使用密码的场景,确认是否采用了环境变量、密钥管理系统等安全方式传递密码,而非直接硬编码。
- 风险描述:在脚本中硬编码密码或者使用简单易猜的密码,若脚本被泄露,密码就会暴露。例如在数据库连接脚本中直接写
- 权限设置不当:
- 风险描述:脚本文件本身权限设置过大,如设置为
777
,任何人都可读写执行,可能导致脚本被篡改。或者脚本执行过程中以过高权限运行,完成普通任务却使用了root权限。 - 审计方法:查看脚本文件权限设置,确保符合最小权限原则。检查脚本执行时获取的权限,是否在满足功能前提下尽量降低权限,对于以root权限运行的部分,确认是否必要且有严格的安全控制。
- 风险描述:脚本文件本身权限设置过大,如设置为