zoukankan      html  css  js  c++  java
  • 12.linux提权

    0x01.linux权限结构介绍

    1.文件权限

    在linux中一切皆文件

    每个文件针对每类访问者定义了三种主要权限

    r: Read 读

    Y: Write 写

    x: Execute 执行

    这种代表当前文件的权限是怎么样的,文件的权限包括读、写、执行。

    drwxr-x一   该权限分为4个部分   d、rwx、r-x、—。
    d: 表示文件类型;
    rwx: 表示文件所有者(文件的创建者)的对该文件所拥有的权限;
    r-X: 表示文件所属组对该文件所拥有的权限;
    —: 表示其他用户对该文件所拥有的权限。
    
    读(read),写(write),执行r(recute)简写即为(r ,w,x) , 亦可用数字来(4.2,1)表示
    如果某文件权限为7则代表可读(4)、可写(2)、可执行(1),即(4+2+1=7)
    若权限为6(4+2)则代表可读(4)、可写(2)。
    权限为5(4+1)代表可读(4)和可执行(1)
    权限为3(2+1)代表可写(2)和可执行(1)。
    

    chmod +x 文件

    chmod 777 文件 权限修改

    chmod -R [mode=421][文件或目录] 文件、目录

    备注: r: 4 w: 2 ×: 1

    r为读权限,可以用4来表示,w为写权限,可以用2来表示,x为执行权限,可以用1来表示。

    -R递归修改(就是将嵌套在很多文件夹中的文件权限修改了,如果没有这个,只能到指定的文件夹下进行修改)

    范例: 
    chmod 777 letc/hurenxiang 
    将hurenxiang这个文件夹权限改为对所有用户可读,可写,可执行
    
    chmod 775 /etc/caiyao
    将caiyao这个文件夹权限改为其他用户不可写
    

    2.用户

    linux中用户结构相对较为简单,每个用户所对应的文件操作权限也比较单一用户层级:

    1. root根用户,拥有最高权限,拥有独立于home的root专用的文件夹相当于windows中的system

    2. 普通用户,拥有独立的home文件路径 , 登录用户

    3. 服务用户,用于服务使用的账户 比如:web服务,mysql服务,ssh服务,在建立服务的时候会创建一个用户,你使用服务的时候才会启用这个用户,不开启服务的时候,账号是没用,通常在var或者bin下,大部分服务账号是不会用bash启动的

    image-20210721182333289

    0x02.linux权限的具体表现

    1.文件的权限

    image-20210721182700035

    2.用户的位置

    /home/user
    /root
    

    3.操作的区别

    sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。他只能运行一部分的命令

    sudo本质也是一个二进制文件

    它的特性主要有这样几点 :

    sudo能够限制用户只在某台主机上运行某些命令。

    sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。

    sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了—张存活期为5分钟的票(这个值可以在编译的时候改变)。

    sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440。

    sudo -l
    显示出自己(执行sudo的使用者)的权限
    

    0x03.LEAS查看linux基础信息

    LEAS 很方便,但是时间比较久,会生成一个报告,能把这台linux上基本的信息全部查完

    地址: https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS

    使用: ./linpeas.sh

    linux 提权辅助脚本

    https://github.com/mzet-/linux-exploit-suggester

    0x04.linux内核漏洞提权

    linux内核漏洞提权原理比较简单,能通过内核写地址的漏洞拿到就是root权限的shell,不会像windows还有privilege的开关。

    1.利用dirtycow (脏牛)提权

    1.使用searchsploit搜索提权exp

    image-20210721193458445

    使用40839.c (实战不清楚的话,就是要一个一个的尝试)

    2.编译运行

    输入新用户的密码,默认新用户的密码为firefart

    gcc -pthread 40839.c -o dirty -lcrypt
             多线程                  输出
    

    image-20210721194232863

    image-20210721194353956

    mv /tmp/passwd.bak /etc/passwd
    

    切换用户查看提权效果

    image-20210721194551231

    补充:
    实战中反弹shell
    https://gtfobins.github.io/#+reverse%20shell
    python开启交互式shell
    python -c 'import pty;pty.spawn("/bin/bash")'
    

    0x05.利用linux已安装的应用中的漏洞提权

    思路: 安装的应用如果能调用内核又存在漏洞即可直接利用并转换成root, 利用这个漏洞获得这个可以调用内核的应用就相当于获得了root权限

    利用samba应用CVE-2007-2447漏洞提权

    search usermap
    use 0
    show options
    set rhosts 192.168.0.108 
    run
    

    image-20210721195630497

    0x06.利用suid提权

    思路: 利用过程有点类似上面,但是原理不一样,linux中存在suid这种系统特性。

    suid允许用户在执行用户的许可下执行文件,创建和打开网络套接字一般需要rot权限,但是为了方便使用,如Ping命令,通过设置Ping程序的suid,就可以允许低权限用户执行Ping程序时是以root权限执行。因此,如果一个程序中设置了suid,我们可以该程序生成的shell来提升权限。

    你可以理解为一个文件属性版本的sudo

    1.寻找具有suid权限的可执行文件

    image-20210721200111933

    看到没,那个s,然后nmap又是一个可执行文件,有交互界面,那么可以用来获取root权限

    2.寻找这个可执行文件的交互界面

    image-20210721200816163

    关于提权的方法还有很多

    0x07.实战思路

    image-20210721201610437

    补充:
    自己当前的位置,一直cd到头
    
  • 相关阅读:
    自定义navigationItem与button的几种状态
    NSLog自动识别运行环境是发布还是测试(release |debug),从而决定是否需要打印。
    今天学了一个简单的新技能Xcode6以后创建工程后没有.pch文件,所以来个技能
    APP内部调用短信 、电话、邮件
    ShareSDK
    表视图的基本概念
    高仿新浪微博APP
    高仿网易新闻APP
    UI常用基本控件 的使用
    属性的介绍--OC语言
  • 原文地址:https://www.cnblogs.com/xcymn/p/15721472.html
Copyright © 2011-2022 走看看