2022-2023-1 20222818《Linux内核原理与分析》第十三周作业

一、实验简介

2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发。Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开。许多互联网守护进程,如网页服务器,使用bash来处理某些命令,从而允许攻击者在易受攻击的Bash版本上执行任意代码。这可使攻击者在未授权的情况下访问计算机系统。

二、环境搭建

1、下载

以root权限安装4.1版的bash,因4.2版本以上的漏洞已经被堵上了。

$ sudo su
$ wget http://labfile.oss.aliyuncs.com/bash-4.1.tar.gz

结果如下图所示:
在这里插入图片描述

2、安装

执行以下代码 安装bash

$ tar xf bash-4.1.tar.gz
$ cd bash-4.1
$ ./configure #这一步过程比较长,请等待一会
$ make && make install

在这里插入图片描述在这里插入图片描述make结束结果如下图:
在这里插入图片描述

3、链接

$ rm /bin/bash
$ ln -s /usr/local/bin/bash /bin/bash

结果如下图:
在这里插入图片描述

到这一步就安装完成了

三、预备知识

安装完成了后,接下来检测是否存在shellshock漏洞,看到输出vulnerable,说明bash有漏洞,最后,让/bin/sh指向/bin/bash,这里的/bin/sh是/bin/bash的符号。了解bash自定义函数,只需要函数名就能够调用该函数。截图如下:
在这里插入图片描述

ShellShock漏洞:

调用bash,会输出Hello World, 为什么会出现这样的情况呢?bash读取了环境变量,在定义foo之后直接调用了后面的函数。一旦调用bash,自定义的语句就直接触发。

//
export foo='() { :; }; echo Hello World'
bash
>Hello World

在这里插入图片描述

三、攻击Set-UID程序

攻击set-uid程序:
 Set-UID 是Unix系统中的一个重要的安全机制。当一个Set-UID程序运行的时候,它被假设为具有拥有者的权限。如果程序的拥有者是root,那么任何人运行这个程序时都会获得程序拥有者的权限。Set-UID允许我们做许多很有趣的事情,但是不幸的是,它也是很多坏事情的罪魁祸首。

本实验中,我们通过攻击Set-UID程序来获得root权限。

首先,确保安装了带有漏洞的bash版本,并让/bin/sh 指向/bin/bash.

$ sudo ln -sf /bin/bash /bin/sh

截图如下:
在这里插入图片描述

在 /home/shiyanlou 目录下新建一个 shock.c 文件:

vi shock.c

按 I 键切换到插入模式,再输入如下内容:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
void main()
{
    setuid(geteuid()); // make real uid = effective uid.
    system("/bin/ls -l");
}

编译这段代码,并设置其为Set-UID程序,保证它的所有者是root。

$ sudo su
$ gcc -o shock shock.c
$ chmod u+s shock

在这里插入图片描述
使用了setuid(geteuid()) 来使real uid = effective uid,这在Set-UID程序中不是普遍现象,但它确实有时会发生。 先自己试着hack一下:) 以下是hack过程:

在这里插入图片描述
如果 setuid(geteuid()) 语句被去掉如下图所示:

在这里插入图片描述在这里插入图片描述
再试试看攻击,不能够拿到权限,结果如下图所示:

在这里插入图片描述
对比两次攻击结果,思考是什么导致的攻击结果的改变呢?这就说明如果 real uid 和 effective uid 相同的话,定义在环境变量中的内容在该程序内有效,那样shellshock漏洞就能够被利用了。但是如果两个uid不同的话,环境变量失效,就无法发动攻击了,这可以从bash的源代码中得到印证(variables.c,在308到369行之间)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值