pwnable.kr shellshock

这题是 shellshock 漏洞的实际应用,之前在整理 web 渗透的时候接触过,但是没有利用过,现在遇到了就记下来。

之前的文章里对 shellshock 简单介绍 过,这里再推荐一篇 shellshock 详细介绍

题目是这样的:


pwnable.kr shellshock_第1张图片

直接 ssh 上去看一下


目录下有 4 个文件,其中 shellshock 是设置了 s 标识的。

看看源码


pwnable.kr shellshock_第2张图片
shellshock.c

代码很简单,一开始调用 setresuid 和 setresgid 把进程的 ruid、euid 和 suid 设置为进程当前的 egid,由于设置了 s 标识,因此 egid 实际上是 root 所在用户组的 id。接着调用了 bash,注意到这里是以 root 的身份调用的。

既然是 shellshock,先试试最简单的


发现输出了 test。分析一下这条指令实际上做了什么。首先在当前环境中定义了一个 X 函数,函数体是 { :; },实际上类似于 return true,之后在函数体外多加了一条语句 echo "test",这条语句会在后面调用 /home/shellshock/bash fork 新的 bash 进程时被调用,这里的调用是在初始化环境的时候调用的,换句话说,就是 fork 出来的新 bash 进程会在初始化自己的环境时执行函数定义后面的语句

我们知道 shellshock 中以 root 身份调用了 bash,那只要用同样的方法,让这个 bash 进程在初始化环境的时候输出 flag 就行了,于是可以:


得到结果

你可能感兴趣的:(pwnable.kr shellshock)