2017-2018-1 20179215 第十一周 ShellShock攻击实验
《Linux内核原理与设计》第十一周作业 ShellShock攻击实验
分组:和20179205王雅哲共同完成实验及博客攥写
实验内容:
Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,既可以远程也可以在本地触发,本实验通过重现攻击来理解改漏洞。
实验操作:
什么是ShellShock?
Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开。许多互联网守护进程,如网页服务器,使用bash来处理某些命令,从而允许攻击者在易受攻击的Bash版本上执行任意代码。这可使攻击者在未授权的情况下访问计算机系统。
首先,我们来搭建这个环境:
下载:
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漏洞,看到输出vulnerable,说明bash有漏洞,最后,让/bin/sh指向/bin/bash,这里的/bin/sh是/bin/bash的符号。了解bash自定义函数,只需要函数名就能够调用该函数。截图如下:
此时我们来看看ShellShock漏洞的真身:
调用bash,会输出Hello World, 为什么会出现这样的情况呢?bash读取了环境变量,在定义foo之后直接调用了后面的函数。一旦调用bash,自定义的语句就直接触发。
攻击set-uid程序:
Set-UID 是Unix系统中的一个重要的安全机制。当一个Set-UID程序运行的时候,它被假设为具有拥有者的权限。如果程序的拥有者是root,那么任何人运行这个程序时都会获得程序拥有者的权限。Set-UID允许我们做许多很有趣的事情,但是不幸的是,它也是很多坏事情的罪魁祸首。
参考Set-UID程序漏洞实验,我们来熟悉一下Set-UID程序:
“passwd”,“chsh”,“su”,和“sudo”命令需要Set-UID机制,如果它们没有这些机制的话,会发生什么,如果你不熟悉这些程序,你可以通话阅读使用手册来熟悉它,如果你拷贝这些命令到自己的目录下,这些程序就不会是Set-UID程序,运行这些拷贝的程序,观察将会发生什么。
从上面的运行结果可以看出:拷贝到/home/seed下的passwd程序,没有了root权限,这样就没有了修改密码的权限。如下图:
在linux环境下运行Set-UID 程序,同时描述并且解释你的观察结果:
原因:因为"passwd", "chsh", "su", and "sudo"属于root,但是普通用户也需要使用到"passwd", "chsh", "su", and "sudo"命令,Set-UID可以使普通用户以root权限来运行这几个指令。
1、以root方式登录,拷贝/bin/zsh 到/tmp, 同时设置拷贝到tmp目录下的zsh为set-uid root权限,然后以普通用户登录,运行/tmp/zsh。发现可以获得root权限:
2、代替拷贝/bin/zsh到tmp目录,这次拷贝/bin/bash到/tmp目录,同时设置/tmp目录下的bash为Set-UID root权限,然后以普通用户登录,运行/tmp/bash。发现此时无法获得root权限,这是因为/bin/bash有某种内在的保护机制可以阻止Set-UID机制的滥用:
现在我们回到本实验中,我们通过攻击Set-UID程序来获得root权限。首先,确保安装了带有漏洞的bash版本,并让/bin/sh 指向/bin/bash。
在shock.c文件中编写代码,代码如下:
执行攻击成功,获取到root权限:
现在我们重复上述步骤,先建一个shock1.c文件,并在shock1文件中,把setuid(geteuid())去掉,再次执行,结果发现,攻击未成功,未获取到root权限:
对比两次攻击结果,思考是什么导致的攻击结果的改变呢?这就说明如果 real uid 和 effective uid 相同的话,定义在环境变量中的内容在该程序内有效,那样shellshock漏洞就能够被利用了。但是如果两个uid不同的话,环境变量失效,就无法发动攻击了,这可以从bash的源代码中得到印证(variables.c,在308到369行之间),如下图所示:
2017-2018-1 20179215 第十一周 ShellShock攻击实验的更多相关文章
- 《Linux内核原理与设计》第十一周作业 ShellShock攻击实验
<Linux内核原理与设计>第十一周作业 ShellShock攻击实验 分组: 和20179215袁琳完成实验及博客攥写 实验内容: Bash中发现了一个严重漏洞shellshock, ...
- ShellShock 攻击实验
一. 实验描述 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发.在本实验中,学生需要亲手重现攻击来理解该漏洞,并回答一些问 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十一周作业
<Linux内核原理与分析>第十一周作业 一.本周内容概述: 学习linux安全防护方面的知识 完成实验楼上的<ShellShock 攻击实验> 二.本周学习内容: 1.学习& ...
- 201871010111-刘佳华《面向对象程序设计(java)》第十一周学习总结
201871010111-刘佳华<面向对象程序设计(java)>第十一周学习总结 实验九 泛型程序设计技术 实验时间 2019-11-8 1.实验目的与要求 (1) 理解泛型概念: (2 ...
- 201871010101-陈来弟《面向对象程序设计(Java)》第十一周学习总结
201871010101-陈来弟<面向对象程序设计(Java)>第十一周学习总结 实验九 泛型程序设计技术 实验时间 2019-11-8 第一部分:理论基础知识 1.什么是泛型类 泛型是 ...
- 达拉草201771010105《面向对象程序设计(java)》第十一周学习总结
达拉草201771010105<面向对象程序设计(java)>第十一周学习总结 实验十一 集合 实验时间 2018-11-8 第一部分:理论知识 1.集合(Collection或称为容 ...
- 2019-2020-11 20199317 《Linux内核原理与分析》 第十一周作业
ShellShock 攻击实验 1 ShellShock 简介 Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9 ...
- 2019-2020-1 20199305《Linux内核原理与分析》第十一周作业
ShellShock 攻击实验 (一)何为ShellShock? 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发,这项漏洞 ...
- 20199319《Linux内核原理与分析》第十一周作业
ShellShock攻击实验 什么是ShellShock Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开.许多 ...
随机推荐
- HTML系列(1)简介
开始整理html的知识. (1)HTML HTML 是用来描述网页的一种语言. 1.HTML指的是超文本标记语言: HyperText Markup Language 2.HTML不是 ...
- springboot-vue项目后台2
Main.java package com.hcxy.car; import org.springframework.boot.SpringApplication; import com.hcxy.c ...
- Python编程-面向对象和类
一.面向对象的程序设计 1.面向过程 VS 面向对象 (1)编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组 ...
- easy_install
一 setuptools 和easy_install setuptools:setuptools 是一组由PEAK(Python Enterprise Application Kit)开发的 Pyth ...
- 全志H3-NanoPi开发板SDK之三编译流程【转】
本文转载自:https://blog.csdn.net/yuesichiu/article/details/77600124 版权声明:本文为博主(宽简厚重,Yuesichiu)原创文章,未经博主允许 ...
- Docker 容器监控平台-Weave Scope
官网地址:https://www.weave.works/oss/scope/ 安装 执行如下脚本安装运行 Weave Scope. curl -L git.io/scope -o /usr/loca ...
- ASP.NET5 MVC6 利用Middleware 创建可访问HttpContext 的业务类工厂。(代替HttpContext.Current)
我们的目标是在后台业务处理类中,能够很容易的取得用户信息或者其它HTTP请求相关的信息. 所以,首先我们需要一个存储这些信息的类: public class RequestData { public ...
- 在Java项目中部署使用Memcached[转]
在项目中使用到Memcached主要的目的是,通过缓存数据库查询结果,减少数据库访问次数,从而提高动态.数据库驱动网站的速度.提高可扩展性.Memcached是一个高性能的分布式内存对象缓存系统,基于 ...
- 笔记<c# 调用DLL解密密文>
using DTcms.Common; using System; using System.Collections.Generic; using System.Linq; using System. ...
- QT 利用ListWidget 和 StackedLayout 配合实现 分页 选项
1. 如图, 左边为listwidget,右边为StackedLayout, 通过listwidget的不同选项,可以使右边的不同页显示出来. 2. dialog.h #ifndef DIALOG_H ...