2019-2020-1 20199318《Linux内核原理与分析》第十一周作业
《Linux内核原理与分析》 第十一周作业
一、预备知识
-
什么是ShellShock?
Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开。许多互联网守护进程,如网页服务器,使用bash来处理某些命令,从而允许攻击者在易受攻击的Bash版本上执行任意代码。这可使攻击者在未授权的情况下访问计算机系统。
二、实验过程和分析
我选择的实验是ShellShock 攻击实验,具体的实验过程如下:
-
以root权限安装4.1版bash。
-
首先,确保安装了带有漏洞的bash版本,并让/bin/sh 指向/bin/bash.
-
在 /home/shiyanlou 目录下新建一个 shock.c 文件,内容如下:
-
编译这段代码,并设置其为Set-UID程序,保证它的所有者是root。
-
这里使用了setuid(geteuid()) 来使real uid = effective uid,这在Set-UID程序中不是普遍现象, 以下是hack过程:
-
去掉setuid(geteuid()) 语句,再试攻击,不能拿到权限
失败了!这就说明如果 real uid 和 effective uid 相同的话,定义在环境变量中的内容在该程序内有效,那样shellshock漏洞就能够被利用了。但是如果两个 uid 不同的话,环境变量失效,就无法发动攻击了,这可以从 bash的源代码中得到印证
就是上述那一行判断逻辑导致了两者的不同,primode即私有模式,要求real uid 与 effective uid保持一致。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】