zoukankan      html  css  js  c++  java
  • 【pwnable.kr】 shellshock

    pwnable从入门到放弃,第五题。

    ssh shellshock@pwnable.kr -p2222 (pw:guest)

    这题主要涉及了一个关于bash的CVE漏洞。

    首先还是下载源代码审计一下,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;
    }

    首先是一个关于可执行程序权限的问题,就是关于uid和gid的。

    先看一下各个文件的权限

    首先启动时,用户是shellshock权限,也就是other权限,这样的话对flag还是不可读的。linux开关机熟练选手根本就没懂啥意思。

    后来发现shellshock这个可执行文件对group是具有特殊权限w的,这就意味着egid是属于shellshock_pwn的,这个权限很高,对flag文件是可读的,这也就涉及到了linux可执行文件权限继承和赋予问题。

    我查阅了一下《C和C++安全编码》书中讲权限部分的,这相当于设置了egid,因此在代码中setreuid中设置的各uid均是预置的高权限,即egid——shellshock_pwn,因此这个可执行文件在执行到system一行时,就已经是具有shellshock_pwn组权限的程序了。

    bash也是用这个组权限在打开,所以对flag是可读的。

    解决了权限问题,就可以考虑如何代码执行了,这个破壳漏洞是可以作为一个本地提权漏洞使用,参考金山毒霸在freebuf上的漏洞分析贴,:http://www.freebuf.com/articles/system/45390.html

    可以使用上面提到了poc,

    env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 

    可验证这个漏洞在./bash上是存在的:

    将echo v...' 换成想执行的命令 bash -c "cat ./flag"'

    而./ bash -c "echo this is a test" 换成./shellshock

    偷个懒,破壳漏洞明天再看。  

  • 相关阅读:
    URL重写,asp.net URL重写,URLRewriter.dll下载,URLRewriter,URLRewriter下载,URL重写学习
    C#制作图像旋转的程序范例

    去掉qq空间不能添加带“=”号的网络音乐地址限制
    《Javascript高级程序设计》读书笔记(二)
    NExcelAPI使用测试
    常用的开源组件
    [转]编程的首要原则(s)是什么?
    《Javascript高级程序设计》读书笔记(一)
    [转]SQL错误处理的脆弱性演示
  • 原文地址:https://www.cnblogs.com/p4nda/p/7119218.html
Copyright © 2011-2022 走看看