pwnable.kr:shellshock

Posted    on 2017, Jul30, Sunday 20:42:09
Modified on 2017, Jul30, Sunday 20:42:12

Tags: pwnable.kr

题目

Mommy, there was a shocking news about bash.
I bet you already know, but lets just make it sure :)

ssh shellshock@pwnable.kr -p2222 (pw:guest)

分析

由题目名称shellshock可以猜测这题是个利用shellshock的题目

下面是shellshock的介绍

shellshock

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

众说周知,在shell中 fun() { echo hello; } 可以定义一个叫fun的函数,并且输出hello, *fun=’() { echo hello;};’ * 则定义了个叫fun的变量

对于存在shellshock的bash,如果执行 export fun=’() { echo hello;};’ 后,再执行再执行bash时,当它载入环境变量时会把fun解释为函数,此时执行fun可以得到hello的输出

bash

更加有趣的是,既然fun已经被解释成了函数,如果输入 export fun=’() { echo hello;}; echo haha’ ,bash在载入环境变量时,会执行 echo haha 这句命令,这便是shellshock

haha

这就意味着,如果bash存在漏洞,则在启动bash时可以让它执行一段代码。如果一个程序具有s权限位,调用bash时bash会拥有该程序所有者的权限。此时bash自动执行的代码也拥有了该程序所有者的权限,从而达到提权。

2.题解

查看shellshock.c后很自然的看到了一句

system("/home/shellshock/bash -c 'echo shock_me'");

/home/shellshock/bash 包含shellshock漏洞,所以只需

export fun='() { echo hello;}; /bin/cat flag' && ./shellshock

即可拿到flag

附录

附件: shellshock.zip