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到头
posted @ 2021-12-22 22:35  Mn猿  阅读(223)  评论(0编辑  收藏  举报