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中用户结构相对较为简单,每个用户所对应的文件操作权限也比较单一用户层级:
-
root根用户,拥有最高权限,拥有独立于home的root专用的文件夹相当于windows中的system
-
普通用户,拥有独立的home文件路径 , 登录用户
-
服务用户,用于服务使用的账户 比如:web服务,mysql服务,ssh服务,在建立服务的时候会创建一个用户,你使用服务的时候才会启用这个用户,不开启服务的时候,账号是没用,通常在var或者bin下,大部分服务账号是不会用bash启动的
0x02.linux权限的具体表现
1.文件的权限
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
使用40839.c (实战不清楚的话,就是要一个一个的尝试)
2.编译运行
输入新用户的密码,默认新用户的密码为firefart
gcc -pthread 40839.c -o dirty -lcrypt
多线程 输出
mv /tmp/passwd.bak /etc/passwd
切换用户查看提权效果
补充:
实战中反弹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
0x06.利用suid提权
思路: 利用过程有点类似上面,但是原理不一样,linux中存在suid这种系统特性。
suid允许用户在执行用户的许可下执行文件,创建和打开网络套接字一般需要rot权限,但是为了方便使用,如Ping命令,通过设置Ping程序的suid,就可以允许低权限用户执行Ping程序时是以root权限执行。因此,如果一个程序中设置了suid,我们可以该程序生成的shell来提升权限。
你可以理解为一个文件属性版本的sudo
1.寻找具有suid权限的可执行文件
看到没,那个s,然后nmap又是一个可执行文件,有交互界面,那么可以用来获取root权限
2.寻找这个可执行文件的交互界面
关于提权的方法还有很多
0x07.实战思路
补充:
自己当前的位置,一直cd到头