
东南大学网络空间安全实验入门——环境变量与Set-UID程序实验
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOC
简介:
本课程为东南大学网络空间安全专业实验系列之一,旨在通过实践操作,帮助学生掌握环境变量设置及Set-UID程序的基本原理和应用技巧。
在网络安全领域,环境变量和Set-UID程序是两个重要的概念,它们与系统安全密切相关。本实验旨在通过一系列任务深入理解这两个概念以及它们如何影响程序执行和权限管理。
环境变量是操作系统中存储信息的一种方式,这些信息可以被进程访问,如路径(PATH)、库加载器(LD_PRELOAD)等。在实验中,学生使用`printenv`和`env`命令查看环境变量,并通过`export`和`unset`来设置和删除它们。此外,在父子进程之间传递环境变量的实验展示了子进程如何继承父进程的环境变量,这对于多进程程序设计至关重要。另外,当调用`execve()`函数执行新的程序时,它也会继承调用进程的环境变量,这意味着新程序能够访问同样的环境设置。
Set-UID程序是一种特殊权限的程序,其执行权限并不基于所有者的实际权限,而是基于文件的Set-UID标志。在实验中,学生创建了一个Set-UID程序,并将其所有者更改为root。这样的程序允许普通用户在执行时获得root权限,这对于系统管理是必要的,但也可能带来安全风险。例如,通过改变环境变量PATH,普通用户可以让Set-UID程序执行自定义的可执行文件而非预期的系统命令,从而可能导致权限滥用。
实验还涉及到`LD_PRELOAD`环境变量,它允许用户在程序启动时优先加载自定义的动态链接库。通过设定这个变量,即使程序没有Set-UID权限,普通用户也可以影响程序的行为,例如覆盖原本的函数实现。实验展示了在不同场景下`LD_PRELOAD`如何影响Set-UID程序执行,并揭示了这种机制的安全隐患。
此外,实验还演示了使用`system()`和`execve()`调用外部程序时可能发生的权限泄露问题。通过这些方法,不具备某些权限的用户可以利用Set-UID程序执行原本受限的操作,如删除文件。当使用`system()`函数时,攻击者可以通过环境变量操纵程序行为;而通过`execve()`则更直接地执行指定命令,同样可能存在被恶意利用的风险。
通过以上实验操作,学生能够深入理解环境变量在程序执行中的作用以及Set-UID程序的权限特性,并且认识到这些特性的潜在安全问题。这不仅有助于提高学生的网络安全意识,也为未来实际工作中防范和解决这类问题打下了坚实的基础。
全部评论 (0)


