2020-2021-1 20209318《Linux内核原理与分析》第十二周作业

ShellShock 攻击实验

作业信息

这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析>
这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第十二周作业>
这个作业的目标 <ShellShock 攻击实验>
作业正文 https://www.cnblogs.com/20209318zs/p/14183110.html

一、实验简介

2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发。在本实验中,需要亲手重现攻击来理解该漏洞,并回答一些问题。

二、预备知识

什么是shellshock?
Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开。许多互联网守护进程,如网页服务器,使用bash来处理某些命令,从而允许攻击者在易受攻击的Bash版本上执行任意代码。这可使攻击者在未授权的情况下访问计算机系统。——摘自维基百科
2.1进行实验所需的准备
1环境搭建
以root权限安装4.1版bash(4.2版本以上的漏洞已经被堵上了)
bash4.
原来的下载地址是 http://ftp/gnu.org/gnu/bash/bash-4.1.tar.gz,
为了加快速度,我们这里使用下面的下载地址
http://labfile.oss.aliyuncs.com/bash-4.1.tar.gz

下载

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

安装

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

链接

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

检测shellshock漏洞

$ exit 
$ env x='() { :; }; echo vulnerable' bash -c "echo this is a test"
让/bin/sh 指向/bin/bash
$ sudo ln -sf /bin/bash /bin/sh

三、实验内容

3.1 攻击Set-UID程序
本实验中,我们通过攻击Set-UID程序来获得root权限。
我们知道system()函数将调用"/bin/sh -c" 来运行指定的命令, 这也意味着/bin/bash 会被调用,你能够利用shellshock漏洞来获取权限么? 首先,确保安装了带有漏洞的bash版本,并让/bin/sh 指向/bin/bash.

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

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

$ vi shock.c

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

#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

hack过程:

去掉setuid(geteuid())语句,再次攻击

说明如果 real uid 和 effective uid 相同的话,定义在环境变量中的内容在该程序内有效,那样shellshock漏洞就能够被利用了。但是如果两个 uid 不同的话,环境变量失效,就无法发动攻击了。

posted @ 2020-12-24 11:37  20209318赵姝  阅读(61)  评论(0编辑  收藏  举报